X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=shader_glsl.h;h=ae82899ddfedaeddb7e5749adc46256b3ba2d070;hp=1b0c1b18311b528ed1aa54097f593bd9fe2b1d3f;hb=db7cb0d2dd2d8aa7fb7dba7b9b6bf193d8df6d34;hpb=dbd8e60c7e473f960271f3f52d66382e205001db diff --git a/shader_glsl.h b/shader_glsl.h index 1b0c1b18..ae82899d 100644 --- a/shader_glsl.h +++ b/shader_glsl.h @@ -25,6 +25,7 @@ "# define dp_texture2D texture\n" "# define dp_texture3D texture\n" "# define dp_textureCube texture\n" +"# define dp_shadow2D(a,b) texture(a,b)\n" "#else\n" "# ifdef FRAGMENT_SHADER\n" "# define dp_FragColor gl_FragColor\n" @@ -37,6 +38,7 @@ "# define dp_texture2D texture2D\n" "# define dp_texture3D texture3D\n" "# define dp_textureCube textureCube\n" +"# define dp_shadow2D(a,b) float(shadow2D(a,b))\n" "#endif\n" "\n" "#ifdef VERTEX_SHADER\n" @@ -346,15 +348,12 @@ "#ifdef FRAGMENT_SHADER\n" "uniform sampler2D Texture_Normal;\n" "uniform sampler2D Texture_Refraction;\n" -"uniform sampler2D Texture_Reflection;\n" "\n" "uniform mediump vec4 DistortScaleRefractReflect;\n" "uniform mediump vec4 ScreenScaleRefractReflect;\n" "uniform mediump vec4 ScreenCenterRefractReflect;\n" "uniform mediump vec4 RefractColor;\n" "uniform mediump vec4 ReflectColor;\n" -"uniform mediump float ReflectFactor;\n" -"uniform mediump float ReflectOffset;\n" "uniform highp float ClientTime;\n" "#ifdef USENORMALMAPSCROLLBLEND\n" "uniform highp vec2 NormalmapScrollBlend;\n" @@ -368,9 +367,9 @@ " #ifdef USENORMALMAPSCROLLBLEND\n" " vec3 normal = dp_texture2D(Texture_Normal, (TexCoord + vec2(0.08, 0.08)*ClientTime*NormalmapScrollBlend.x*0.5)*NormalmapScrollBlend.y).rgb - vec3(1.0);\n" " normal += dp_texture2D(Texture_Normal, (TexCoord + vec2(-0.06, -0.09)*ClientTime*NormalmapScrollBlend.x)*NormalmapScrollBlend.y*0.75).rgb;\n" -" vec2 ScreenTexCoord = SafeScreenTexCoord + vec3(normalize(myhalf3(normal))).xy * DistortScaleRefractReflect.zw;\n" +" vec2 ScreenTexCoord = SafeScreenTexCoord + vec3(normalize(myhalf3(normal))).xy * DistortScaleRefractReflect.xy;\n" " #else\n" -" vec2 ScreenTexCoord = SafeScreenTexCoord + vec3(normalize(myhalf3(offsetMappedTexture2D(Texture_Normal)) - myhalf3(0.5))).xy * DistortScaleRefractReflect.zw;\n" +" vec2 ScreenTexCoord = SafeScreenTexCoord + vec3(normalize(myhalf3(dp_texture2D(Texture_Normal, TexCoord)) - myhalf3(0.5))).xy * DistortScaleRefractReflect.xy;\n" " #endif\n" " // FIXME temporary hack to detect the case that the reflection\n" " // gets blackened at edges due to leaving the area that contains actual\n" @@ -701,11 +700,11 @@ "\n" "# ifdef USESHADOWSAMPLER\n" "# ifdef USESHADOWMAPPCF\n" -"# define texval(x, y) shadow2D(Texture_ShadowMap2D, vec3(center + vec2(x, y)*ShadowMap_TextureScale, shadowmaptc.z)).r \n" +"# define texval(x, y) dp_shadow2D(Texture_ShadowMap2D, vec3(center + vec2(x, y)*ShadowMap_TextureScale, shadowmaptc.z)) \n" " vec2 center = shadowmaptc.xy*ShadowMap_TextureScale;\n" " f = dot(vec4(0.25), vec4(texval(-0.4, 1.0), texval(-1.0, -0.4), texval(0.4, -1.0), texval(1.0, 0.4)));\n" "# else\n" -" f = shadow2D(Texture_ShadowMap2D, vec3(shadowmaptc.xy*ShadowMap_TextureScale, shadowmaptc.z)).r;\n" +" f = dp_shadow2D(Texture_ShadowMap2D, vec3(shadowmaptc.xy*ShadowMap_TextureScale, shadowmaptc.z));\n" "# endif\n" "# else\n" "# ifdef USESHADOWMAPPCF\n" @@ -915,22 +914,26 @@ " fade *= ShadowMapCompare(CubeVector);\n" "#endif\n" "\n" -"#ifdef USEDIFFUSE\n" -" gl_FragData[0] = vec4((DeferredColor_Ambient + DeferredColor_Diffuse * diffuse) * fade, 1.0);\n" -"#else\n" -" gl_FragData[0] = vec4(DeferredColor_Ambient * fade, 1.0);\n" -"#endif\n" "#ifdef USESPECULAR\n" +" gl_FragData[0] = vec4((DeferredColor_Ambient + DeferredColor_Diffuse * diffuse) * fade, 1.0);\n" " gl_FragData[1] = vec4(DeferredColor_Specular * (specular * fade), 1.0);\n" -"#else\n" -" gl_FragData[1] = vec4(0.0, 0.0, 0.0, 1.0);\n" -"#endif\n" -"\n" "# ifdef USECUBEFILTER\n" " vec3 cubecolor = dp_textureCube(Texture_Cube, CubeVector).rgb;\n" " gl_FragData[0].rgb *= cubecolor;\n" " gl_FragData[1].rgb *= cubecolor;\n" "# endif\n" +"#else\n" +"# ifdef USEDIFFUSE\n" +" gl_FragColor = vec4((DeferredColor_Ambient + DeferredColor_Diffuse * diffuse) * fade, 1.0);\n" +"# else\n" +" gl_FragColor = vec4(DeferredColor_Ambient * fade, 1.0);\n" +"# endif\n" +"# ifdef USECUBEFILTER\n" +" vec3 cubecolor = dp_textureCube(Texture_Cube, CubeVector).rgb;\n" +" gl_FragColor.rgb *= cubecolor;\n" +"# endif\n" +"#endif\n" +" \n" "}\n" "#endif // FRAGMENT_SHADER\n" "#else // !MODE_DEFERREDLIGHTSOURCE\n" @@ -969,6 +972,9 @@ "\n" "#ifdef USEBOUNCEGRID\n" " BounceGridTexCoord = vec3(BounceGridMatrix * Attrib_Position);\n" +"#ifdef USEBOUNCEGRIDDIRECTIONAL\n" +" BounceGridTexCoord.z *= 0.125;\n" +"#endif\n" "#endif\n" "\n" "#ifdef MODE_LIGHTSOURCE\n" @@ -1073,6 +1079,7 @@ "#ifdef USEBOUNCEGRID\n" "uniform sampler3D Texture_BounceGrid;\n" "uniform float BounceGridIntensity;\n" +"uniform highp mat4 BounceGridMatrix;\n" "#endif\n" "uniform highp float ClientTime;\n" "#ifdef USENORMALMAPSCROLLBLEND\n" @@ -1267,14 +1274,24 @@ "\n" "#ifdef USEBOUNCEGRID\n" "#ifdef USEBOUNCEGRIDDIRECTIONAL\n" -" myhalf4 bouncegrid_coeff1 = myhalf4(dp_texture3D(Texture_BounceGrid, BounceGridTexCoord )) * 2.0 + myhalf4(-1.0, -1.0, -1.0, -1.0);\n" -" myhalf4 bouncegrid_coeff2 = myhalf4(dp_texture3D(Texture_BounceGrid, BounceGridTexCoord + vec3(0.0, 0.0, 0.25))) * 2.0 + myhalf4(-1.0, -1.0, -1.0, -1.0);\n" -" myhalf4 bouncegrid_coeff3 = myhalf4(dp_texture3D(Texture_BounceGrid, BounceGridTexCoord + vec3(0.0, 0.0, 0.50))) * 2.0 + myhalf4(-1.0, -1.0, -1.0, -1.0);\n" -" // bouncegrid_coeff4 is the bentnormal (average light direction), if that is useful for anything (can be used for specular)\n" -"// myhalf4 bouncegrid_coeff4 = myhalf4(dp_texture3D(Texture_BounceGrid, BounceGridTexCoord + vec3(0.0, 0.0, 0.75))) * 2.0 + myhalf4(-1.0, -1.0, -1.0, -1.0);\n" -" myhalf4 bouncegrid_dir = myhalf4((surfacenormal.x * VectorS.xyz + surfacenormal.y * VectorT.xyz + surfacenormal.z * VectorR.xyz), 1.0);\n" -" myhalf3 bouncegrid_light = myhalf3(dot(bouncegrid_coeff1, bouncegrid_dir), dot(bouncegrid_coeff2, bouncegrid_dir), dot(bouncegrid_coeff3, bouncegrid_dir));\n" +"// myhalf4 bouncegrid_coeff1 = myhalf4(dp_texture3D(Texture_BounceGrid, BounceGridTexCoord ));\n" +"// myhalf4 bouncegrid_coeff2 = myhalf4(dp_texture3D(Texture_BounceGrid, BounceGridTexCoord + vec3(0.0, 0.0, 0.125))) * 2.0 + myhalf4(-1.0, -1.0, -1.0, -1.0);\n" +" myhalf4 bouncegrid_coeff3 = myhalf4(dp_texture3D(Texture_BounceGrid, BounceGridTexCoord + vec3(0.0, 0.0, 0.250)));\n" +" myhalf4 bouncegrid_coeff4 = myhalf4(dp_texture3D(Texture_BounceGrid, BounceGridTexCoord + vec3(0.0, 0.0, 0.375)));\n" +" myhalf4 bouncegrid_coeff5 = myhalf4(dp_texture3D(Texture_BounceGrid, BounceGridTexCoord + vec3(0.0, 0.0, 0.500)));\n" +" myhalf4 bouncegrid_coeff6 = myhalf4(dp_texture3D(Texture_BounceGrid, BounceGridTexCoord + vec3(0.0, 0.0, 0.625)));\n" +" myhalf4 bouncegrid_coeff7 = myhalf4(dp_texture3D(Texture_BounceGrid, BounceGridTexCoord + vec3(0.0, 0.0, 0.750)));\n" +" myhalf4 bouncegrid_coeff8 = myhalf4(dp_texture3D(Texture_BounceGrid, BounceGridTexCoord + vec3(0.0, 0.0, 0.875)));\n" +" myhalf3 bouncegrid_dir = normalize(mat3(BounceGridMatrix) * (surfacenormal.x * VectorS.xyz + surfacenormal.y * VectorT.xyz + surfacenormal.z * VectorR.xyz));\n" +" myhalf3 bouncegrid_dirp = max(myhalf3(0.0, 0.0, 0.0), bouncegrid_dir);\n" +" myhalf3 bouncegrid_dirn = max(myhalf3(0.0, 0.0, 0.0), -bouncegrid_dir);\n" +"// bouncegrid_dirp = bouncegrid_dirn = myhalf3(1.0,1.0,1.0);\n" +" myhalf3 bouncegrid_light = myhalf3(\n" +" dot(bouncegrid_coeff3.xyz, bouncegrid_dirp) + dot(bouncegrid_coeff6.xyz, bouncegrid_dirn),\n" +" dot(bouncegrid_coeff4.xyz, bouncegrid_dirp) + dot(bouncegrid_coeff7.xyz, bouncegrid_dirn),\n" +" dot(bouncegrid_coeff5.xyz, bouncegrid_dirp) + dot(bouncegrid_coeff8.xyz, bouncegrid_dirn));\n" " color.rgb += diffusetex * bouncegrid_light * BounceGridIntensity;\n" +"// color.rgb = bouncegrid_dir.rgb * 0.5 + vec3(0.5, 0.5, 0.5);\n" "#else\n" " color.rgb += diffusetex * myhalf3(dp_texture3D(Texture_BounceGrid, BounceGridTexCoord)) * BounceGridIntensity;\n" "#endif\n" @@ -1298,7 +1315,11 @@ " //vec4 ScreenTexCoord = (ModelViewProjectionPosition.xyxy + normalize(myhalf3(offsetMappedTexture2D(Texture_Normal)) - myhalf3(0.5)).xyxy * DistortScaleRefractReflect * 100) * ScreenScaleRefractReflectIW + ScreenCenterRefractReflect;\n" " vec2 SafeScreenTexCoord = ModelViewProjectionPosition.xy * ScreenScaleRefractReflectIW.zw + ScreenCenterRefractReflect.zw;\n" " #ifdef USENORMALMAPSCROLLBLEND\n" +"# ifdef USEOFFSETMAPPING\n" +" vec3 normal = dp_textureGrad(Texture_Normal, (TexCoord + vec2(0.08, 0.08)*ClientTime*NormalmapScrollBlend.x*0.5)*NormalmapScrollBlend.y, dPdx*NormalmapScrollBlend.y, dPdy*NormalmapScrollBlend.y).rgb - vec3(1.0);\n" +"# else\n" " vec3 normal = dp_texture2D(Texture_Normal, (TexCoord + vec2(0.08, 0.08)*ClientTime*NormalmapScrollBlend.x*0.5)*NormalmapScrollBlend.y).rgb - vec3(1.0);\n" +"# endif\n" " normal += dp_texture2D(Texture_Normal, (TexCoord + vec2(-0.06, -0.09)*ClientTime*NormalmapScrollBlend.x)*NormalmapScrollBlend.y*0.75).rgb;\n" " vec2 ScreenTexCoord = SafeScreenTexCoord + vec3(normalize(myhalf3(normal))).xy * DistortScaleRefractReflect.zw;\n" " #else\n"