Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 9425 for data/trunk/programs


Ignore:
Timestamp:
Oct 31, 2012, 6:02:05 PM (12 years ago)
Author:
davidsa
Message:

Improved glow effect, added some minor documentation to the glow.material file.

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
     1struct vertexOut
    22{
    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
     9float4 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);
    425    return color;
    526}
  • 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 )
     1struct vertexIn
    32{
    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
     8struct 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
     16vertexOut 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;
    728}
    8 
Note: See TracChangeset for help on using the changeset viewer.