"{\n"
" vec3 adir = abs(dir);\n"
"# ifndef USESHADOWMAPVSDCT\n"
-"# ifdef USESHADOWMAPRECT\n"
-"# define cubedir(dx, dy, ox, oy) { tc = vec2(dx, dy); offset = vec2(ox, oy); }\n"
-"# else\n"
-"# define cubedir(dx, dy, ox, oy) { tc = vec2(dx, dy); offset = vec2(ox/2.0, oy/4.0); }\n"
-"# endif\n"
" vec2 tc;\n"
" vec2 offset;\n"
" float ma;\n"
" if (adir.x > adir.z)\n"
" {\n"
" ma = adir.x;\n"
-" if (dir.x >= 0.0) cubedir(-dir.z, -dir.y, 0.5, 0.5) // +X\n"
-" else cubedir( dir.z, -dir.y, 1.5, 0.5) // -X\n"
+" if (dir.x >= 0.0) { tc = vec2(-dir.z, -dir.y); offset = vec2(0.5, 0.5); } // +X\n"
+" else { tc = vec2( dir.z, -dir.y); offset = vec2(1.5, 0.5); } // -X\n"
" }\n"
" else\n"
" {\n"
" ma = adir.z;\n"
-" if (dir.z >= 0.0) cubedir( dir.x, -dir.y, 0.5, 2.5) // +Z\n"
-" else cubedir(-dir.x, -dir.y, 1.5, 2.5) // -Z\n"
+" if (dir.z >= 0.0) { tc = vec2( dir.x, -dir.y); offset = vec2(0.5, 2.5); } // +Z\n"
+" else { tc = vec2(-dir.x, -dir.y); offset = vec2(1.5, 2.5); } // -Z\n"
" }\n"
" }\n"
" else\n"
" if (adir.y > adir.z)\n"
" {\n"
" ma = adir.y;\n"
-" if (dir.y >= 0.0) cubedir( dir.x, dir.z, 0.5, 1.5) // +Y\n"
-" else cubedir( dir.x, -dir.z, 1.5, 1.5) // -Y\n"
+" if (dir.y >= 0.0) { tc = vec2( dir.x, dir.z); offset = vec2(0.5, 1.5); } // +Y\n"
+" else { tc = vec2( dir.x, -dir.z); offset = vec2(1.5, 1.5); } // -Y\n"
" }\n"
" else\n"
" {\n"
" ma = adir.z;\n"
-" if (dir.z >= 0.0) cubedir( dir.x, -dir.y, 0.5, 2.5) // +Z\n"
-" else cubedir(-dir.x, -dir.y, 1.5, 2.5) // -Z\n"
+" if (dir.z >= 0.0) { tc = vec2( dir.x, -dir.y); offset = vec2(0.5, 2.5); } // +Z\n"
+" else { tc = vec2(-dir.x, -dir.y); offset = vec2(1.5, 2.5); } // -Z\n"
" }\n"
" }\n"
"\n"
-"# ifdef USESHADOWMAPRECT\n"
-" return vec3(tc * ShadowMap_Parameters.x, ShadowMap_Parameters.w) / ma + vec3(offset * ShadowMap_Parameters.y, ShadowMap_Parameters.z);\n"
-"# else\n"
-" return vec3(tc * ShadowMap_Parameters.xy, ShadowMap_Parameters.w) / ma + vec3(offset, ShadowMap_Parameters.z);\n"
-"# endif\n"
+" vec3 stc = vec3(tc * ShadowMap_Parameters.x, ShadowMap_Parameters.w) / ma + vec3(offset * ShadowMap_Parameters.y, ShadowMap_Parameters.z);\n"
+" stc.xy *= ShadowMap_TextureScale.xy;\n"
+" return stc;\n"
"# else\n"
-"# ifdef USESHADOWMAPRECT \n"
-" return vec3(textureCube(Texture_CubeProjection, dir.xyz).ra * ShadowMap_TextureScale.xy, ShadowMap_Parameters.z + ShadowMap_Parameters.w / max(max(adir.x, adir.y), adir.z));\n"
-"# else\n"
-" return vec3(textureCube(Texture_CubeProjection, dir.xyz).ra, ShadowMap_Parameters.z + ShadowMap_Parameters.w / max(max(adir.x, adir.y), adir.z));\n"
-"# endif\n"
+" return vec3(textureCube(Texture_CubeProjection, dir.xyz).ra * ShadowMap_Parameters.xy, ShadowMap_Parameters.z + ShadowMap_Parameters.w / max(max(adir.x, adir.y), adir.z));\n"
"# endif\n"
"}\n"
"#endif // defined(USESHADOWMAPRECT) || defined(USESHADOWMAP2D)\n"