mirror of
https://github.com/minetest/minetest.git
synced 2024-12-02 12:33:45 +01:00
Fix shaders on some GPUs
This commit is contained in:
parent
3cc45fd8ad
commit
206565d965
@ -21,14 +21,16 @@ const float e = 2.718281828459;
|
|||||||
|
|
||||||
void main (void)
|
void main (void)
|
||||||
{
|
{
|
||||||
float use_normalmap = texture2D(useNormalmap,vec2(1.0,1.0)).r;
|
|
||||||
float enable_bumpmapping = enableBumpmapping;
|
|
||||||
|
|
||||||
vec3 color;
|
vec3 color;
|
||||||
vec2 uv = gl_TexCoord[0].st;
|
vec2 uv = gl_TexCoord[0].st;
|
||||||
|
|
||||||
|
#ifdef NORMALS
|
||||||
float height;
|
float height;
|
||||||
vec2 tsEye = vec2(tsEyeVec.x,-tsEyeVec.y);
|
vec2 tsEye = vec2(tsEyeVec.x,-tsEyeVec.y);
|
||||||
|
|
||||||
|
float use_normalmap = texture2D(useNormalmap,vec2(1.0,1.0)).r;
|
||||||
|
float enable_bumpmapping = enableBumpmapping;
|
||||||
|
|
||||||
if ((enableParallaxOcclusion == 1.0) && (use_normalmap > 0.0)) {
|
if ((enableParallaxOcclusion == 1.0) && (use_normalmap > 0.0)) {
|
||||||
float map_height = texture2D(normalTexture, uv).a;
|
float map_height = texture2D(normalTexture, uv).a;
|
||||||
if (map_height < 1.0){
|
if (map_height < 1.0){
|
||||||
@ -49,6 +51,9 @@ void main (void)
|
|||||||
} else {
|
} else {
|
||||||
color = texture2D(baseTexture, uv).rgb;
|
color = texture2D(baseTexture, uv).rgb;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
color = texture2D(baseTexture, uv).rgb;
|
||||||
|
#endif
|
||||||
|
|
||||||
float alpha = texture2D(baseTexture, uv).a;
|
float alpha = texture2D(baseTexture, uv).a;
|
||||||
vec4 col = vec4(color.r, color.g, color.b, alpha);
|
vec4 col = vec4(color.r, color.g, color.b, alpha);
|
||||||
|
@ -18,12 +18,13 @@ const float e = 2.718281828459;
|
|||||||
|
|
||||||
void main (void)
|
void main (void)
|
||||||
{
|
{
|
||||||
float use_normalmap = texture2D(useNormalmap,vec2(1.0,1.0)).r;
|
|
||||||
float enable_bumpmapping = enableBumpmapping;
|
|
||||||
|
|
||||||
vec3 color;
|
vec3 color;
|
||||||
vec2 uv = gl_TexCoord[0].st;
|
vec2 uv = gl_TexCoord[0].st;
|
||||||
|
|
||||||
|
#ifdef NORMALS
|
||||||
|
float use_normalmap = texture2D(useNormalmap,vec2(1.0,1.0)).r;
|
||||||
|
float enable_bumpmapping = enableBumpmapping;
|
||||||
|
|
||||||
if ((enable_bumpmapping == 1.0) && (use_normalmap > 0.0)) {
|
if ((enable_bumpmapping == 1.0) && (use_normalmap > 0.0)) {
|
||||||
vec3 base = texture2D(baseTexture, uv).rgb;
|
vec3 base = texture2D(baseTexture, uv).rgb;
|
||||||
vec3 vVec = normalize(eyeVec);
|
vec3 vVec = normalize(eyeVec);
|
||||||
@ -36,6 +37,9 @@ void main (void)
|
|||||||
} else {
|
} else {
|
||||||
color = texture2D(baseTexture, uv).rgb;
|
color = texture2D(baseTexture, uv).rgb;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
color = texture2D(baseTexture, uv).rgb;
|
||||||
|
#endif
|
||||||
|
|
||||||
float alpha = texture2D(baseTexture, uv).a;
|
float alpha = texture2D(baseTexture, uv).a;
|
||||||
vec4 col = vec4(color.r, color.g, color.b, alpha);
|
vec4 col = vec4(color.r, color.g, color.b, alpha);
|
||||||
|
@ -17,12 +17,13 @@ const float e = 2.718281828459;
|
|||||||
|
|
||||||
void main (void)
|
void main (void)
|
||||||
{
|
{
|
||||||
float use_normalmap = texture2D(useNormalmap,vec2(1.0,1.0)).r;
|
|
||||||
float enable_bumpmapping = enableBumpmapping;
|
|
||||||
|
|
||||||
vec3 color;
|
vec3 color;
|
||||||
vec2 uv = gl_TexCoord[0].st;
|
vec2 uv = gl_TexCoord[0].st;
|
||||||
|
|
||||||
|
#ifdef NORMALS
|
||||||
|
float use_normalmap = texture2D(useNormalmap,vec2(1.0,1.0)).r;
|
||||||
|
float enable_bumpmapping = enableBumpmapping;
|
||||||
|
|
||||||
if ((enable_bumpmapping == 1.0) && (use_normalmap > 0.0)) {
|
if ((enable_bumpmapping == 1.0) && (use_normalmap > 0.0)) {
|
||||||
vec3 base = texture2D(baseTexture, uv).rgb;
|
vec3 base = texture2D(baseTexture, uv).rgb;
|
||||||
vec3 vVec = normalize(eyeVec);
|
vec3 vVec = normalize(eyeVec);
|
||||||
@ -35,6 +36,9 @@ void main (void)
|
|||||||
} else {
|
} else {
|
||||||
color = texture2D(baseTexture, uv).rgb;
|
color = texture2D(baseTexture, uv).rgb;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
color = texture2D(baseTexture, uv).rgb;
|
||||||
|
#endif
|
||||||
|
|
||||||
float alpha = gl_Color.a;
|
float alpha = gl_Color.a;
|
||||||
vec4 col = vec4(color.r, color.g, color.b, alpha);
|
vec4 col = vec4(color.r, color.g, color.b, alpha);
|
||||||
|
@ -17,12 +17,13 @@ const float e = 2.718281828459;
|
|||||||
|
|
||||||
void main (void)
|
void main (void)
|
||||||
{
|
{
|
||||||
float use_normalmap = texture2D(useNormalmap,vec2(1.0,1.0)).r;
|
|
||||||
float enable_bumpmapping = enableBumpmapping;
|
|
||||||
|
|
||||||
vec3 color;
|
vec3 color;
|
||||||
vec2 uv = gl_TexCoord[0].st;
|
vec2 uv = gl_TexCoord[0].st;
|
||||||
|
|
||||||
|
#ifdef NORMALS
|
||||||
|
float use_normalmap = texture2D(useNormalmap,vec2(1.0,1.0)).r;
|
||||||
|
float enable_bumpmapping = enableBumpmapping;
|
||||||
|
|
||||||
if ((enable_bumpmapping == 1.0) && (use_normalmap > 0.0)) {
|
if ((enable_bumpmapping == 1.0) && (use_normalmap > 0.0)) {
|
||||||
vec3 base = texture2D(baseTexture, uv).rgb;
|
vec3 base = texture2D(baseTexture, uv).rgb;
|
||||||
vec3 vVec = normalize(eyeVec);
|
vec3 vVec = normalize(eyeVec);
|
||||||
@ -35,6 +36,9 @@ void main (void)
|
|||||||
} else {
|
} else {
|
||||||
color = texture2D(baseTexture, uv).rgb;
|
color = texture2D(baseTexture, uv).rgb;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
color = texture2D(baseTexture, uv).rgb;
|
||||||
|
#endif
|
||||||
|
|
||||||
float alpha = texture2D(baseTexture, uv).a;
|
float alpha = texture2D(baseTexture, uv).a;
|
||||||
vec4 col = vec4(color.r, color.g, color.b, alpha);
|
vec4 col = vec4(color.r, color.g, color.b, alpha);
|
||||||
|
@ -23,14 +23,16 @@ const float e = 2.718281828459;
|
|||||||
|
|
||||||
void main (void)
|
void main (void)
|
||||||
{
|
{
|
||||||
float use_normalmap = texture2D(useNormalmap,vec2(1.0,1.0)).r;
|
|
||||||
float enable_bumpmapping = enableBumpmapping;
|
|
||||||
|
|
||||||
vec3 color;
|
vec3 color;
|
||||||
vec2 uv = gl_TexCoord[0].st;
|
vec2 uv = gl_TexCoord[0].st;
|
||||||
|
|
||||||
|
#ifdef NORMALS
|
||||||
float height;
|
float height;
|
||||||
vec2 tsEye = vec2(tsEyeVec.x,-tsEyeVec.y);
|
vec2 tsEye = vec2(tsEyeVec.x,-tsEyeVec.y);
|
||||||
|
|
||||||
|
float use_normalmap = texture2D(useNormalmap,vec2(1.0,1.0)).r;
|
||||||
|
float enable_bumpmapping = enableBumpmapping;
|
||||||
|
|
||||||
if ((enableParallaxOcclusion == 1.0) && (use_normalmap > 0.0)) {
|
if ((enableParallaxOcclusion == 1.0) && (use_normalmap > 0.0)) {
|
||||||
float map_height = texture2D(normalTexture, uv).a;
|
float map_height = texture2D(normalTexture, uv).a;
|
||||||
if (map_height < 1.0){
|
if (map_height < 1.0){
|
||||||
@ -69,6 +71,9 @@ void main (void)
|
|||||||
} else {
|
} else {
|
||||||
color = texture2D(baseTexture, uv).rgb;
|
color = texture2D(baseTexture, uv).rgb;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
color = texture2D(baseTexture, uv).rgb;
|
||||||
|
#endif
|
||||||
|
|
||||||
float alpha = texture2D(baseTexture, uv).a;
|
float alpha = texture2D(baseTexture, uv).a;
|
||||||
vec4 col = vec4(color.r, color.g, color.b, alpha);
|
vec4 col = vec4(color.r, color.g, color.b, alpha);
|
||||||
|
@ -673,6 +673,15 @@ ShaderInfo generate_shader(std::string name, IrrlichtDevice *device,
|
|||||||
if(vertex_program == "" && pixel_program == "" && geometry_program == "")
|
if(vertex_program == "" && pixel_program == "" && geometry_program == "")
|
||||||
return shaderinfo;
|
return shaderinfo;
|
||||||
|
|
||||||
|
if (g_settings->getBool("enable_bumpmapping") || g_settings->getBool("enable_parallax_occlusion")) {
|
||||||
|
if(vertex_program != "")
|
||||||
|
vertex_program = "#define NORMALS\n" + vertex_program;
|
||||||
|
if(pixel_program != "")
|
||||||
|
pixel_program = "#define NORMALS\n" + pixel_program;
|
||||||
|
if(geometry_program != "")
|
||||||
|
geometry_program = "#define NORMALS\n" + geometry_program;
|
||||||
|
}
|
||||||
|
|
||||||
// Call addHighLevelShaderMaterial() or addShaderMaterial()
|
// Call addHighLevelShaderMaterial() or addShaderMaterial()
|
||||||
const c8* vertex_program_ptr = 0;
|
const c8* vertex_program_ptr = 0;
|
||||||
const c8* pixel_program_ptr = 0;
|
const c8* pixel_program_ptr = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user