首页 > 解决方案 > 表面着色器输入结构中的 IN.worldRefl 是什么?

问题描述

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

Unity对它的描述很差:

float3 worldRefl -如果表面着色器 不写入 o.Normal ,则包含世界反射向量。

标签: unity3dshadercgshaderlab

解决方案


我已经研究了几天了,我有预感是什么IN.worldRefl意思。

首先我看到了这张图片(在这里找到):

在此处输入图像描述

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

例如,当一组的发射为SurfaceOutput立方体贴图的纹理在对应的位置IN.worldRefl,即

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

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

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


推荐阅读