uniforms { mat4 world; mat4 view; mat4 projection; vec4 campos; //w is set to fade factor (distance, at wich fog color completely overrides pixel color) vec4 highlightcolor; vec4 fogsettings; vec4 fogcolor; samplerCube texture1; } shader world3d_skybox { in { vec3 Position; vec4 Color; vec2 TextureCoordinate; vec3 Normal; } v2f { vec3 Tex; vec4 viewpos; } out { vec4 FragColor; } vertex { v2f.viewpos = view * world * vec4(in.Position, 1.0); gl_Position = projection * v2f.viewpos; vec3 worldpos = (world * vec4(in.Position, 1.0)).xyz; vec4 skynormal = vec4(0.0, 1.0, 0.0, 0.0); vec3 normal = normalize((world * skynormal).xyz); v2f.Tex = reflect(worldpos - campos.xyz, normal); } fragment { vec4 ncolor = texture(texture1, v2f.Tex); out.FragColor = vec4(highlightcolor.rgb * highlightcolor.a + (ncolor.rgb - 0.4 * highlightcolor.a), 1.0); #if defined(ALPHA_TEST) if (out.FragColor.a < 0.5) discard; #endif if (fogsettings.x >= 0.0) out.FragColor = mix(out.FragColor, fogcolor, clamp((-v2f.viewpos.z - fogsettings.x) / (fogsettings.y - fogsettings.x), 0.0, 1.0)); } }