Test를 하기 위해서 게임중에서 Shader를 변형시키는 스크립트를 하나 만들었습니다.

셰이더가 프레임 영향에 엄청 준다는것을 다시한번 느끼게 하는 테스트 였습니다.

 

 

더보기
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ShaderChangeAll : MonoBehaviour
{
    private bool isLow = false;

    void Update()
    {
        // F9 키가 눌려진 경우
        if (Input.GetKeyDown(KeyCode.F9))
        {
            if (isLow)
            {
                // 셰이더를 "BG/BG_Lit"로 변경합니다.
                ChangeShader("BG/BG_Lit_Low", "BG/BG_Lit");
                ChangeShader("BG/BG_GPU_instance_Low", "BG/BG_GPU_instance");
                ChangeShader("/BG/BG_Crowd_Low", "BG/BG_Crowd");

                isLow = false;
            }
            else
            {
                // 셰이더를 "BG/BG_Lit_LOW"로 변경합니다.
                ChangeShader("BG/BG_Lit", "BG/BG_Lit_Low");
                ChangeShader("BG/BG_GPU_instance", "BG/BG_GPU_instance_Low");
                ChangeShader("BG/BG_Crowd", "BG/BG_Crowd_Low");


                isLow = true;
            }
        }
    }

    void ChangeShader(string originalShader, string newShaderName)
    {
        Shader newShader = Shader.Find(newShaderName);

        // 모든 렌더러를 찾습니다.
        Renderer[] renderers = FindObjectsOfType<Renderer>();
        foreach (var renderer in renderers)
        {
            // Layer를 체크하여 변경하지 않을 오브젝트를 건너뛰기
            if (renderer.gameObject.layer == LayerMask.NameToLayer("BgSet"))
                continue;

            // 각각의 재질에 대해 셰이더를 변경합니다.
            for (int i = 0; i < renderer.sharedMaterials.Length; i++)
            {
                Material material = renderer.sharedMaterials[i];

                // 현재 셰이더가 원래 셰이더인지 확인합니다.
                if (material.shader.name == originalShader)
                {
                    // 새 셰이더를 적용합니다.
                    material.shader = newShader;
                }
            }
        }
    }




}

'업무일지' 카테고리의 다른 글

업무일지 <시스템 관리자>  (0) 2023.06.14
업무일지 <배경추가>  (0) 2023.06.09
업무일지 <HDRP CustomLight>  (0) 2023.05.23
업무일지 <Frame>  (0) 2023.05.22
업무일지 <연출 작업>  (0) 2023.05.18