Differential D16243 Diff 58431 source/blender/draw/engines/eevee/shaders/effect_downsample_cube_frag.glsl
Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/engines/eevee/shaders/effect_downsample_cube_frag.glsl
| /** | /** | ||||
| * Simple down-sample shader. Takes the average of the 4 texels of lower mip. | * Simple down-sample shader. Takes the average of the 4 texels of lower mip. | ||||
| */ | */ | ||||
| #pragma BLENDER_REQUIRE(common_math_lib.glsl) | #pragma BLENDER_REQUIRE(common_math_lib.glsl) | ||||
| uniform samplerCube source; | void main() | ||||
| uniform float texelSize; | { | ||||
| flat in int fFace; | |||||
| out vec4 FragColor; | |||||
| /* Global scope arrays get allocated using local memory in Metal. Moving inside function scope to | |||||
| * reduce register pressure. */ | |||||
| const vec3 maj_axes[6] = vec3[6](vec3(1.0, 0.0, 0.0), | const vec3 maj_axes[6] = vec3[6](vec3(1.0, 0.0, 0.0), | ||||
| vec3(-1.0, 0.0, 0.0), | vec3(-1.0, 0.0, 0.0), | ||||
| vec3(0.0, 1.0, 0.0), | vec3(0.0, 1.0, 0.0), | ||||
| vec3(0.0, -1.0, 0.0), | vec3(0.0, -1.0, 0.0), | ||||
| vec3(0.0, 0.0, 1.0), | vec3(0.0, 0.0, 1.0), | ||||
| vec3(0.0, 0.0, -1.0)); | vec3(0.0, 0.0, -1.0)); | ||||
| const vec3 x_axis[6] = vec3[6](vec3(0.0, 0.0, -1.0), | const vec3 x_axis[6] = vec3[6](vec3(0.0, 0.0, -1.0), | ||||
| vec3(0.0, 0.0, 1.0), | vec3(0.0, 0.0, 1.0), | ||||
| vec3(1.0, 0.0, 0.0), | vec3(1.0, 0.0, 0.0), | ||||
| vec3(1.0, 0.0, 0.0), | vec3(1.0, 0.0, 0.0), | ||||
| vec3(1.0, 0.0, 0.0), | vec3(1.0, 0.0, 0.0), | ||||
| vec3(-1.0, 0.0, 0.0)); | vec3(-1.0, 0.0, 0.0)); | ||||
| const vec3 y_axis[6] = vec3[6](vec3(0.0, -1.0, 0.0), | const vec3 y_axis[6] = vec3[6](vec3(0.0, -1.0, 0.0), | ||||
| vec3(0.0, -1.0, 0.0), | vec3(0.0, -1.0, 0.0), | ||||
| vec3(0.0, 0.0, 1.0), | vec3(0.0, 0.0, 1.0), | ||||
| vec3(0.0, 0.0, -1.0), | vec3(0.0, 0.0, -1.0), | ||||
| vec3(0.0, -1.0, 0.0), | vec3(0.0, -1.0, 0.0), | ||||
| vec3(0.0, -1.0, 0.0)); | vec3(0.0, -1.0, 0.0)); | ||||
| void main() | |||||
| { | |||||
| vec2 uvs = gl_FragCoord.xy * texelSize; | vec2 uvs = gl_FragCoord.xy * texelSize; | ||||
| uvs = 2.0 * uvs - 1.0; | uvs = 2.0 * uvs - 1.0; | ||||
| vec3 cubevec = x_axis[fFace] * uvs.x + y_axis[fFace] * uvs.y + maj_axes[fFace]; | vec3 cubevec = x_axis[geom_iface.fFace] * uvs.x + y_axis[geom_iface.fFace] * uvs.y + | ||||
| maj_axes[geom_iface.fFace]; | |||||
| FragColor = textureLod(source, cubevec, 0.0); | FragColor = textureLod(source, cubevec, 0.0); | ||||
| } | } | ||||