Gamestudio Links
Zorro Links
Newest Posts
Executing Trades on Next Bar Open
by vicknick. 06/13/24 08:51
Zorro Beta 2.61: PyTorch
by jcl. 06/10/24 14:42
New FXCM FIX Plugin
by flink. 06/04/24 07:30
AlpacaZorroPlugin v1.3.0 Released
by kzhao. 05/22/24 13:41
Free Live Data for Zorro with Paper Trading?
by AbrahamR. 05/18/24 13:28
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
1 registered members (AndrewAMD), 1,203 guests, and 9 spiders.
Key: Admin, Global Mod, Mod
Newest Members
AemStones, LucasJoshua, Baklazhan, Hanky27, firatv
19059 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 1 of 2 1 2
Shader Tools - Frage / Question #33251
09/15/04 16:27
09/15/04 16:27
Joined: Aug 2004
Posts: 176
Germany
Team_GamesArk Offline OP
Member
Team_GamesArk  Offline OP
Member

Joined: Aug 2004
Posts: 176
Germany
hi,

ich möchte Rendermonkey für meine neuen DX9 shader benutzen,
nun die Frage: was muß man beachten oder verändern(nachdem man
sie als .fx exportiert hat) um die Shader in 3DGS benutzen zu können?

-------------

i want to use Rendermonkey for my new DX9 shaders.
Now i want to know, what must i do to use the exportet .fx files
with 3DGS (what must i modify in these files) ?

-------------

3DGS Version 6.30.3

Re: Shader Tools - Frage / Question [Re: Team_GamesArk] #33252
09/15/04 17:06
09/15/04 17:06
Joined: Oct 2002
Posts: 8,939
planet.earth
ello Offline
Senior Expert
ello  Offline
Senior Expert

Joined: Oct 2002
Posts: 8,939
planet.earth
so einiges... vor allem wenn du rendermonkey1.5 verwendest ists echt der hammer.

1. matrizen vectoren an die 3dgs spezifikation anpassen, und zwar am besten im kompletten script. z.b.:
float4x4 Various_Wood_Shaders_Wood2_Single_Pass_Vertex_Shader_view_proj_matrix : ViewProjection;
wird zu
float4x4 matWorldViewProj;
und dann im ganzen script austauschen.
2.
im vertexshader:
z.b. Out.Pos = mul(Pos, matWorldViewProj);
rendermonkey exportiert aber mul (matWorldViewProj,Pos) und das führt zu unerwünschten ergebnissen

3. sowas:
float Various_Wood_Shaders_Wood2_Single_Pass_Vertex_Shader_scale
<
string UIName = "Various_Wood_Shaders_Wood2_Single_Pass_Vertex_Shader_scale";
string UIWidget = "Numeric";
float UIMin = 0.00;
float UIMax = 0.10;
> = 0.03;
wird zu:
float Various_Wood_Shaders_Wood2_Single_Pass_Vertex_Shader_scale = 0.03;

4. wo immer sowas : float4 blabla = (x,y,z,w); auftaucht müssen die runden klammern in { umgewandelt werden. das hat mir gestern nacht 4 stunden kopfzerbrechen bereitet

5. die sampler definition sollte z.b. so aussehen:
sampler sampler_name = sample_state
{
Texture = (mtlSkin1);
ADDRESSU = WRAP;
ADDRESSV = WRAP;
ADDRESSW = WRAP;
MAGFILTER = LINEAR;
MINFILTER = LINEAR;
MIPFILTER = LINEAR;
};

6. z.b. wird aus:
Out.normal = mul( normal,matView);
Out.viewVec = -mul( Pos,matView);
sowas:
Out.normal = mul(normal,matWorld);
Out.viewVec = vecViewPos - mul(Pos,matWorld);

das war jetzt bestimmt nicht alles, aber es sollte dir schonmal helfen:)



hier z.b. mal ein funktionierender holzshader. mtlSkin1 ist z.b. eine DifferenzWolke aus Photoshop.

Code:

float4x4 matWorldViewProj;
float4x4 matWorld;
float4 vecSunDir;
float4 vecViewPos;
float scale = 0.01;
texture mtlSkin1;

struct Vertex_Shader_VS_OUTPUT {
float4 Pos: POSITION;
float3 pos: TEXCOORD0;
float3 normal: TEXCOORD1;
float3 viewVec: TEXCOORD2;
};

Vertex_Shader_VS_OUTPUT Vertex_Shader_main(float4 Pos: POSITION, float3 normal: NORMAL){
Vertex_Shader_VS_OUTPUT Out;

Out.Pos = mul(Pos, matWorldViewProj);
// Pass position to fragment shader
Out.pos = scale * Pos;
// Eye-space lighting
Out.normal = mul(normal,matWorld);//mul( normal,matView);
Out.viewVec = vecViewPos - mul(Pos,matWorld);//-mul( Pos,matView);
return Out;
}

float Kd = 0.89;
float Ks = 0.66;
float4 darkWood = { 0.44, 0.21, 0.00, 1.00 };
float4 liteWood = { 0.92, 0.50, 0.13, 1.00 };
float frequency = 3.72;
float ringSharpness = 21.00;
float noiseScale = 0.96;
float4 lightDir = { 0.41, 0.41, -0.82, 0.00 };

sampler Noise = sampler_state
{
Texture = (mtlSkin1);
ADDRESSU = WRAP;
ADDRESSV = WRAP;
ADDRESSW = WRAP;
MAGFILTER = LINEAR;
MINFILTER = LINEAR;
MIPFILTER = LINEAR;
};

float4 Pixel_Shader_main(float4 pos: TEXCOORD0, float3 normal: TEXCOORD1, float3 viewVec: TEXCOORD2) : COLOR {
// Signed noise
float snoise = 2 * tex3D(Noise, pos) - 1;

// Rings goes along z axis, perturbed with some noise
float r = frac(frequency * pos.z + noiseScale * snoise);

// Map [0.1] to 0->1->0 in a smooth curve, f(r) = r - r^ringSharpness
// We want this curve to reach a value of 1 at its maximum in
// the 0 < r < 1 interval. So we'll need to find the maximum
// value in this interval, invert and multiply with the curve.
// Those interested in math might want to derive the invMax
// calculation below themselves by solving for f'(r) = 0
// and inserting into the function.
float invMax = pow(ringSharpness, ringSharpness / (ringSharpness - 1)) / (ringSharpness - 1);
float ring = invMax * (r - pow(r, ringSharpness));

// Add some noise and get our Various_Wood_Shaders_Wood3_Single_Pass_Pixel_Shader_base color
float lrp = ring + snoise;
float4 base = lerp(darkWood, liteWood, lrp);

normal = normalize(normal);
// Soft Various_Wood_Shaders_Wood3_Single_Pass_Pixel_Shader_diffuse
float diffuse = 0.5 + 0.5 * dot(vecSunDir, normal);
// Standard Various_Wood_Shaders_Wood3_Single_Pass_Pixel_Shader_specular
float specular = pow(saturate(dot(reflect(-normalize(viewVec), normal), vecSunDir)), 12);

float4 result=Kd * diffuse * base + Ks * specular;
return result;
}



technique holz
{
pass pussi
{
VertexShader = compile vs_1_1 Vertex_Shader_main();
PixelShader = compile ps_2_0 Pixel_Shader_main();
}

}



das sieht dann so aus:



www.earthcontrol.de
quoted: We want to maintain a clean, decent, American family suited forum look... which means you may post zombies or chainsaw massacres, but no erotic.
Re: Shader Tools - Frage / Question [Re: ello] #33253
09/16/04 17:53
09/16/04 17:53
Joined: Aug 2004
Posts: 176
Germany
Team_GamesArk Offline OP
Member
Team_GamesArk  Offline OP
Member

Joined: Aug 2004
Posts: 176
Germany
Danke für die Tipps.. Ich bin damit etwas weiter gekommen, habe aber noch ein
Problem. Statt nix, wie vor der Anwendung der Tipps , sehe ich jetzt einen
weißen Kreis (Kugel) ohne die Textur. Ich habe mal den Code von Rendermonkey
und die 3DGS Änderung angehangen. Könntest Du mal schauen woran es liegt.

Rendermonkey:
-------------

string MyEffectGroup_MyEffect_Pass_0_model : ModelData = "E:/Source_Code/Chapter_4/Teapot.3ds";

float4x4 view_proj_matrix : ViewProjection;

float cos_time_0_X : CosTime0_X;
float sin_time_0_X : SinTime0_X;

struct VS_OUTPUT
{
float4 Pos: POSITION;
float2 Txr1: TEXCOORD0;
};

VS_OUTPUT MyEffectGroup_MyEffect_Pass_0_Vertex_Shader_vs_main(
float4 inPos: POSITION,
float2 Txr1: TEXCOORD0
)
{
VS_OUTPUT Out;

Out.Pos = mul(view_proj_matrix, inPos);

Out.Txr1 = float2(Txr1.x+cos_time_0_X,Txr1.y+sin_time_0_X);

return Out;
}




texture MyTxr1_Tex
<
string ResourceName = "E:\Source_Code\Chapter_4\Fieldstone.tga";
>;

sampler Texture0 = sampler_state
{
Texture = (MyTxr1_Tex);
};

float4 MyEffectGroup_MyEffect_Pass_0_Pixel_Shader_ps_main(
float4 inDiffuse: COLOR0,
float2 inTxr1: TEXCOORD0
) : COLOR0
{
return tex2D(Texture0,inTxr1);
}



technique MyEffect
{
pass Pass_0
{
VertexShader = compile vs_1_1 MyEffectGroup_MyEffect_Pass_0_Vertex_Shader_vs_main();
PixelShader = compile ps_1_1 MyEffectGroup_MyEffect_Pass_0_Pixel_Shader_ps_main();
}

}

Modifiziert:
------------
float4x4 matWorldViewProj;

texture entSkin1;

float cos_time_0_X : CosTime0_X;
float sin_time_0_X : SinTime0_X;


struct VS_OUTPUT
{
float4 Pos: POSITION;
float2 Txr1: TEXCOORD0;
};


VS_OUTPUT MyEffectGroup_MyEffect_Pass_0_Vertex_Shader_vs_main(
float4 inPos: POSITION,
float2 Txr1: TEXCOORD0
)
{
VS_OUTPUT Out;

Out.Pos = mul(inPos, matWorldViewProj);

Out.Txr1 = float2(Txr1.x + cos_time_0_X,Txr1.y + sin_time_0_X);

return Out;
}



sampler Texture0 = sampler_state
{
Texture = (entSkin1);
ADDRESSU = WRAP;
ADDRESSV = WRAP;
ADDRESSW = WRAP;
MAGFILTER = LINEAR;
MINFILTER = LINEAR;
MIPFILTER = LINEAR;
};

float4 MyEffectGroup_MyEffect_Pass_0_Pixel_Shader_ps_main(
float4 inDiffuse: COLOR0,
float2 inTxr1: TEXCOORD0
) : COLOR0
{
return tex2D(Texture0,inTxr1);
}



technique MyEffect
{
pass Pass_0
{
VertexShader = compile vs_1_1 MyEffectGroup_MyEffect_Pass_0_Vertex_Shader_vs_main();
PixelShader = compile ps_1_1 MyEffectGroup_MyEffect_Pass_0_Pixel_Shader_ps_main();
}

}

Wenn der Effekt richtig funktioniert soll sich Textur auf dem
obejkt bewegen, aber wie gesagt sehe ich nur einen weißen Kreis(Kugel)
ohne Textur. Ich hoffe du kannst mir sagen was ich noch vergessen habe
zu ändern.

Vielen Dank schon mal im Vorraus

Re: Shader Tools - Frage / Question [Re: Team_GamesArk] #33254
09/16/04 18:26
09/16/04 18:26
Joined: Oct 2002
Posts: 8,939
planet.earth
ello Offline
Senior Expert
ello  Offline
Senior Expert

Joined: Oct 2002
Posts: 8,939
planet.earth
also bei mir wird die textur angezeigt(vll hast du nen alphakanal drin?). ich hab einfach per mtlSkin1 ne textur ins material geladen... sollte aber wurscht sein ob ent oder mtl
die bewegung kann nicht funktionieren, weil du noch :

float cos_time_0_X : CosTime0_X;
float sin_time_0_X : SinTime0_X;

ersetzen musst, z.b.:

float4 vecSkill41;
und,z.b. im weiteren code "cos_time_0_X" durch "vecSkill41.x" und "sin_time_0_X" durch "vecSkill41.y"

dann musst du in der aktion my.Skill41=float(wert1); und my.skill42=float(wert2); angeben, wobei du da natürlich irgendwas berechnen musst damit sich auch was tut

wenn du willst kannste mir das mdl ja mal schicken

Re: Shader Tools - Frage / Question [Re: ello] #33255
09/16/04 20:04
09/16/04 20:04
Joined: May 2002
Posts: 7,441
ventilator Offline
Senior Expert
ventilator  Offline
Senior Expert

Joined: May 2002
Posts: 7,441
wow, das holz sieht super aus! wenn das model animiert ist, bewegt sich dann diese prozedurale textur mit, oder verhält sich die textur so ähnlich wie auf blocks in wed wenn texture lock ausgeschaltet ist?

Re: Shader Tools - Frage / Question [Re: ventilator] #33256
09/16/04 20:41
09/16/04 20:41
Joined: Oct 2002
Posts: 8,939
planet.earth
ello Offline
Senior Expert
ello  Offline
Senior Expert

Joined: Oct 2002
Posts: 8,939
planet.earth
wenn ichs eben richtig gesehen habe verhält es sich so wie mit den wed-blocks, allerdings nur bei animierten models. wenn ein object gedreht wrid, dreht sich die textur mit.

ich glaube richtig schön wirds aber erst wenn dds-support funktioniert , wegen der volumetrischen texturen

Re: Shader Tools - Frage / Question [Re: ello] #33257
09/17/04 16:19
09/17/04 16:19
Joined: Aug 2004
Posts: 176
Germany
Team_GamesArk Offline OP
Member
Team_GamesArk  Offline OP
Member

Joined: Aug 2004
Posts: 176
Germany

Super genau das war der Fehler, jetzt sehe ich was.
Danke nochmal, jetzt werde ich mal versuchen mit
zwei texturen zu arbeiten, wobei die zweite so als
Wolkendecke über die erste zieht. Mal sehen ob ich
das jetzt hinbekomme. Viellecht hast Du ja noch nen
Tip was ich dabei beachten muß.

So long....

Re: Shader Tools - Frage / Question [Re: ello] #33258
09/21/04 16:09
09/21/04 16:09
Joined: Aug 2004
Posts: 176
Germany
Team_GamesArk Offline OP
Member
Team_GamesArk  Offline OP
Member

Joined: Aug 2004
Posts: 176
Germany
hi Ello,

ich habe doch noch drei fragen, wäre super, wenn Du sie mir beantwortest.

1. Was muß man bei ASM-Shadern noch einfügen um sie für 3DGS nutzen zu können?
(der Shader stammt aus Rendermonkey)

2. Welches Programm ist eigentlich sinnvoller Ati's Rendermonkey oder der
FX_Composer von nVidia ?

3. Was muß man beim FX-Composer tun um die .fx files für 3DGS nutzen zu können?

Ich hoffe, ich nerve nicht so stark.

MFG

Re: Shader Tools - Frage / Question [Re: Team_GamesArk] #33259
09/21/04 16:24
09/21/04 16:24
Joined: Oct 2002
Posts: 8,939
planet.earth
ello Offline
Senior Expert
ello  Offline
Senior Expert

Joined: Oct 2002
Posts: 8,939
planet.earth
bei den asm shadern muss man wahrscheinlich noch die constanten richtig einrichten. ich benutze z.zt nur hlsl .
zum fx-composer kann ich dir nix sagen, den benutze ich nicht.

kannst ja mal deinen exportierten asm shader posten, das machts natürlich einfacher

Re: Shader Tools - Frage / Question [Re: ello] #33260
09/21/04 20:00
09/21/04 20:00
Joined: Aug 2004
Posts: 176
Germany
Team_GamesArk Offline OP
Member
Team_GamesArk  Offline OP
Member

Joined: Aug 2004
Posts: 176
Germany
hier ist die .fx Datei die Rendermonkey auswirft. Wenn Du möchtest kann
ich dir auch das Rendermonkey-File (.rfx Datei) per E-Mail schicken.

//**************************************************************//
// Effect File exported by RenderMonkey
//
// - Although many improvements were made to RenderMonkey FX
// file export, there are still situations that may cause
// compilation problems once the file is exported, such as
// occasional naming conflicts for methods, since FX format
// does not support any notions of name spaces. You need to
// try to create workspaces in such a way as to minimize
// potential naming conflicts on export.
//
// - Note that to minimize resulting name collisions in the FX
// file, RenderMonkey will mangle names for passes, shaders
// and function names as necessary to reduce name conflicts.
//**************************************************************//
//--------------------------------------------------------------//
// Metal Effects Group
//--------------------------------------------------------------//
//--------------------------------------------------------------//
// MetalEffect
//--------------------------------------------------------------//
//--------------------------------------------------------------//
// Skull Pass
//--------------------------------------------------------------//
string Metal_Effects_Group_MetalEffect_Skull_Pass_Metal_Effect_Skull_Pass_Skull : ModelData = "D:/Programmierung/ATI Research Inc/RenderMonkey 1.5/Examples/Media/Models/Torus.3ds";

//--------------------------------------------------------------//
// vs1
//--------------------------------------------------------------//
VertexShader Metal_Effects_Group_MetalEffect_Skull_Pass_vs1_ = asm
{
vs.1.1

dcl_position v0
dcl_normal v1
dcl_texcoord v2
dcl_tangent v3
dcl_binormal v4

// output vertex position
m4x4 oPos, v0, c0

// output texture coordinates
mov oT0, v2

// output normal vector
mov oT2, v1

// find the light position in object space
mov r0, c9
m4x4 r1, r0, c5

// find light vector
sub r1, r1, v0

// normalize light vector
dp3 r2.x, r1, r1
rsq r2.x, r2.x
mul r1.xyz, r1.xyz, r2.xxx

// output light vector
mov oT1, r1

// find the eye position in object space
mov r0, c4
m4x4 r2, r0, c5

// find eye vector
sub r2, r2, v0

// normalize eye vector
dp3 r3.x, r2, r2
rsq r3.x, r3.x
mul r2.xyz, r2.xyz, r3.xxx

// output eye vector
mov oT4, r2

// find half angle vector
add r3, r1, r2
mul r3, r3, c10.yyy

// normalize half angle vector
dp3 r4.x, r3, r3
rsq r4.x, r4.x
mul r3.xyz, r3, r4.xxx

mov r3.xy, v1.xy

// normalize half angle vector
dp3 r4.x, r3, r3
rsq r4.x, r4.x
mul r3.xyz, r3, r4.xxx

// output half angle vector vector
mov oT3, r3

};

//--------------------------------------------------------------//
// ps1
//--------------------------------------------------------------//
PixelShader Metal_Effects_Group_MetalEffect_Skull_Pass_ps1_ = asm
{
ps.1.4

def c0, 0.0f, 0.0f, 0.0f, 1.0f

texcrd r0.rgb, t0 // env map
texcrd r1.rgb, t1 // L
texcrd r2.rgb, t2 // N
texcrd r3.rgb, t3 // H
texcrd r4.rgb, t4 // V

// N.L
dp3 r5, r2, r1

// offset basemap
mov r0.a, c0.a
add r0, r0, r5

// N.H
dp3 r4.r, r2, r3

// H.H (aka ||H||^2)
dp3 r4.g, r3, r3
mov r4.g, 1-r4.g

phase

texld r1, r4 // N.H^k
texld r0, r0 // base

mul r1.rgb, r1, r5
mul r1.rgb, r1, c1

mul r5.rgb, r5, c2
mul r0.rgb, r5, r0

add_sat r0, r0, r1




};

//--------------------------------------------------------------//
// Technique Section for Metal Effects Group
//--------------------------------------------------------------//
technique MetalEffect
{
pass Skull_Pass
{
CULLMODE = CCW;
ZFUNC = LESS;
ZENABLE = TRUE;

VertexShader = (Metal_Effects_Group_MetalEffect_Skull_Pass_vs1_);
PixelShader = (Metal_Effects_Group_MetalEffect_Skull_Pass_ps1_);
}

}

Page 1 of 2 1 2

Moderated by  Blink, Hummel, Superku 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1