source: GTP/branches/IllumWPdeliver2008dec/IlluminationWP/demos/OgreGames/CarGame/Media/materials/programs/bumpmapped.hlsl @ 3255

Revision 3255, 3.3 KB checked in by szirmay, 15 years ago (diff)
Line 
1float4x4 world_IT;
2
3struct VertOut
4{
5        half4 hPosition :POSITION;     
6        half2 texCoord  :TEXCOORD;     
7        half3 wPosition :TEXCOORD1;     
8        half3 Normal    :TEXCOORD2;
9        half3 Tangent   : TEXCOORD3;     // model space tangent vector
10    half3 Binormal  : TEXCOORD4;         // model space binormal vector
11};
12
13VertOut deaultVS(half4 position : POSITION,
14                half3 normal:NORMAL,
15                half3 Tangent   : TEXCOORD1,     
16                half2 texCoord : TEXCOORD0,             
17                uniform float4x4 worldViewProj,
18                uniform float4x4 world)
19{
20  VertOut OUT;
21  OUT.hPosition = mul(worldViewProj, position); 
22  OUT.texCoord = texCoord;
23  OUT.wPosition = mul(world, position).xyz;
24  OUT.Normal = normal;
25  OUT.Tangent = Tangent; 
26  OUT.Binormal = cross(Tangent, normal);
27  return OUT;   
28}
29
30half4 deaultPS(VertOut IN,
31                                uniform sampler2D Texture : register(s0),
32                                uniform sampler2D NormalMap : register(s1),
33                                uniform half3 lightPosition,
34                                uniform half3 cameraPos,
35                                uniform half4 ambientColor,
36                                uniform half4 diffuseColor,
37                                uniform half4 specularColor,
38                                uniform half shininess                         
39                                ):COLOR
40{
41        half4 Color = half4(1,1,1,1);   
42
43///get normal
44        float3x3 ModelToTangent = float3x3(IN.Tangent, IN.Binormal, IN.Normal);
45        //float3x3 ModelToTangent = TransfModelToTangent(IN.Tangent, IN.Binormal, IN.Normal );
46    half3 tNormal = tex2D(NormalMap, IN.texCoord).rgb;         
47   
48   
49    half3 wNormal =mul(tNormal, ModelToTangent );
50    //wNormal = IN.Normal;
51    wNormal = normalize(mul( wNormal, world_IT ));
52
53///shading
54
55        half3 V = -normalize( cameraPos - IN.wPosition);
56        half3 light = lightPosition;
57        half3 L = normalize(light);
58        half3 H = normalize(L + V);
59        half4 lighting = lit(dot(wNormal, L),dot(wNormal, H), shininess);
60               
61        Color = tex2D(Texture, IN.texCoord) * (lighting.y * diffuseColor + ambientColor)
62                                        + lighting.z * specularColor;
63        //Color = float4(wNormal,1);
64        return Color;
65}
66
67
68half4 doubleTexturePS(VertOut IN,
69                                uniform sampler2D baseTexture : register(s0),
70                                uniform sampler2D paintTexture : register(s1),
71                                uniform sampler2D NormalMap : register(s2),
72                                uniform half3 lightPosition,
73                                uniform half3 cameraPos,
74                                uniform half4 ambientColor,
75                                uniform half4 diffuseColor,
76                                uniform half4 specularColor,
77                                uniform half shininess,
78                                uniform float2 texUVmult                               
79                                ):COLOR
80{
81        half4 Color = half4(1,1,1,1);
82       
83        float2 baseTexCoord =   IN.texCoord * texUVmult;
84
85///get normal
86        float3x3 ModelToTangent = float3x3(IN.Tangent, IN.Binormal, IN.Normal);
87        //float3x3 ModelToTangent = TransfModelToTangent(IN.Tangent, IN.Binormal, IN.Normal );
88    half3 tNormal = tex2D(NormalMap, baseTexCoord).rgb;         
89   
90   
91    half3 wNormal =mul(tNormal, ModelToTangent );
92    //wNormal = IN.Normal;
93    wNormal = normalize(mul( wNormal, world_IT ));
94
95///shading
96
97        half3 V = -normalize( cameraPos - IN.wPosition);
98        half3 light = lightPosition;
99        half3 L = normalize(light);
100        half3 H = normalize(L + V);
101        half4 lighting = lit(dot(wNormal, L),dot(wNormal, H), shininess);
102       
103        float4 baseColor = tex2D(baseTexture, baseTexCoord);
104        float4 paintColor = tex2D(paintTexture, IN.texCoord);
105        float4 texColor = baseColor + paintColor;
106               
107        Color =  texColor * (lighting.y * diffuseColor + ambientColor)
108                                        + lighting.z * specularColor;
109        //Color = float4(wNormal,1);
110        return Color;
111}
Note: See TracBrowser for help on using the repository browser.