X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=shader_glsl.h;h=570b6748e4dabbc8cfb48ddedc94aeea69d500de;hb=76dc6190b460068fd3a9ac273b3f8f735293e52e;hp=23f3946ceee7cdafe0aee5bc8b66d31806cf9ab2;hpb=7a9f8654e15b98f2696234b33798dbf09893d80b;p=xonotic%2Fdarkplaces.git diff --git a/shader_glsl.h b/shader_glsl.h index 23f3946c..570b6748 100644 --- a/shader_glsl.h +++ b/shader_glsl.h @@ -2,14 +2,8 @@ "// written by Forest 'LordHavoc' Hale\n" "// shadowmapping enhancements by Lee 'eihrul' Salzman\n" "\n" -"// GL ES shaders use precision modifiers, standard GL does not\n" -"#ifndef GL_ES\n" -"#define lowp\n" -"#define mediump\n" -"#define highp\n" -"#endif\n" -"\n" "#ifdef GLSL130\n" +"precision highp float;\n" "# ifdef VERTEX_SHADER\n" "# define dp_varying out\n" "# define dp_attribute in\n" @@ -20,7 +14,7 @@ "# define dp_attribute in\n" "# endif\n" "# define dp_offsetmapping_dFdx dFdx\n" -"# define dp_offsetmapping_dFdy dFdx\n" +"# define dp_offsetmapping_dFdy dFdy\n" "# define dp_textureGrad textureGrad\n" "# define dp_texture2D texture\n" "# define dp_texture3D texture\n" @@ -41,6 +35,14 @@ "# define dp_shadow2D(a,b) float(shadow2D(a,b))\n" "#endif\n" "\n" +"// GL ES and GLSL130 shaders use precision modifiers, standard GL does not\n" +"// in GLSL130 we don't use them though because of syntax differences (can't use precision with inout)\n" +"#ifndef GL_ES\n" +"#define lowp\n" +"#define mediump\n" +"#define highp\n" +"#endif\n" +"\n" "#ifdef VERTEX_SHADER\n" "dp_attribute vec4 Attrib_Position; // vertex\n" "dp_attribute vec4 Attrib_Color; // color\n" @@ -95,11 +97,38 @@ "uniform highp mat4 ModelViewProjectionMatrix;\n" "#endif\n" "\n" +"#ifdef VERTEX_SHADER\n" +"#ifdef USETRIPPY\n" +"// LordHavoc: based on shader code linked at: http://www.youtube.com/watch?v=JpksyojwqzE\n" +"// tweaked scale\n" +"uniform highp float ClientTime;\n" +"vec4 TrippyVertex(vec4 position)\n" +"{\n" +" float worldTime = ClientTime;\n" +" // tweaked for Quake\n" +" worldTime *= 10.0;\n" +" position *= 0.125;\n" +" //~tweaked for Quake\n" +" float distanceSquared = (position.x * position.x + position.z * position.z);\n" +" position.y += 5.0*sin(distanceSquared*sin(worldTime/143.0)/1000.0);\n" +" float y = position.y;\n" +" float x = position.x;\n" +" float om = sin(distanceSquared*sin(worldTime/256.0)/5000.0) * sin(worldTime/200.0);\n" +" position.y = x*sin(om)+y*cos(om);\n" +" position.x = x*cos(om)-y*sin(om);\n" +" return position;\n" +"}\n" +"#endif\n" +"#endif\n" +"\n" "#ifdef MODE_DEPTH_OR_SHADOW\n" "#ifdef VERTEX_SHADER\n" "void main(void)\n" "{\n" " gl_Position = ModelViewProjectionMatrix * Attrib_Position;\n" +"#ifdef USETRIPPY\n" +" gl_Position = TrippyVertex(gl_Position);\n" +"#endif\n" "}\n" "#endif\n" "#else // !MODE_DEPTH_ORSHADOW\n" @@ -113,6 +142,9 @@ "{\n" " gl_Position = ModelViewProjectionMatrix * Attrib_Position;\n" " VertexColor = vec4(gl_Position.z, gl_Position.z, gl_Position.z, 1.0);\n" +"#ifdef USETRIPPY\n" +" gl_Position = TrippyVertex(gl_Position);\n" +"#endif\n" "}\n" "#endif\n" "\n" @@ -260,6 +292,9 @@ " TexCoord2 = Attrib_TexCoord1.xy;\n" "#endif\n" " gl_Position = ModelViewProjectionMatrix * Attrib_Position;\n" +"#ifdef USETRIPPY\n" +" gl_Position = TrippyVertex(gl_Position);\n" +"#endif\n" "}\n" "#endif\n" "\n" @@ -270,6 +305,9 @@ "#ifdef USESPECULAR\n" "uniform sampler2D Texture_Second;\n" "#endif\n" +"#ifdef USEGAMMARAMPS\n" +"uniform sampler2D Texture_GammaRamps;\n" +"#endif\n" "\n" "void main(void)\n" "{\n" @@ -294,6 +332,11 @@ " dp_FragColor = mix(dp_FragColor, tex2, tex2.a);\n" "# endif\n" "#endif\n" +"#ifdef USEGAMMARAMPS\n" +" dp_FragColor.r = dp_texture2D(Texture_GammaRamps, vec2(dp_FragColor.r, 0)).r;\n" +" dp_FragColor.g = dp_texture2D(Texture_GammaRamps, vec2(dp_FragColor.g, 0)).g;\n" +" dp_FragColor.b = dp_texture2D(Texture_GammaRamps, vec2(dp_FragColor.b, 0)).b;\n" +"#endif\n" "}\n" "#endif\n" "#else // !MODE_GENERIC\n" @@ -342,6 +385,9 @@ " TexCoord = vec2(TexMatrix * Attrib_TexCoord0);\n" " gl_Position = ModelViewProjectionMatrix * Attrib_Position;\n" " ModelViewProjectionPosition = gl_Position;\n" +"#ifdef USETRIPPY\n" +" gl_Position = TrippyVertex(gl_Position);\n" +"#endif\n" "}\n" "#endif\n" "\n" @@ -406,6 +452,9 @@ " EyeVector.z = dot(EyeRelative, Attrib_TexCoord3.xyz);\n" " gl_Position = ModelViewProjectionMatrix * Attrib_Position;\n" " ModelViewProjectionPosition = gl_Position;\n" +"#ifdef USETRIPPY\n" +" gl_Position = TrippyVertex(gl_Position);\n" +"#endif\n" "}\n" "#endif\n" "\n" @@ -811,6 +860,9 @@ " VectorT = (ModelViewMatrix * vec4(Attrib_TexCoord2.xyz, 0));\n" " VectorR = (ModelViewMatrix * vec4(Attrib_TexCoord3.xyz, 0));\n" " gl_Position = ModelViewProjectionMatrix * Attrib_Position;\n" +"#ifdef USETRIPPY\n" +" gl_Position = TrippyVertex(gl_Position);\n" +"#endif\n" "}\n" "#endif // VERTEX_SHADER\n" "\n" @@ -1027,7 +1079,7 @@ "# endif\n" "#endif\n" "\n" -" // transform vertex to camera space, using ftransform to match non-VS rendering\n" +" // transform vertex to clipspace (post-projection, but before perspective divide by W occurs)\n" " gl_Position = ModelViewProjectionMatrix * Attrib_Position;\n" "\n" "#ifdef USESHADOWMAPORTHO\n" @@ -1037,6 +1089,9 @@ "#ifdef USEREFLECTION\n" " ModelViewProjectionPosition = gl_Position;\n" "#endif\n" +"#ifdef USETRIPPY\n" +" gl_Position = TrippyVertex(gl_Position);\n" +"#endif\n" "}\n" "#endif // VERTEX_SHADER\n" "\n"