是否有一种方法/方法/功能需要一个世界空间方向矢量,并在“ latlong”格式的HDR纹理上获取正确的像素?
使用立方体贴图(textureCube)很容易,但是我需要在World Space中使用texture2D latlong HDR一次性完成此操作。
我在网上找到了这个,但是对我来说却产生了一个混乱的投影:
const vec2 invAtan = vec2(0.1591, 0.3183);
vec2 SampleSphericalMap(vec3 v)
{
vec2 uv = vec2(atan(v.z, v.x), asin(v.y));
uv *= invAtan;
uv += 0.5;
return uv;
}
它应该包含一个世界空间矢量,但是当我将其传递给片段着色器中网格的面法线矢量时,映射会发生疯狂的扭曲……
以前有人做过吗?