Changeset 9425 for data/trunk/programs
- Timestamp:
- Oct 31, 2012, 6:02:05 PM (12 years ago)
- Location:
- data/trunk/programs
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
data/trunk/programs/ps_glow.cg
r9408 r9425 1 float4 main(uniform float alpha_value, uniform float time, uniform float4 color) : COLOR 1 struct vertexOut 2 2 { 3 color.w = alpha_value * ((sin(time * 5.0) / 3.14 + 1.0) / 2.0 ); 3 float4 position : POSITION; 4 float2 uv : TEXCOORD0; 5 float3 worldNormal : TEXCOORD1; 6 float3 worldView : TEXCOORD2; 7 }; 8 9 float4 main(vertexOut input, uniform float alphaValue, uniform float cutoffAngle, uniform float exponent, uniform float time, uniform float4 color) : COLOR 10 { 11 float3 Nn = normalize(input.worldNormal); 12 float3 Vn = normalize(input.worldView); 13 float alphaMod = dot(Nn, Vn);//this is a measure for how close we are to the edge of a model according to our view 14 float cutoff=cos(cutoffAngle * 3.14 / 180.0);//pi divided by 180 15 if(alphaMod<cutoff)//transform output range so it only affects angles close to 90 degrees 16 { 17 alphaMod/=cutoff; 18 } 19 else 20 { 21 alphaMod=1.0; 22 } 23 alphaMod = pow(alphaMod,exponent); //how fast should the intensity of the glow decrease 24 color.w = alphaMod * alphaValue * ((sin(time)/3.14 + 1.0) / 2.0 + 0.1); 4 25 return color; 5 26 } -
data/trunk/programs/vs_glow.cg
r9408 r9425 1 void main(float4 position : POSITION, float3 normal : NORMAL, float2 uv : TEXCOORD0, out float4 oPosition : POSITION, out float2 oUv : TEXCOORD0, out float4 colour : COLOR, 2 uniform float4x4 worldViewProjMatrix, uniform float size_value, uniform float time ) 1 struct vertexIn 3 2 { 4 float4 myPosition = position; 5 myPosition.xyz += size_value * (1.0 + (sin(time * 5.0) + 1.0) / 5.0 ) * normal; 6 oPosition = mul(worldViewProjMatrix, myPosition); 3 float4 position : POSITION; 4 float4 normal : NORMAL; 5 float2 uv : TEXCOORD0; 6 }; 7 8 struct vertexOut 9 { 10 float4 position : POSITION; //<! transformed position 11 float2 uv : TEXCOORD0; //<! passing on uv information 12 float3 worldNormal : TEXCOORD1; //<! surface normal transformed into world 13 float3 worldView : TEXCOORD2; //<! view direction transformed into world 14 }; 15 16 vertexOut main(vertexIn input, uniform float4x4 iWorldTMatrix, uniform float4x4 iViewMatrix, uniform float4x4 worldMatrix, uniform float4x4 viewProjMatrix, uniform float inflate ) 17 { 18 vertexOut output; 19 float4 myPosition = input.position; 20 output.worldNormal=mul(iWorldTMatrix, input.normal).xyz; //transforming the normal 21 input.normal = normalize(float4(input.normal.xyz,0)); //normalizing the normal according to the three relevant parts 22 myPosition.xyz += inflate * input.normal; //inflating the model into a bigger shape 23 myPosition = mul(worldMatrix, myPosition); //transforming position into world 24 output.worldView = normalize(float3(iViewMatrix[0].w, iViewMatrix[1].w, iViewMatrix[2].w) - myPosition.xyz);//view direction according to world 25 output.position = mul(viewProjMatrix, myPosition); //finish transformation of the position into the projection space 26 output.uv = input.uv; //passing on uv information 27 return output; 7 28 } 8
Note: See TracChangeset
for help on using the changeset viewer.