source: GTP/branches/IllumWPdeliver2008dec/IlluminationWP/demos/OgreGames/MoriaBattle/Media/GTPBasic/GTPBasicShading.hlsl @ 3255

Revision 3255, 2.3 KB checked in by szirmay, 15 years ago (diff)
Line 
1struct ShadedTex_OUT
2{
3 float4 vPos : POSITION;
4 float4 texCoord : TEXCOORD0;
5 float4 wNormal : TEXCOORD1;
6 float4 wPos    : TEXCOORD2; 
7};
8#define SAMPLECUTDIST2 0.01
9float4 TexturedShadedOneLight_PS(ShadedTex_OUT IN,
10                                                uniform float3 lightPos,
11                                                uniform float3 lightDir,
12                                                uniform float3 lightColor,                                             
13                                                uniform float  lightPower,
14                                                uniform sampler2D colorTex : register(s0)):COLOR0
15{
16        float4 color = 1;
17       
18        lightDir = normalize(lightDir);
19        IN.wNormal.xyz = normalize(IN.wNormal.xyz);
20       
21        float3 diff = lightPos - IN.wPos;
22        float dist2 = dot(diff, diff);
23        if(dist2 < SAMPLECUTDIST2)
24                dist2 = SAMPLECUTDIST2;
25        diff = normalize(diff);
26        float cosa = max(dot(lightDir, -diff), 0);
27        float cosb = max(dot(IN.wNormal.xyz, diff), 0);
28       
29        color.rgb = pow(cosa, 9) * cosb / dist2 * lightPower * lightColor;
30        //color.rgb *= lightPower;
31        //return 0;
32        return color * tex2D(colorTex, IN.texCoord);
33}
34
35
36float4 TexturedShadedTwoLights_PS(ShadedTex_OUT IN,
37                                                uniform float3 lightPos1,
38                                                uniform float3 lightDir1,
39                                                uniform float3 lightColor1,                                             
40                                                uniform float  lightPower1,
41                                                uniform float3 lightPos2,
42                                                uniform float3 lightDir2,
43                                                uniform float3 lightColor2,                                             
44                                                uniform float  lightPower2,                                             
45                                                uniform sampler2D colorTex : register(s0)):COLOR0
46{
47        float4 color = 0;
48        IN.wNormal.xyz = normalize(IN.wNormal.xyz);
49       
50        {
51        float3 lightDir = normalize(lightDir1);
52       
53        float3 diff = lightPos1 - IN.wPos;
54        float dist2 = dot(diff, diff);
55        if(dist2 < SAMPLECUTDIST2)
56                dist2 = SAMPLECUTDIST2;
57        diff = normalize(diff);
58        float cosa = max(dot(lightDir1, -diff), 0);
59        float cosb = max(dot(IN.wNormal.xyz, diff), 0);
60       
61        color.rgb += pow(cosa, 9) * cosb / dist2 * lightPower1 * lightColor1;
62        //color.rgb += cosb / dist2 * lightPower1 * lightColor1;
63       
64        }
65        /*
66        {
67        float3  lightDir = normalize(lightDir2);
68       
69        float3 diff = lightPos2 - IN.wPos;
70        float dist2 = dot(diff, diff);
71        if(dist2 < SAMPLECUTDIST2)
72                dist2 = SAMPLECUTDIST2;
73        diff = normalize(diff);
74        float cosa = max(dot(lightDir2, -diff), 0);
75        float cosb = max(dot(IN.wNormal.xyz, diff), 0);
76       
77        color.rgb += pow(cosa, 9) * cosb / dist2 * lightPower2 * lightColor2;
78        //color.rgb += cosb / dist2 * lightPower1 * lightColor1;       
79        }       
80        */
81        //color.rgb *= lightPower;
82        //return 0;
83        return  (color) * tex2D(colorTex, IN.texCoord);
84}
Note: See TracBrowser for help on using the repository browser.