问题也许很简单: 我不知道如何获取天空盒并将其应用于我的着色器。
我想我已经接近了,但是如何从场景中拿出天空盒?
mygameobjec.GetComponent<Renderer>().material.SetTexture("_SkyReflection",Skybox.material.Texture??);
谢谢
答案 0 :(得分:0)
尝试使用RenderSettings.skybox.mainTexture。
https://docs.unity3d.com/ScriptReference/RenderSettings-skybox.html
一个技巧:也可以从一个名为unity_SpecCube0的全局着色器访问着色器内部的当前反射环境。这是我在着色器中经常使用的功能:
// Returns the reflection color given a normal and view direction.
inline half3 SurfaceReflection(half3 viewDir, half3 worldNormal, half roughness) {
half3 worldRefl = reflect(-viewDir, worldNormal);
half r = roughness * 1.7 - 0.7 * roughness;
float4 reflData = UNITY_SAMPLE_TEXCUBE_LOD(
unity_SpecCube0, worldRefl, r * 6
);
return DecodeHDR (reflData, unity_SpecCube0_HDR);
}