diff --git a/Effects/cloud.eff b/Effects/cloud.eff index 0dc464100..ee9cce00a 100644 --- a/Effects/cloud.eff +++ b/Effects/cloud.eff @@ -57,6 +57,10 @@ usrAttr2 11 + + usrAttr3 + 12 + baseTexture diff --git a/Shaders/3dcloud.frag b/Shaders/3dcloud.frag index 6a6a4a2cf..4222fbfc8 100644 --- a/Shaders/3dcloud.frag +++ b/Shaders/3dcloud.frag @@ -6,7 +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; + gl_FragColor.a = mix(0.0, finalColor.a, fogFactor); } diff --git a/Shaders/3dcloud.vert b/Shaders/3dcloud.vert index a650e4d00..ab724622e 100644 --- a/Shaders/3dcloud.vert +++ b/Shaders/3dcloud.vert @@ -7,16 +7,21 @@ uniform float range; // From /sim/rendering/clouds3d-vis-range attribute vec3 usrAttr1; attribute vec3 usrAttr2; +attribute vec3 usrAttr3; -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; +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; void main(void) { - gl_TexCoord[0] = gl_MultiTexCoord0; + gl_TexCoord[0] = gl_MultiTexCoord0 + vec4(textureIndexX, textureIndexY, 0.0, 0.0); 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); @@ -31,8 +36,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; - gl_Position.xyz += gl_Vertex.z * w; + gl_Position.xyz += gl_Vertex.y * r * wScale; + gl_Position.xyz += gl_Vertex.z * w * hScale; // Apply Z scaling to allow sprites to be squashed in the z-axis gl_Position.z = gl_Position.z * gl_Color.w;