1 registered members (Ayumi),
900
guests, and 4
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Re: Toon shader & fog colors?
[Re: Pavle]
#373857
06/13/11 18:21
06/13/11 18:21
|
Joined: Mar 2006
Posts: 2,252
Hummel
Expert
|
Expert
Joined: Mar 2006
Posts: 2,252
|
|
|
|
Re: Toon shader & fog colors?
[Re: Hummel]
#373861
06/13/11 19:19
06/13/11 19:19
|
Joined: Apr 2011
Posts: 67 Balkan
Pavle
OP
Junior Member
|
OP
Junior Member
Joined: Apr 2011
Posts: 67
Balkan
|
I tried excluding everything but transform from it but it didn't work. The color changing was still happening:(
Is it possible to sett manually outline color to 0,0,0 directly in shader?
Last edited by Pavle; 06/13/11 19:20.
|
|
|
Re: Toon shader & fog colors?
[Re: Pavle]
#373873
06/13/11 20:52
06/13/11 20:52
|
Joined: Mar 2006
Posts: 2,252
Hummel
Expert
|
Expert
Joined: Mar 2006
Posts: 2,252
|
|
|
|
Re: Toon shader & fog colors?
[Re: Slin]
#373885
06/13/11 21:49
06/13/11 21:49
|
Joined: Apr 2011
Posts: 67 Balkan
Pavle
OP
Junior Member
|
OP
Junior Member
Joined: Apr 2011
Posts: 67
Balkan
|
|
|
|
Re: Toon shader & fog colors?
[Re: Hummel]
#373890
06/13/11 22:22
06/13/11 22:22
|
Joined: Apr 2011
Posts: 67 Balkan
Pavle
OP
Junior Member
|
OP
Junior Member
Joined: Apr 2011
Posts: 67
Balkan
|
It seems that I'm still doing something wrong because it didn't work:( This is the standard toon fx with the modification marked in red: #include <transform> #include <fog> #include <pos> #include <normal> #include <tangent> #include <light>
float4 vecLight;
float4 vecSkill41; float4 COLOR = float4(0.0f, 0.0f, 0.0f, 1.0f); texture entSkin1; // texture sampler sBaseTex = sampler_state { Texture = <entSkin1>; MipFilter = Linear; };
struct toonOut { float4 Pos: POSITION; float Fog: FOG; float4 Color: COLOR; float4 Ambient:COLOR1; float2 Tex: TEXCOORD0; float3 Normal: TEXCOORD1; float3 Light: TEXCOORD2; };
toonOut toonVS( in float4 inPos: POSITION, in float3 inNormal: NORMAL, in float2 inTex: TEXCOORD0, in float3 inTangent: TEXCOORD2) { toonOut Out; Out.Pos = DoTransform(inPos); Out.Tex = inTex; Out.Fog = DoFog(inPos); float facAmbient = vecSkill41.x / 100.; Out.Ambient = facAmbient*vecLight; CreateTangents(inNormal,inTangent); float3 P = DoPos(inPos); float3 lightVec; lightVec = normalize(vecLightPos[0].xyz - P); Out.Color = vecLightColor[0]; Out.Light = DoTangent(lightVec) * 0.5 + 0.5; Out.Normal = DoTangent(DoPos(inNormal)) * 0.5 + 0.5;
return Out; }
float4 toonPS(toonOut In): COLOR { float4 base = tex2D(sBaseTex,In.Tex); float intensity = dot(In.Light*2 - 1,In.Normal*2 - 1); float light; if (intensity > 0.85 ) light = 1.; else if (intensity > 0.35 ) light = 0.55; else light = 0.05; return base * (light*In.Color + In.Ambient); }
technique toon { pass one { VertexShader = compile vs_1_1 toonVS(); PixelShader = compile ps_1_4 toonPS(); } pass two { CULLMODE=CW; vertexShaderConstant[0] = <matWorldViewProj>; vertexShaderConstant[16] = <vecSkill41.y/20.>; VertexShader = asm { vs_1_0 dcl_position v0 dcl_normal v3 dcl_texcoord v7 mov r0,v0 mul r1,c16.x,v3 // Scale the normal add r0.xyz,r0.xyz,r1.xyz m4x4 oPos,r0,c0 // Transorm position to clip space mov oD0, c0 mov r0,c0 }; } }
technique fallback { pass one { } }
..and the shorter version (your suggestion) that I'm also using: #include <transform>
float4 vecSkill41;
technique toon {
pass outlines { CULLMODE=CW; vertexShaderConstant[0] = <matWorldViewProj>; vertexShaderConstant[16] = <vecSkill41.y/20.>;
VertexShader = asm { vs_1_0 dcl_position v0 dcl_normal v3 dcl_texcoord v7 mov r0,v0 mul r1,c16.x,v3 // Scale the normal add r0.xyz,r0.xyz,r1.xyz m4x4 oPos,r0,c0 // Transorm position to clip space mov oD0, c0 mov r0,c0 }; } }
|
|
|
Re: Toon shader & fog colors?
[Re: Pavle]
#373895
06/13/11 23:01
06/13/11 23:01
|
Joined: Mar 2006
Posts: 2,252
Hummel
Expert
|
Expert
Joined: Mar 2006
Posts: 2,252
|
hm strange, try to modfiy it this way: pass two { CULLMODE=CW; vertexShaderConstant[0] = <matWorldViewProj>; vertexShaderConstant[16] = <vecSkill41.y/20.>;
VertexShader = asm { vs_1_0 dcl_position v0 dcl_normal v3 dcl_texcoord v7 mov r0,v0 mul r1,c16.x,v3 // Scale the normal add r0.xyz,r0.xyz,r1.xyz m4x4 oPos,r0,c0 // Transorm position to clip space mov oD0, c0 mov r0,c0 };
PixelShader = null; }
|
|
|
|