Updated shaders and effects for 3D clouds using single Drawable per cloud rather than per sprite.
This commit is contained in:
parent
4126b3f592
commit
fa933eda6e
3 changed files with 9 additions and 18 deletions
|
@ -57,10 +57,6 @@
|
|||
<name>usrAttr2</name>
|
||||
<index>11</index>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<name>usrAttr3</name>
|
||||
<index>12</index>
|
||||
</attribute>
|
||||
</program>
|
||||
<uniform>
|
||||
<name>baseTexture</name>
|
||||
|
|
|
@ -6,6 +6,6 @@ void main(void)
|
|||
vec4 base = texture2D( baseTexture, gl_TexCoord[0].st);
|
||||
vec4 finalColor = base * gl_Color;
|
||||
gl_FragColor.rgb = mix(gl_Fog.color.rgb, finalColor.rgb, fogFactor );
|
||||
gl_FragColor.a = mix(0.0, finalColor.a, fogFactor);
|
||||
gl_FragColor.a = finalColor.a;
|
||||
}
|
||||
|
||||
|
|
|
@ -7,21 +7,16 @@ uniform float range; // From /sim/rendering/clouds3d-vis-range
|
|||
|
||||
attribute vec3 usrAttr1;
|
||||
attribute vec3 usrAttr2;
|
||||
attribute vec3 usrAttr3;
|
||||
|
||||
float textureIndexX = usrAttr1.r;
|
||||
float textureIndexY = usrAttr1.g;
|
||||
float wScale = usrAttr1.b;
|
||||
float hScale = usrAttr2.r;
|
||||
float shade_factor = usrAttr2.g;
|
||||
float cloud_height = usrAttr2.b;
|
||||
float bottom_factor = usrAttr3.r;
|
||||
float middle_factor = usrAttr3.g;
|
||||
float top_factor = usrAttr3.b;
|
||||
float shade_factor = usrAttr1.g;
|
||||
float cloud_height = usrAttr1.b;
|
||||
float bottom_factor = usrAttr2.r;
|
||||
float middle_factor = usrAttr2.g;
|
||||
float top_factor = usrAttr2.b;
|
||||
|
||||
void main(void)
|
||||
{
|
||||
gl_TexCoord[0] = gl_MultiTexCoord0 + vec4(textureIndexX, textureIndexY, 0.0, 0.0);
|
||||
gl_TexCoord[0] = gl_MultiTexCoord0;
|
||||
vec4 ep = gl_ModelViewMatrixInverse * vec4(0.0,0.0,0.0,1.0);
|
||||
vec4 l = gl_ModelViewMatrixInverse * vec4(0.0,0.0,1.0,1.0);
|
||||
vec3 u = normalize(ep.xyz - l.xyz);
|
||||
|
@ -36,8 +31,8 @@ void main(void)
|
|||
// scaling in the homogeneous component of pos.
|
||||
gl_Position = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
gl_Position.xyz = gl_Vertex.x * u;
|
||||
gl_Position.xyz += gl_Vertex.y * r * wScale;
|
||||
gl_Position.xyz += gl_Vertex.z * w * hScale;
|
||||
gl_Position.xyz += gl_Vertex.y * r;
|
||||
gl_Position.xyz += gl_Vertex.z * w;
|
||||
// Apply Z scaling to allow sprites to be squashed in the z-axis
|
||||
gl_Position.z = gl_Position.z * gl_Color.w;
|
||||
|
||||
|
|
Loading…
Reference in a new issue