I'm using OpenGL shader builder v2.2.2 and took sample code from book. For vertex shader
#version 140
uniform float CoolestTemp;
uniform float TempRange;
uniform mat4 MVPMatrix;
in vec4 mcVertex;
in float VertexTemp;
out float Temperature;
void main() {
Temperature = (VertexTemp - CoolestTemp) / TempRange;
gl_Position = MVPMatrix * mcVertex;
}
And for fragment shader
#version 140
uniform vec3 CoolestColor;
uniform vec3 HottestColor;
in float Temperature;
out vec4 FragmentColor;
void main()
{
vec3 color = mix(CoolestColor, HottestColor, Temperature);
FragmentColor = vec4(color, 1.0);
}
My problem is to execute this code because version 140 and 320 is not supported. Then I tryed to remove versions, compiler said "Invalid qualifiers 'in' in global variable context" and same for 'out', then tried to replace in/out to 'varying' but in fragment shader "Left-hand-side of assignment must not be read-only" error appears. For vertex shader have warning about varying fields will not read in next stages. How can I figure out it to adapt an old-styled code to new? So I'm absolutely new to GLSL
It's much more common to go from the old naming to new. But if you need the other way, the conversion for the vertex shader is:
in --> attribute
out --> varying
For fragment shader:
in --> varying
out --> (delete)
For the out
of the fragment shader, you can delete the declaration of the variable. Instead, use the built-in gl_FragColor
variable.
For your example, the vertex shader will look like this:
uniform float CoolestTemp;
uniform float TempRange;
uniform mat4 MVPMatrix;
attribute vec4 mcVertex;
attribute float VertexTemp;
varying float Temperature;
void main() {
Temperature = (VertexTemp - CoolestTemp) / TempRange;
gl_Position = MVPMatrix * mcVertex;
}
And the fragment shader:
uniform vec3 CoolestColor;
uniform vec3 HottestColor;
varying float Temperature;
void main() {
vec3 color = mix(CoolestColor, HottestColor, Temperature);
gl_FragColor = vec4(color, 1.0);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With