mirror of
https://github.com/godotengine/godot.git
synced 2024-12-21 10:25:24 +08:00
57416bfbce
Precision qualifiers are only used on OpenGL ES 2.0 and 3.0, and while OpenGL 3.3 defines them for compatibility (but without practical effect), they're missing from OpenGL 2.1, so we define them to prevent compilation errors. Fixes #24521.
58 lines
1.1 KiB
GLSL
58 lines
1.1 KiB
GLSL
/* clang-format off */
|
|
[vertex]
|
|
|
|
#ifdef USE_GLES_OVER_GL
|
|
#define lowp
|
|
#define mediump
|
|
#define highp
|
|
#else
|
|
precision highp float;
|
|
precision highp int;
|
|
#endif
|
|
|
|
attribute highp vec3 vertex; // attrib:0
|
|
|
|
uniform highp mat4 projection_matrix;
|
|
/* clang-format on */
|
|
uniform highp mat4 light_matrix;
|
|
uniform highp mat4 world_matrix;
|
|
uniform highp float distance_norm;
|
|
|
|
varying highp vec4 position_interp;
|
|
|
|
void main() {
|
|
|
|
gl_Position = projection_matrix * (light_matrix * (world_matrix * vec4(vertex, 1.0)));
|
|
position_interp = gl_Position;
|
|
}
|
|
|
|
/* clang-format off */
|
|
[fragment]
|
|
|
|
#ifdef USE_GLES_OVER_GL
|
|
#define lowp
|
|
#define mediump
|
|
#define highp
|
|
#else
|
|
precision mediump float;
|
|
precision mediump int;
|
|
#endif
|
|
|
|
varying highp vec4 position_interp;
|
|
/* clang-format on */
|
|
|
|
void main() {
|
|
|
|
highp float depth = ((position_interp.z / position_interp.w) + 1.0) * 0.5 + 0.0; // bias
|
|
|
|
#ifdef USE_RGBA_SHADOWS
|
|
|
|
highp vec4 comp = fract(depth * vec4(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0));
|
|
comp -= comp.xxyz * vec4(0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0);
|
|
gl_FragColor = comp;
|
|
#else
|
|
|
|
gl_FragColor = vec4(depth);
|
|
#endif
|
|
}
|