1 registered members (henrybane),
1,246
guests, and 8
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Re: Wasser Shader ?
[Re: Hummel]
#81649
07/18/06 20:12
07/18/06 20:12
|
Joined: Apr 2005
Posts: 1,058 Luzern
Nicolas_B
Serious User
|
Serious User
Joined: Apr 2005
Posts: 1,058
Luzern
|
ICH HABS GESCHAFFT!!! *ganzruigsei Ich hab den Wasser Shader von Sylex 3 zum Laufen gekriegt. Grosses Lob an Xexes, sieht super aus. Aber beim manual von Sylex 4 erwarte ich eine Fehlerfreie (auf die Scripts bezogen) Dokumentation. aber sicher 4 Fehler im Script gefunden. Ok hier nun meine erneuerung: Code:
// Aktion für Wasser mit Sylex 3.0
// Skilldefinitionen define _PLANE_SIZE,skill1; define _WAVE_SIZE,skill2; define _WAVE_MAP_SIZE,skill3; define _WAVE_SPEED,skill4; define _COLOR_RED,skill5; define _COLOR_GREEN,skill6; define _COLOR_BLUE,skill7; define _REFLECTMAP_SIZE,skill8; define _REFRACTMAP_SIZE,skill9; define _REFRACTION,skill10; define _REFLECTION,skill11; define _REFRACTION_ALPHA,skill12; define _REFLECTION_ALPHA,skill13; define ID_WATER,15;
// WED - Eibinden // uses: _PLANE_SIZE, _WAVE_SIZE, _WAVE_MAP_SIZE, _COLOR_RED, _COLOR_GREEN, _COLOR_BLUE, _REFLECTMAP_SIZE, _REFRACTMAP_SIZE, _REFRACTION, _REFLECTION, _REFRACTION_ALPHA, _REFLECTION_ALPHA // title: Ozeanwasserfläche // desc: Aktion für Wasserfläche mit Sylex 3.0 // section: Einstellungen [ Skills / Flags ]
// Material für Ocean Water material mat_oceanWater { // Eventfunktion festlegen event = event_matOceanWater; // Dummyeffekt effect = " // Erste Technik technique tech_01 { pass pass_01 { } } "; }
function event_matOceanWater() { mat_oceanWater.enable_render = on; // Objekt mit Wasser ID zeichnen SLX3RenderDrawE(ID_WATER); return(1); }
action SLX_Water { // Wassereffekt erstellen SLX3EffectCreate(5); SLX3EffectSetPath(5,"slx3_water.fx"); SLX3EffectInitialize(5);
// Refraktions und Reflektionsviews anmelden SLX3ViewRegister(15,"view_waterRefraction"); SLX3ViewRegister(16,"view_waterReflection");
// Erstellen und Zuweißen der ClipPlanes temp.x = 0.0; temp.y = 0.0; temp.z = -10.0; normal.x = 0.0; normal.y = 0.0; normal.z = 1.0; SLX3ViewSetClipPlane(16,"temp","normal",1); SLX3ViewSetRTT(16,1);
temp.x = 0.0; temp.y = 0.0; temp.z = 10.0; normal.x = 0.0; normal.y = 0.0; normal.z = -1.0; SLX3ViewSetClipPlane(15,"temp","normal",1); SLX3ViewSetRTT(15,1);
// Größe der Views den der RenderTargets anpassen view_waterReflection.size_x = my._REFLECTMAP_SIZE; view_waterReflection.size_y = my._REFLECTMAP_SIZE; view_waterRefraction.size_x = my._REFRACTMAP_SIZE; view_waterRefraction.size_y = my._REFRACTMAP_SIZE;
// Erstellen der RenderTarget-Texturen und Zuweisen der Views SLX3TexCreate(15,SLX3TT_NORMAL); SLX3TexSetFormat(15,SLX3FMT_X8R8G8B8); SLX3TexSetSize(15,my._REFLECTMAP_SIZE,my._REFLECTMAP_SIZE); SLX3TexSetUsage(15,SLX3USAGE_RENDERTARGET); SLX3TexSetViewID(15,SLX3TS_FRONT,15); SLX3TexInitialize(15);
SLX3TexCreate(16,SLX3TT_NORMAL); SLX3TexSetFormat(16,SLX3FMT_X8R8G8B8); SLX3TexSetSize(16,my._REFRACTMAP_SIZE,my._REFRACTMAP_SIZE); SLX3TexSetUsage(16,SLX3USAGE_RENDERTARGET); SLX3TexSetViewID(16,SLX3TS_FRONT,16); SLX3TexInitialize(16);
// Erstellen des Wasserobjekts SLX3ObjectCreate(ID_WATER,SLX3OT_WATER); SLX3ObjectSetSkill(ID_WATER,0,my._PLANE_SIZE); SLX3ObjectSetSkill(ID_WATER,1,my._WAVE_SIZE); SLX3ObjectSetSkill(ID_WATER,2,my._WAVE_MAP_SIZE); SLX3ObjectInitialize(ID_WATER);
SLX3ObjectSetTexture(ID_WATER,0,16); // Refraktionstextur zuweißen SLX3ObjectSetTexture(ID_WATER,1,15); // Reflektionstextur zuweißen SLX3ObjectSetEffect(ID_WATER,5); // Wassereffekt zuweißen
// Material zuweißen my.material = mat_oceanWater;
// Schleife übernimmt Parameter aktualsierungen und aktualisiert die Viewdaten while(1) { proc_late(); vec_set(view_waterRefraction.x,camera.x); vec_set(view_waterRefraction.pan,camera.x); vec_set(view_waterReflection.x,camera.x); vec_set(view_waterReflection.pan,camera.pan); view_waterReflection.z = -camera.z; view_waterReflection.tilt = -camera.tilt; view_waterReflection.roll = -camera.roll; view_waterReflection.arc = camera.arc;
SLX3ObjectSetSkill(ID_WATER,4,my._COLOR_RED); SLX3ObjectSetSkill(ID_WATER,5,my._COLOR_GREEN); SLX3ObjectSetSkill(ID_WATER,6,my._COLOR_BLUE); SLX3ObjectSetSkill(ID_WATER,7,1.0); SLX3ObjectSetSkill(ID_WATER,8,my._REFRACTION); SLX3ObjectSetSkill(ID_WATER,9,my._REFLECTION); SLX3ObjectSetSkill(ID_WATER,10,my._REFLECTION_ALPHA); SLX3ObjectSetSkill(ID_WATER,11,my._REFRACTION_ALPHA); SLX3ObjectSetSkill(ID_WATER,12,my.z); wait (1); } } macht einfach einen Functionsprototypen von der Function:*event_matOceanWater" und fügt diese zeilen in eure Main: Code:
function main { // Bla bla bla SLX3Initialize(SLX3_RUNMODE_DEBUG,"Game"); event_matOceanWater() // Bla Bla Bla... }
Ich hoffe bei euch gehts oder ich hab nix mer vergessen. ach ja. Im WED einfach die Oben definierte Action einem Terrain oder was auch immer Flachem Entity geben und volgende Propertions eingeben: plane_size = 20000.0 wave_size = 10.0 wave_map_size = 256.0 wave_speed = 1.0 color_red = 1.0 color_green = 1.0 color_blue = 1.0 reflectmap_size = 512.0 refractmap_size = 512.0 refraction = 1.0 reflection = 1.5 refraction_alpha = 0.7 reflection_alpha = 0.3 Ich hoffe ich kan damit die Mystische welt von Sylex 3 ein bisschen weiter öffnen ![](/ubbthreads/images/graemlins/cool.gif) GG Nicolas
|
|
|
Re: Wasser Shader ?
[Re: Hummel]
#81651
07/19/06 08:12
07/19/06 08:12
|
Joined: Jun 2003
Posts: 152 germany
innovater
Member
|
Member
Joined: Jun 2003
Posts: 152
germany
|
Hm Funktioniert bei mir nicht, diese Zeile erzeugt ein feller <event = ^event_matOceanWater;> TEST.WDL 50.2 Error(0): Parameter unknown event_matOceanWater usw... dabei habe ich "sylex3_csr.wdl" eingebunden, sowie "Sylex3.dll" an die richtige adresse kopiert. ![](/ubbthreads/images/graemlins/blush.gif) (
|
|
|
Re: Wasser Shader ?
[Re: innovater]
#81652
07/19/06 10:38
07/19/06 10:38
|
Joined: Apr 2005
Posts: 1,058 Luzern
Nicolas_B
Serious User
|
Serious User
Joined: Apr 2005
Posts: 1,058
Luzern
|
hmm... Der Fehler is in der Main oder? Hast du einen FunctionsPrototypen Gemacht? Alle Functionen die in der Main eigbunden sind müssen entweder vor der main sein oder ein Prototyp muss erstellt werden. Schreib einfach diese zeile vor der Main Code:
// Funktionsprototypen function event_matOceanWater();
EDIT: Quote:
< event = ^event_matOceanWater;> TEST.WDL 50.2 Error(0): Parameter unknown event_matOceanWater
Hmmm... Hast du das genau so geschrieben also mit Event = blablabla?
Last edited by Nicolas_B; 07/19/06 10:41.
|
|
|
Re: Wasser Shader ?
[Re: Nicolas_B]
#81653
07/19/06 11:28
07/19/06 11:28
|
Joined: Mar 2006
Posts: 237 Deutschland, NRW, Recklinghaus...
TSG_Christof
Member
|
Member
Joined: Mar 2006
Posts: 237
Deutschland, NRW, Recklinghaus...
|
Also bei mir spuckt er lauter fehler raus.
path "Images";
string level1_wmb = <test.wmb>;
include <c_vars.wdl>; include <c_defines.wdl>; include <c_camera.wdl>; include <c_move.wdl>; include <c_animate.wdl>; include <c_actions.wdl>; //include <c_shader.wdl>; //include <c_compass.wdl>; //include <c_specular.wdl>; include <sylex3_csr.wdl>;
function main() { SLX3Initialize(SLX3_RUNMODE_DEBUG,"Testanwendung mit Sylex 3.02"); event_matOceanWater(); level_load(level1_wmb); sleep(3); }
// Benutzerdefinierte Exitfunktion mit Beendung von Sylex 3.0 function userdef_exit() { // Sylex 3.0 Deinitialisieren SLX3DeInitialize();;
// Funktionspointer freigeben on_d3d_lost = NULL; on_d3d_reset = NULL;
// Acknex 6 Engine beenden exit; }
//Testendefinitionen: ON_ESC = userdef_exit; // Behandlung der ESC Taste ON_CLOSE = userdef_exit; // Behandlung des X im Systemmenü ON_F10 = userdef_exit; // Behandlung der F10 Taste
// Aktion für Wasser mit Sylex 3.0
// Skilldefinitionen define _PLANE_SIZE,skill1; define _WAVE_SIZE,skill2; define _WAVE_MAP_SIZE,skill3; define _WAVE_SPEED,skill4; define _COLOR_RED,skill5; define _COLOR_GREEN,skill6; define _COLOR_BLUE,skill7; define _REFLECTMAP_SIZE,skill8; define _REFRACTMAP_SIZE,skill9; define _REFRACTION,skill10; define _REFLECTION,skill11; define _REFRACTION_ALPHA,skill12; define _REFLECTION_ALPHA,skill13; define ID_WATER,15;
// WED - Eibinden // uses: _PLANE_SIZE, _WAVE_SIZE, _WAVE_MAP_SIZE, _COLOR_RED, _COLOR_GREEN, _COLOR_BLUE, _REFLECTMAP_SIZE, _REFRACTMAP_SIZE, _REFRACTION, _REFLECTION, _REFRACTION_ALPHA, _REFLECTION_ALPHA // title: Ozeanwasserfläche // desc: Aktion für Wasserfläche mit Sylex 3.0 // section: Einstellungen [ Skills / Flags ]
// Material für Ocean Water material mat_oceanWater { // Eventfunktion festlegen event = event_matOceanWater; // Dummyeffekt effect = " // Erste Technik technique tech_01 { pass pass_01 { } } "; }
function event_matOceanWater() { mat_oceanWater.enable_render = on; // Objekt mit Wasser ID zeichnen SLX3RenderDrawE(ID_WATER); return(1); }
action SLX_Water { // Wassereffekt erstellen SLX3EffectCreate(5); SLX3EffectSetPath(5,"slx3_water.fx"); SLX3EffectInitialize(5);
// Refraktions und Reflektionsviews anmelden SLX3ViewRegister(15,"view_waterRefraction"); SLX3ViewRegister(16,"view_waterReflection");
// Erstellen und Zuweißen der ClipPlanes temp.x = 0.0; temp.y = 0.0; temp.z = -10.0; normal.x = 0.0; normal.y = 0.0; normal.z = 1.0; SLX3ViewSetClipPlane(16,"temp","normal",1); SLX3ViewSetRTT(16,1);
temp.x = 0.0; temp.y = 0.0; temp.z = 10.0; normal.x = 0.0; normal.y = 0.0; normal.z = -1.0; SLX3ViewSetClipPlane(15,"temp","normal",1); SLX3ViewSetRTT(15,1);
// Größe der Views den der RenderTargets anpassen view_waterReflection.size_x = my._REFLECTMAP_SIZE; view_waterReflection.size_y = my._REFLECTMAP_SIZE; view_waterRefraction.size_x = my._REFRACTMAP_SIZE; view_waterRefraction.size_y = my._REFRACTMAP_SIZE;
// Erstellen der RenderTarget-Texturen und Zuweisen der Views SLX3TexCreate(15,SLX3TT_NORMAL); SLX3TexSetFormat(15,SLX3FMT_X8R8G8B8); SLX3TexSetSize(15,my._REFLECTMAP_SIZE,my._REFLECTMAP_SIZE); SLX3TexSetUsage(15,SLX3USAGE_RENDERTARGET); SLX3TexSetViewID(15,SLX3TS_FRONT,15); SLX3TexInitialize(15);
SLX3TexCreate(16,SLX3TT_NORMAL); SLX3TexSetFormat(16,SLX3FMT_X8R8G8B8); SLX3TexSetSize(16,my._REFRACTMAP_SIZE,my._REFRACTMAP_SIZE); SLX3TexSetUsage(16,SLX3USAGE_RENDERTARGET); SLX3TexSetViewID(16,SLX3TS_FRONT,16); SLX3TexInitialize(16);
// Erstellen des Wasserobjekts SLX3ObjectCreate(ID_WATER,SLX3OT_WATER); SLX3ObjectSetSkill(ID_WATER,0,my._PLANE_SIZE); SLX3ObjectSetSkill(ID_WATER,1,my._WAVE_SIZE); SLX3ObjectSetSkill(ID_WATER,2,my._WAVE_MAP_SIZE); SLX3ObjectInitialize(ID_WATER);
SLX3ObjectSetTexture(ID_WATER,0,16); // Refraktionstextur zuweißen SLX3ObjectSetTexture(ID_WATER,1,15); // Reflektionstextur zuweißen SLX3ObjectSetEffect(ID_WATER,5); // Wassereffekt zuweißen
// Material zuweißen my.material = mat_oceanWater;
// Schleife übernimmt Parameter aktualsierungen und aktualisiert die Viewdaten while(1) { proc_late(); vec_set(view_waterRefraction.x,camera.x); vec_set(view_waterRefraction.pan,camera.x); vec_set(view_waterReflection.x,camera.x); vec_set(view_waterReflection.pan,camera.pan); view_waterReflection.z = -camera.z; view_waterReflection.tilt = -camera.tilt; view_waterReflection.roll = -camera.roll; view_waterReflection.arc = camera.arc;
SLX3ObjectSetSkill(ID_WATER,4,my._COLOR_RED); SLX3ObjectSetSkill(ID_WATER,5,my._COLOR_GREEN); SLX3ObjectSetSkill(ID_WATER,6,my._COLOR_BLUE); SLX3ObjectSetSkill(ID_WATER,7,1.0); SLX3ObjectSetSkill(ID_WATER,8,my._REFRACTION); SLX3ObjectSetSkill(ID_WATER,9,my._REFLECTION); SLX3ObjectSetSkill(ID_WATER,10,my._REFLECTION_ALPHA); SLX3ObjectSetSkill(ID_WATER,11,my._REFRACTION_ALPHA); SLX3ObjectSetSkill(ID_WATER,12,my.z); wait (1); } }
Kann mir einer weiter helfen??? Alle dateien sind in richtigen ordnern.
|
|
|
Re: Wasser Shader ?
[Re: Nicolas_B]
#81655
07/19/06 11:54
07/19/06 11:54
|
Joined: Mar 2006
Posts: 2,252
Hummel
Expert
|
Expert
Joined: Mar 2006
Posts: 2,252
|
Ich habs - du must den Funktionsprototypen vor das Dummymaterial schreiben:
// Funktionsprototypenfunction event_matOceanWater();
material mat_oceanWater{ // Eventfunktion festlegen event = event_matOceanWater; // Dummyeffekt effect = " // Erste Technik technique tech_01 { pass pass_01 { } } "; } function event_matOceanWater() { mat_oceanWater.enable_render = on; // Objekt mit Wasser ID zeichnen SLX3RenderDrawE(ID_WATER); return(1); }
So! nun brauch ich aber auch en bissel Hilfe^^" bei mir kommt die bösartige Meldung D3Derror:D3DERR_INVALIDCALL mit nem fetten roten X an der seite...danach stürtzt die Engine ab! EDIT:So und wenn ich statt dem Fullscreenmodus den Fenstermodus verwende kommt ne andere Fehlermeldung( wieder bösartig und mit nem fetten rotem X an der Seite ( diesmal stürtzt die Engine aber nich ab...aber wenn ich dann manuel in den Fullsreen gehe gibt wieder ne fehlermeldung und die Engine vertauscht bei meiner move_action die Winkel...ach und eh ichs vergesse - das Wasser is nicht zu sehn und meine Frames sind auf 50 abgesackt und es ruckelt irgendwie, so nuin erstmal die kalmmern zu und meine neue Fehlermeldung)): Crash in SLX3EffectInitialize -> nett was???^^" Wenn mir jemand helfen könnte wäre das goool!
danke schon ma!
Last edited by Hummel; 07/19/06 13:11.
|
|
|
Re: Wasser Shader ?
[Re: Hummel]
#81656
07/19/06 13:07
07/19/06 13:07
|
Joined: Sep 2002
Posts: 8,177 Netherlands
PHeMoX
Senior Expert
|
Senior Expert
Joined: Sep 2002
Posts: 8,177
Netherlands
|
Überprüft mal ob der dll auch geladen wird ... wenn nicht, dann bekommst du den d3derr_invalidcall unsw. ... auch kann es sein das dann dem view_waterrefraction und der view_waterrefraction nicht erkannt wird ...
edit: bei mir ist im moment der dll das problem, dem wird gar nicht gestartet durch 3dgs ...
Mfg,
Last edited by PHeMoX; 07/19/06 13:13.
|
|
|
|