着色器场景中的立方体贴图天空盒

问题描述 投票:0回答:1

问题,也许很简单:我不知道如何获取天空盒并将其应用于我的着色器。

我认为我已经接近了,但是如何从场景中取出天空盒?

mygameobjec.GetComponent<Renderer>().material.SetTexture("_SkyReflection",Skybox.material.Texture??);

谢谢

c# unity3d shader textures skybox
1个回答
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);
}
© www.soinside.com 2019 - 2024. All rights reserved.