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

GG Nicolas