게임

배경 하늘 경계선이 마음에 안 들어서 그래디언트 추가

by 조루나 posted Mar 31, 2022
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄


캡처2.PNG

 

원래 16:9 기준으로 만들고, 스마트폰이 좌우로만 길 것이라는 가정하에 만들어왔기에

갤럭시 플립 같은 괴상한 비율을 만나면 이렇게 경계선이 티가 나게 된다.

너무 못 생겼으므로 수정이 필요하당.

 

 

 

 

image.png

 

그래서 아랫쪽 하늘의 스프라이트의 렌더링된 색상을 샘플링한 그래디언트를 넣은 스프라이트를 추가했다.

그래디언트 쉐이더 자체는 일단 구글링해서 대충 주웠고 그것의 색상을 정해야하는데...

 

 

 

        RenderTexture backupRT = RenderTexture.active;
        Texture2D pixelTex = new Texture2D(1, 1);
        if (_renderer.flipY) pixelTex.SetPixel(0, 0, _renderer.sprite.texture.GetPixel((int)_renderer.sprite.rect.x, (int)_renderer.sprite.rect.y));
        else pixelTex.SetPixel(0, 0, _renderer.sprite.texture.GetPixel((int)_renderer.sprite.rect.x, (int)_renderer.sprite.rect.y + (int)_renderer.sprite.rect.height - 1));
        pixelTex.Apply(); //이거 하나 안 했다고 회색나오기냐 0.804f

 

        RenderTexture rendTex = new RenderTexture(1, 1, 0);
        RenderTexture.active = rendTex;

 

        Graphics.Blit(pixelTex, _renderer.material);
        pixelTex.ReadPixels(new Rect(0, 0, 1, 1), 0, 0);
        RenderTexture.active = backupRT;

 

        SkyBoarderAdjustColoring.instance.ColorUpdate(pixelTex.GetPixel(0, 0));

 

 

아래 하늘은 셰이더를 통해서 색상 변조를 하고 있으므로

원본 텍스쳐 + 셰이더를 통한 렌더링 후의 색상을 샘플링해야하므로

 

1픽셀짜리 렌더 텍스쳐를 하나 만들어서 원본 텍스쳐를 샘플링하고

다시 그 셰이더를 사용해서 Graphics.Blit을 해야했다.

 

제작 중에 윗 문단의 pixelTex.Apply();를 안 썼어서
Blit이 회색을 기준으로 자꾸 렌더링을 하는 문제에 4시간은 삽질함.

 

 

 

 

이제 전에 했던 베이크로 최적화까지 하면 되겠...

 

https://5nani.com/xe/index.php?mid=Creative&page=2&document_srl=6561

https://5nani.com/xe/index.php?mid=Creative&document_srl=5407 텍스쳐 쓰까쓰까 쉐이더 (SplatMap)...
조루나 | 2020.07.11

 

 

 

하늘 자체를 베이크하고 나온 스프라이트 결과물을 샘플링하면 Graphics.Blit을 할 필요도 없잖아?

 



Articles

1 2 3