예전부터 계속 알아봤던 것중 하나는 Mipmap 제어를 수동으로 할수 있느냐 였습니다.

최근에, 방법을 알게되었는데, 전에 분명히 한번쯤 본거 같네요. 이걸 그때는 그냥 지나쳤던거 같습니다.

 

Mipmap 제어를 카메라에 넣어서 코드로 구현이 가능하다는걸 알았는데...

되긴하는데... 이게 엄청난 포퍼먼스가 먹는군요.

그냥 Mipmap 범위를 수정하고 싶었는데... 이게 계속 update에서 돌고 있어서 엄청난 과부하가 됩니다.

방법은 알았으나... 쓸수 없는 기술이라니...

더보기
using UnityEngine;

public class MipmapController : MonoBehaviour
{
    public Camera mainCamera; // 메인 카메라
    public float thresholdDistance = 10f; // 거리 임계값
    public float nearBias = 0f; // 가까울 때의 Bias 값
    public float farBias = 1f; // 멀 때의 Bias 값

    void Update()
    {
        // 모든 Renderer 컴포넌트를 찾습니다
        Renderer[] renderers = FindObjectsOfType<Renderer>();

        foreach (Renderer rend in renderers)
        {
            // Renderer에 적용된 모든 Material을 순회합니다
            foreach (Material mat in rend.materials)
            {
                // Material에 적용된 모든 Texture를 순회합니다
                foreach (string textureName in mat.GetTexturePropertyNames())
                {
                    Texture texture = mat.GetTexture(textureName);
                    if (texture != null)
                    {
                        // 카메라와의 거리를 계산합니다
                        float distance = Vector3.Distance(mainCamera.transform.position, rend.transform.position);

                        // 거리에 따른 Mipmap Bias를 설정합니다
                        if (distance <= thresholdDistance)
                        {
                            texture.mipMapBias = nearBias;
                        }
                        else
                        {
                            texture.mipMapBias = farBias;
                        }
                    }
                }
            }
        }
    }
}

 

 

그러고보면 유니티 내부에 있는 Mipmap 기능은 정말 뛰어난 기능이라는 생각이 들더군요. 부하없이 된다는게 정말 대단한 기술이라는 생각이 들긴합니다.

 

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

업무일지 <HDRP -> URP로 컨버팅중>  (0) 2024.03.08
업무일지 <그래픽 오류를 찾아라>  (0) 2024.02.19
업무일지 <메모리 테스트>  (0) 2023.11.20
업무일지 <점검툴>  (0) 2023.11.16
업무일지 <Test용 이동>  (0) 2023.10.30