source: GTP/trunk/App/Demos/Illum/Ogre/Media/materials/programs/GameTools_Caustic.hlsl @ 777

Revision 777, 1.1 KB checked in by szirmay, 18 years ago (diff)
Line 
1
2float readDistanceCubeMap(samplerCUBE dcm, float3 coord)               
3{
4        float dist = texCUBE(dcm, float3(coord.xy, - coord.z)).r;
5        if(dist == 0) dist = 10000; ///sky
6        return dist;
7}
8
9struct VertOut
10{
11        float4 hPosition        :POSITION;     
12        float2 texCoord         :TEXCOORD;     
13        float3 wPosition        :TEXCOORD1;     
14};
15
16
17VertOut deaultVS(float4 position : POSITION,
18                float2 texCoord : TEXCOORD0,
19                uniform float4x4 worldViewProj,
20                uniform float4x4 world)
21{
22  VertOut OUT;
23  OUT.texCoord = texCoord;
24  OUT.hPosition = mul(worldViewProj, position); 
25  OUT.wPosition = mul(world, position).xyz;
26  return OUT;   
27}
28
29float4 deaultPS(VertOut IN,
30                                uniform samplerCUBE CubeMap : register(s0),
31                                uniform samplerCUBE distanceCube : register(s1),
32                                uniform float3 cubeMapCameraPosition):COLOR
33{
34        float4 Color = float4(1,1,1,1);
35       
36        float3 dir = IN.wPosition - cubeMapCameraPosition;
37        float4 caustic = texCUBE(CubeMap, float3(dir.xy,-dir.z) );
38        float mydist = length(dir);
39        float dist = readDistanceCubeMap(distanceCube, dir);
40       
41        float EPSILON = 10.0;
42
43        if(mydist > dist + EPSILON) caustic = 0;
44                       
45       
46        Color = caustic;
47               
48        return Color;
49}
Note: See TracBrowser for help on using the repository browser.