facebook twitter hatena line email

「Unity/Shader/skybox/徐々に変更」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
行1: 行1:
 
公式のCubeBlend.shaderを使って行う
 
公式のCubeBlend.shaderを使って行う
  
#Shaderのdirを作成して、新規でShaderを作り、"Skybox_CubeBlendShader"にファイル名を変更して、こちらをコピー
+
#Shaderのdirを作成して、新規でShaderを作り、"Skybox_CubeBlendShader"にファイル名を変更して、↓をコピー
 
https://github.com/TwoTailsGames/Unity-Built-in-Shaders/blob/master/DefaultResourcesExtra/Cubemaps/CubeBlend.shader
 
https://github.com/TwoTailsGames/Unity-Built-in-Shaders/blob/master/DefaultResourcesExtra/Cubemaps/CubeBlend.shader
 
#Materialを新規作成して、InspectorのShaderを、Skybox/CubeBlendに変更する。
 
#Materialを新規作成して、InspectorのShaderを、Skybox/CubeBlendに変更する。
 
#2箇所のskyboxにcubemapをドラッグして設定。
 
#2箇所のskyboxにcubemapをドラッグして設定。
 
  
 
<pre>
 
<pre>
行47: 行46:
 
}
 
}
 
</pre>
 
</pre>
 +
 +
CubeBlendのShaderは、https://unity.com/releases/editor/archiveのwindowsやmacの"Build in Shaders"からDL。builtin_shaders-2021.3.4f1/DefaultResourcesExtra/Cubemaps/CubeBlend.shaderにもある。

2022年12月6日 (火) 21:39時点における版

公式のCubeBlend.shaderを使って行う

  1. Shaderのdirを作成して、新規でShaderを作り、"Skybox_CubeBlendShader"にファイル名を変更して、↓をコピー

https://github.com/TwoTailsGames/Unity-Built-in-Shaders/blob/master/DefaultResourcesExtra/Cubemaps/CubeBlend.shader

  1. Materialを新規作成して、InspectorのShaderを、Skybox/CubeBlendに変更する。
  2. 2箇所のskyboxにcubemapをドラッグして設定。
using System.Collections;
using UnityEngine;

public class SkyboxCubeBlend : MonoBehaviour
{
    [SerializeField] Material _skyMat = default;
    [SerializeField, Range(0f, 1f)] float _rate = 0.05f;
    Coroutine _coroutine = default;
    Material _runtimeMaterial = default;

    public void Start()
    {
        FadeSkybox();
    }
    public void FadeSkybox()
    {
        if (_coroutine == null)
        {
            _runtimeMaterial = Instantiate(_skyMat);
            RenderSettings.skybox = _runtimeMaterial;
            _coroutine = StartCoroutine(FadeSkyboxRoutine(_rate));
        }
    }

    IEnumerator FadeSkyboxRoutine(float rate)
    {
        float blend = 0f;
        while (blend < 1)
        {
            _runtimeMaterial.SetFloat("_value", blend);
            blend += rate;
            Debug.Log("_value=" + blend);
            yield return null;
        }
        _runtimeMaterial.SetFloat("_value", 1);
        _coroutine = null;
    }
}

CubeBlendのShaderは、https://unity.com/releases/editor/archiveのwindowsやmacの"Build in Shaders"からDL。builtin_shaders-2021.3.4f1/DefaultResourcesExtra/Cubemaps/CubeBlend.shaderにもある。