表面着色器输入结构中的 IN.worldRefl 是什么?

What is IN.worldRefl in surface shader Input struct?

这个问题很简单。我不知道 IN.worldRefl 代表什么,我看过一些将它与立方体贴图一起使用的教程,但我仍然一无所知。

Unity的description因为它很差:

float3 worldRefl - contains world reflection vector if surface shader does not write to o.Normal.

我已经研究了几天了,我对 IN.worldRefl 的意思有一种预感。

第一次看到这张图(找到here):

所以我猜测IN.worldRefl是相机光线在物体多边形表面的反射,如图所示。

当一组,比如SurfaceOutput的emission在IN.worldRefl对应的位置是一个立方体贴图的贴图,即

samplerCUBE _Cube;
void surf (Input IN, inout SurfaceOutput o) {
    o.Emission = texCUBE (_Cube, IN.worldRefl).rgb;
}

这意味着,将对象设置在具有给定立方体贴图的立方体内部,相机在对象多边形表面的反射光线将在一个点上穿过立方体。这个点的颜色会在相机光线接触到物体的位置由物体发出。

我可能完全错了,但这对我来说很有意义。