We implement cubemap array support for EEVEE's lightcache reflection probes. This removes stretched texels and bottom hemisphere seams artifacts caused by the octahedral projection previously used. This introduce versioning code for the lightcache which will discard any lightcache version that is not compatible. Differential Revision: https://developer.blender.org/D7066
21 lines
504 B
GLSL
21 lines
504 B
GLSL
|
||
vec2 mapping_octahedron(vec3 cubevec, vec2 texel_size)
|
||
{
|
||
/* projection onto octahedron */
|
||
cubevec /= dot(vec3(1.0), abs(cubevec));
|
||
|
||
/* out-folding of the downward faces */
|
||
if (cubevec.z < 0.0) {
|
||
vec2 cubevec_sign = step(0.0, cubevec.xy) * 2.0 - 1.0;
|
||
cubevec.xy = (1.0 - abs(cubevec.yx)) * cubevec_sign;
|
||
}
|
||
|
||
/* mapping to [0;1]ˆ2 texture space */
|
||
vec2 uvs = cubevec.xy * (0.5) + 0.5;
|
||
|
||
/* edge filtering fix */
|
||
uvs = (1.0 - 2.0 * texel_size) * uvs + texel_size;
|
||
|
||
return uvs;
|
||
}
|