Anleitung: Erste Schritte...vom Compiler, Code bis zur DLL

Wie schreibt man ein Phenomenon, bzw. einen Shader?

Anleitung: Erste Schritte...vom Compiler, Code bis zur DLL

Postby banned on Sat Dec 23, 2006 19:57 pm

Hi Leutz,

und ein großes Danke an "LennO+ Dave" für ihre Unterstützung.

Dieser Tread soll eine kurze Anleitung, zu den ersten Schritten in der Shader Programmierung. Gerade das einstellen des System ist eine der größten Hürden am Anfang, die wir hier nehmen werden. :wink:

    1) Was muss ich vorher installieren um programmieren zu können und wo finde ich die Dateien.
    2) Beispiel-Dateien
    3) Euer erster eigener compilierter Shader


1) Was muss ich vorher installieren um programmieren zu können.
    a) Ihr braucht einen Compiler z.B. Visual C++ Express Edition http://www.microsoft.com/germany/msdn/v ... fault.mspx . Vorsicht!!! solltet ihr .net 2 schon installiert haben, muss es deinstalliert werden, da es bei der Installation von VC++ sofort wieder mit installiert wird.

    b) Ihr braucht die Plaftorm SDK von Windows gibt es hier: http://www.microsoft.com/downloads/deta ... laylang=en

    c) Es gibt MentalRay spezifische Datei-Typen library = "shader.lib" und die include="shader.h". Ihr müsst darauf achten, das euer C-Compiler auf die Ordner zugreift.

    XSI = "root xsi"\XSISDK\include
    XSI = "root xsi"\XSISDK\lib\nt-x86 (für XP32 Bit)

    Max = "root max"\mentalray\dev\include
    Max = "root max"\mentalray\dev\lib

    Max9 = "root max"\mentalray\dev\lib32 (für XP32 Bit)
    Max9 = "root max"\mentalray\dev\lib64 (für XP64 Bit)

    Maya = "root maya"\devkit\mentalray\include
    Maya = "root maya"\devkit\mentalray\lib\nt

    d) Ab Max9 muss die Datei mi_shader_if.h in den "\include" Ordner vorhanden sein. Könnt ihr hier downloaden und dann hinein kopieren: http://usa.autodesk.com/adsk/servlet/it ... id=7481453

    e) auf dem FTP-Server von MentalRay gibt es die neusten Source Code von MR 3.5 zum Download. ftp://ftp.mentalimages.com/data/pub/shaders/


2) Beispiel Dateien
sind gut um erstmal zu testen ob das System läuft, sonst programmiert man drauf los und es passiert nichst. :D Daher gebe ich Links zu einigen Dateien, die ihr nur im C-Compiler einläd und dann compilliert.

Source Code: lo_normals
Code: Select all
#include "shader.h"

struct lo_normals {
       miInteger   mode;   
};

extern "C" DLLEXPORT int lo_normals_version(void) {return(1);}

extern "C" DLLEXPORT miBoolean lo_normals(
   miColor    *result,
   miState      *state,
   struct lo_normals *paras) {

 miInteger m;
 miVector n;

 m = *mi_eval_integer(&paras->mode);
 mi_normal_to_world(state, &n, &state->normal);

 if (m == 0) {
    result->r = n.x;
    result->g = n.y;
    result->b = n.z;
    } else {
      result->r = (n.x+1)*0.5f;
      result->g = (n.y+1)*0.5f;
      result->b = (n.z+1)*0.5f;
    }
 
 result->a = 1;
 return(miTRUE);
}


3) Euer erster eigener compilierter Shader.
    3.0) Zuerst müssen wir die Platform SDK dem VC Compiler richtig hinzufügen unter Extras->Options->Projekte und Projektmappen->VC++ Directories
    3.0.1) unter "Verzeichnisse" anzeigen, wählst du aus -> "Ausführbare Dateien" und fügst *PFAD*/Microsoft Platform SDK/Bin hinzu.
    3.0.2) unter "Verzeichnisse" anzeigen, wählst du aus Includedateien und fügst *PFAD*/Microsoft Platform SDK/Include hinzu.
    3.0.3) unter "Verzeichnisse" anzeigen, wählst du aus Bibliothekdateien und fügst *PFAD*/Microsoft Platform SDK/Lib hinzu.
    3.0.4) Gehe in den Ordner *Programme*/Microsoft Visual Studio 8/VC/VCWizards/AppWiz/Generic/Application/html/1031/ und lade AppSettings.html in einen einfachen Editor z.B. Notepad. Diese korrigierst du von

Code: Select all
WIN_APP.disabled = true;
WIN_APP_LABEL.disabled = true;
DLL_APP.disabled = true;
DLL_APP_LABEL.disabled = true;


nach

Code: Select all
//WIN_APP.disabled = true;
//WIN_APP_LABEL.disabled = true;
//DLL_APP.disabled = true;
//DLL_APP_LABEL.disabled = true;


Nun ist das SDK dem Visual C++ Express Edition zugewiesen!!

3.1) Projekt Erstellen:
    3.1.1) erstellt ein Neues Projekt mit dem Namen "lo_normals". Als Projekttypen = Win32 und als Vorlage=Win32-Konsolenanwendung. Den Parameter "Projetkmappenverzeichnis erstellen" schaltet ihr aus/off.
    3.1.2) jetzt auf "weiter" klicken. Wichtig !!!!
    3.1.3) Nun wählt ihr als Anwendungstyp "DLL" und unter Zusätzliche Optionen aktiviert ihr "Leeres Projekt"=on.
    3.1.4) jetzt erst auf "Fertig stellen" klicken
    3.1.5) Im Projektmappen-Explorer sehen wir nun folgende Hierarchie
    -> Projektmappe "lo_normals"(1 Projekt)
    -> lo_normals
    -> Headerdateien
    -> Quelldateien
    -> Ressourcendateien

3.2) Quelldatei .cpp erstellen
    3.2.1) Nun klicken wir erst auf Quelldateien und danach auf das Symbol "neues Element hinzufügen" im Toolbar.
    3.2.2) Wir wählen "Code" sowie "C++Datei(.cpp)" und geben der Textdatei den Namen "lo_normals" und klicken auf "Hinzufügen"
    3.2.3) Jetz sieht so unsere Hierarchie aus.
    -> Projektmappe "lo_normals"(1 Projekt)
    -> lo_normals
    -> Headerdateien
    -> Quelldateien
    -> lo_normals.cpp
    -> Ressourcendateien
    3.2.4) Nun kopiert den Source Code in des Fenster bzw. Textfeld von lo_normals.cpp.

3.3) Compiler richtig einstellen und compilieren
    3.3.1) Bevor Pfade definiert wedern, stellen wir den Compiler von "Debug" auf "Release" um. Entweder im Toolbar oder in der Menueleiste -> Erstellen-> Konfigurations Mangager.
    3.3.2) Jetzt klicken wir im Projektmappen-Explorer auf "lo_normals" (das zweite Symbol von oben in der Hierarchie) und wählen oben in der Menüleiste -> Projekt -> Eigenschaften.
    3.3.3) unter "C++" -> Zusätzliche Includeverzeichnisse euer "rootmax"\mentalray\dev\include hinzufügen (z.B. Max-User)
    3.3.4) unter "Linker" -> Zusätzliche Bibliotheksverzeichnisse euer "rootmax"\mentalray\dev\lib (z.B. Max-User / ab Max9 \lib32 oder\lib64)
    3.3.5) unter "Linker" - > "Eingabe" -> Zusätzliche Abhängigkeiten das Wort shader.lib einfügen.
    3.3.6) Jetz könnt ihr kompilieren. Die dll-Datei findet ihr dann unter \lo_normals\Release\lo_normals.dll.

3.4) Stark Shader von Autodesk.
    3.4.1) Wenn ihr die "Stark Shader" testet, lädt die Datei "myMRShaders.sln" ein.
    3.4.2) Nun stellt ihr den Compiler wieder auf Release und aktualisiert die Pfade für "include" und "lib" und kontrolliert ob das Wort "shader.lib" unter "Linker" - > "Eingabe" -> Zusätzliche Abhängigkeiten steht.
    3.4.3) Geht nun auf compilieren und nennt eure dll-Datei z.B. "myshaders.dll".
    3.4.4) Nun kopiert ihr die Datei "myshader.mi" in "rootmax"\mentalray\shaders_autoload\include und die Datei myshaders.dll in "rootmax"\mentalray\shaders_autoload\shaders.
    3.4.5) Jetzt Max9 starten und es müssten die neuen Stark-Shader vorhanden sein.

Seit ihr bis hierher angekommen, habt ihr ein Fettes Lob verdient. Geht Kaffe trinken und erholt euch.

Weiterhin viel Erfolg....

mfg
hot chip
banned
 

Return to Writing Shader and Phenomena®

Who is online

Users browsing this forum: No registered users and 1 guest