Cubemap Skybox со сцены шейдера - PullRequest
       70

Cubemap Skybox со сцены шейдера

0 голосов
/ 12 октября 2019

Проблема, возможно, простая: я не могу понять, как получить скайбокс и применить его к своему шейдеру.

Я думаю, что я близко, но как мне взять скайбокс со сцены? ?

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

Спасибо

1 Ответ

0 голосов
/ 14 октября 2019

Попробуйте 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);
}
...