Ignore:
Timestamp:
09/11/06 23:09:16 (18 years ago)
Author:
szirmay
Message:
 
Location:
GTP/trunk/App/Demos/Illum/Ogre/Media/materials
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/App/Demos/Illum/Ogre/Media/materials/programs/GameTools_HPS_Smoke_S.hlsl

    r1336 r1339  
    22struct VS_OUT 
    33{ 
    4         float4 hPosition : POSITION; 
    5         float4 cPosition : TEXCOORD0; 
    6         float  radius    : TEXCOORD2; 
    7         float4 texCoord  : TEXCOORD1; 
     4        float4 hPosition        : POSITION; 
     5        float4 cPosition        : TEXCOORD1; 
     6        float2 texCoord         : TEXCOORD0; 
     7        float r                         : TEXCOORD2;     
     8        float4 center           : TEXCOORD3; 
    89}; 
    910 
    10 VS_OUT VP(float4 mPosition : POSITION, 
    11                   uniform float4x4 worldView, 
    12                   uniform float4x4 Proj, 
    13                   uniform float4x4 worldViewProj 
    14                   float2 texCoord :TEXCOORD0) 
     11VS_OUT HPS_Smoke_S_VS (float4 position : POSITION,       
     12                float4 texCoord : TEXCOORD0, 
     13                 
     14                uniform float4x4 worldView, 
     15                uniform float4x4 Proj, 
     16                uniform float4x4 worldViewProj) 
    1517{ 
    16  VS_OUT Out; 
    17  Out.texCoord.xy = texCoord;  
    18  Out.texCoord.zw = (texCoord * 2.0) - 1.0;  
     18        VS_OUT OUT; 
     19   
     20        float2 offset = texCoord.zw; 
     21        float4 cPosition;    
     22        cPosition = mul(worldView, position); 
     23        OUT.center = cPosition;  
     24        cPosition.xy += offset;                          
     25        OUT.cPosition = cPosition; 
     26        OUT.r = abs(texCoord.z);                 
    1927  
    20  float2 offset = texCoord.zw; 
    21  float4 cPosition = mul(worldView, mPosition); 
    22  cPosition.xy += offset; 
    23     
    24  Out.hPosition = mul( Proj, cPosition ); 
    25  Out.cPosition = cPosition; 
    26  Out.radius = abs(offset.x); 
    27   
    28   return OUT; 
     28    OUT.hPosition = mul( Proj, cPosition ); 
     29      
     30    OUT.texCoord = texCoord.xy;     
     31        return OUT; 
     32}  
     33 
     34 
     35float4 HPS_Smoke_S_PS(VS_OUT IN, 
     36                                                uniform float4x4 Proj, 
     37                                                uniform sampler2D Texture       ) : COLOR 
     38{ 
     39        float4 Color = 0; 
     40        float f = 0; 
     41        float b = 1; 
     42        float alpha = 0; 
     43                 
     44        float d = length( IN.cPosition.xyz - IN.center.xyz); 
     45         
     46        if( d < IN.r ) 
     47        {         
     48         float w = sqrt( IN.r * IN.r - d * d ); 
     49         float4 fPosition = IN.cPosition; 
     50         float4 bPosition = IN.cPosition; 
     51         fPosition.z -= w; 
     52         bPosition.z += w; 
     53         fPosition = mul(Proj, fPosition); 
     54         bPosition = mul(Proj, bPosition); 
     55         f = (fPosition.z / fPosition.w + 1.0) / 2.0; 
     56         b = (bPosition.z / bPosition.w + 1.0) / 2.0; 
     57         alpha = w / IN.r;       
     58        } 
     59        else 
     60         discard; 
     61         
     62        Color.r = f; 
     63        Color.g = 1 - b; 
     64        Color.a = alpha; 
     65         
     66         
     67        return Color;  
    2968} 
    30  
    31 float4 FP(VS_OUT In, 
    32                   uniform float4x4 Proj, 
    33                   uniform sampler2D Texture):COLOR 
    34 { 
    35         float4 color = 1; 
    36         float front = 0; 
    37         float back = 1; 
    38          
    39         float4 tex = tex2D(Texture, In.texCoord.xy); 
    40         float d = length(In.TexCoord.zw); 
    41         float w = sqrt(In.radius * In.radius - d * d); 
    42         if(d < r) 
    43         { 
    44                 float4 positionF; float4 positionB; 
    45                 positionF = positionB = In.cPosition; 
    46                 positionF.z -= w; 
    47                 positionB.z += w; 
    48                 positionF = mul(Proj, positionF); 
    49                 positionB = mul(Proj, positionB); 
    50                 positionF = (positionF / positionF.w + 1.0) / 2.0; 
    51                 positionB = (positionB / positionB.w + 1.0) / 2.0; 
    52         } 
    53         color.rgb = positionF.z; 
    54          
    55         return color; 
    56 } 
  • GTP/trunk/App/Demos/Illum/Ogre/Media/materials/scripts/GameTools_HPS.material

    r1336 r1339  
    22{ 
    33        source GameTools_HPS_Smoke_S.hlsl 
    4         entry_point VP 
    5         target vs_2_0 
     4        entry_point HPS_Smoke_S_VS 
     5        target vs_3_0 
    66}  
    77 
     
    99{ 
    1010        source GameTools_HPS_Smoke_S.hlsl 
    11         entry_point FP 
     11        entry_point HPS_Smoke_S_PS 
    1212        target ps_3_0 
    1313}  
    1414 
     15 
     16 
     17material HPS_SMOKE_S 
     18{ 
     19        technique 
     20        { 
     21                pass 
     22                {                        
     23                        vertex_program_ref HPS_Smoke_S_VS 
     24                        {        
     25                                param_named_auto worldViewProj worldviewproj_matrix  
     26                                param_named_auto worldView worldview_matrix 
     27                                param_named_auto Proj projection_matrix      
     28                        }  
     29                        fragment_program_ref  HPS_Smoke_S_PS 
     30                        {  
     31                                param_named_auto Proj projection_matrix 
     32                        } 
     33                         
     34                        depth_check off 
     35                        //scene_blend_op min 
     36                        //scene_blend_op_alpha add 
     37                        scene_blend one one 
     38 
     39                } 
     40        } 
     41} 
     42 
     43 
     44vertex_program HPS_Smoke_L_VS hlsl 
     45{ 
     46        source GameTools_HPS_Smoke_L.hlsl 
     47        entry_point HPS_Smoke_L_VS 
     48        target vs_3_0 
     49}  
     50 
     51fragment_program HPS_Smoke_L_PS hlsl 
     52{ 
     53        source GameTools_HPS_Smoke_L.hlsl 
     54        entry_point HPS_Smoke_L_PS 
     55        target ps_3_0 
     56}  
     57 
     58 
     59 
     60material HPS_SMOKE_L 
     61{ 
     62        technique 
     63        { 
     64                pass 
     65                {        
     66                        IllumTechniques 
     67                        { 
     68                                RenderTechnique HPS 
     69                                { 
     70                                        particle_script GameTools/Little 
     71                                        perspective false 
     72                                }                        
     73                        } 
     74                                 
     75                        vertex_program_ref HPS_Smoke_L_VS 
     76                        {        
     77                                param_named_auto worldViewProj worldviewproj_matrix  
     78                                param_named_auto worldView worldview_matrix 
     79                                param_named_auto Proj projection_matrix      
     80                        }  
     81                        fragment_program_ref  HPS_Smoke_L_PS 
     82                        {  
     83                                param_named_auto Proj projection_matrix 
     84                        } 
     85                         
     86                        //depth_check off                        
     87                        //scene_blend_alpha add 
     88                         
     89                        texture_unit 
     90                        { 
     91                                 
     92                        } 
     93 
     94                } 
     95        } 
     96} 
     97 
     98 
     99 
Note: See TracChangeset for help on using the changeset viewer.