12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- //@renderpasses 2,6,10
- //@import "std"
- //material uniforms
- //
- uniform sampler2D m_ColorTexture;
- uniform vec4 m_ColorFactor;
- //buffer uniforms
- //
- uniform vec3 x_Gravity; //gravity of particle
- uniform float x_Duration; //duration of particle
- uniform float x_Fade; //start fade out time
- //@vertex
- void main(){
- float t=(r_Time-a_TexCoord0.s);
-
- float a=1.0-clamp( (t-x_Fade)/(x_Duration-x_Fade),0.0,1.0 );
- v_Color=m_ColorFactor * vec4( a_Tangent.rgb,a_Tangent.a * a * i_Alpha );
-
- vec4 position=i_ModelMatrix * vec4( a_Position.xyz * t,1.0 );
-
- position.xyz+=x_Gravity * t * t * .5;
-
- position=r_ViewMatrix * position;
-
- v_Position=position.xyz;
-
- gl_Position=r_ProjectionMatrix * position;
-
- gl_PointSize=a_TexCoord0.t/gl_Position.w;
- }
- //@fragment
- void main(){
- vec4 color=texture2D( m_ColorTexture,gl_PointCoord );
- float alpha=color.a * v_Color.a;
-
- vec3 frag=pow( color.rgb,vec3( 2.2 ) ) * v_Color.rgb;
-
- float fog=clamp( (length( v_Position )-r_FogNear)/(r_FogFar-r_FogNear),0.0,1.0 ) * r_FogColor.a;
-
- frag=mix( frag,r_FogColor.rgb,fog );
-
- frag*=alpha;
-
- #if defined( MX2_SRGBOUTPUT )
- gl_FragColor=vec4( pow( frag,vec3( 1.0/2.2 ) ),alpha );
- #else
- gl_FragColor=vec4( frag,alpha );
- #endif
- }
|