Petr, using the glslValidator tool (very useful), I found the cure for the irritation was to change the 6 to 6.0. or more formally: float(6). The spec requires casting to be very specific.

Patrice, It's those Benassi peaks again! If you look at the vertext shader you will see that I sneaked in some vertex magnification in the y axis but obviously failed to get away with it. But I am delighted it works on your Vista laptop. I infer that shaders are part of the Vista hardware spec.

The best solution will be to dispense with the blue tinting pyramid entirely and generate the shading of the landscape entirely within GLSL . I use the uniform variable 'univar' to pass distance information into the shader. On the Client side, This value is passed from variable 'ds', just before each strip of land is called.

` a.y = a.y * 1.2; `

In the fragment shader the // commented out lines are earlier types of shading I tried, so you can see how the final expression evolved.

Thank you both for the feedback.

`[VERTEX SHADER]`

uniform float univar;

varying vec4 vColor;

varying vec4 vVertex;

varying vec4 vTexCoord;

void main(void)

{

vTexCoord = gl_MultiTexCoord0;

float mm = univar;

vColor = gl_Color;

vVertex = gl_Vertex;

vec4 a = gl_Vertex;

//a.x = a.x * (mm+0.1); // *(univar+0.1);

a.y = a.y * 1.2;

gl_Position = gl_ModelViewProjectionMatrix * a;

}

[END VERTEX SHADER]

[FRAGMENT SHADER]

uniform float univar;

uniform sampler2D myTexture;

varying vec4 vColor;

varying vec4 vVertex;

varying vec2 vTexCoord;

void main (void)

{

//gl_FragColor = vec4(1.0, 1.0, 0.0, .4);

//gl_FragColor = vColor*.5;

//gl_FragColor = vColor*vec4(1,1,vVertex.y+.2,vVertex.y+.2);

//gl_FragColor = vColor*.2 +vec4(-vVertex.y+.2, -vVertex.y+.5, vVertex.y+.2, .5);

//gl_FragColor = vColor*.2 +vec4(vVertex.x*.1+.1, -vVertex.y+.5, vVertex.y+.2, vVertex.y+0.1);

gl_FragColor = vColor*.2 +vec4(vVertex.x*.1+.1, -vVertex.y+.5, vVertex.y+.2, vVertex.y+0.1)

* univar * 6.0 * texture2D(myTexture, vTexCoord).bgra;

}

[END FRAGMENT SHADER]