메뉴 건너뛰기

조회 수 279 추천 수 0 댓글 0


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

예에에에전에 지금 만들고 있는 게임 초창기에 지형을 어떻게 만들어야 적절할까 싶어서 알게된 Splatmap     요로코롬 ...
조루나 | 2020.06.18

 

 

 

 

인텔 내장 그래픽을 쓰는 LG 그램(2019)는 무려 해상도가 2560*1600 이고, 집에 있는 게임용 컴퓨터 모니터보다 해상도가 높다.

창모드로 해상도 낮춰서 게임을 안 하면 2D 게임 주제에 30프레임 뽑기 바쁜 상황.

물론 여기에는 PostProcessing도 한 몫하고 있지만 이건 뭐 뺄 수가 없으니 그렇다 치더라도

 

프로파일러를 돌려서 뭐가 프레임을 많이 잡아먹나 테스트를 했더니 예전에 만들어 쓰고 있던 MultiTexture 쉐이더였다.

7가지 텍스쳐를 2가지 스플랫맵으로 Lerp 스까스까하고 알파도 적용하는 과정에서 GPU가 많이 부담스러우신듯.

 

그래서 머리를 굴려본 결과 실시간 렌더링 때문에 랙이 걸린다면, 어차피 진행 도중 텍스쳐에 변화도 없으니

아예 Bake를 해서 평범한 스프라이트로 보이게 해버리자는 결론에 도달.

 

 

    private void BakeSMT() {
        Vector4 originSize = _renderer.sprite.bounds.size;
        Texture TEX = _renderer.sharedMaterial.mainTexture; //스프라이트 크기 체크
        if (TEX == null) { //_mainTex가 매터리얼에 안 걸려있고, 스프라이트 렌더러에 걸려 있는 경우
            TEX = _renderer.sprite.texture;
        }
        RenderTexture _rt = new RenderTexture(TEX.width, TEX.height, 0); //렌더 텍스쳐 생성

        Material newMat = Instantiate(_renderer.material);
        newMat.mainTexture = _renderer.sprite.texture; //스프라이트 렌더러를 위한 전용 코드1
        Graphics.Blit(newMat.mainTexture, _rt, newMat, 0); //렌더 텍스쳐로 새 매터리얼 만들고

        //스프라이트 렌더러를 위한 전용 코드2
        Texture2D tex2d = new Texture2D(_rt.width, _rt.height, TextureFormat.RGB24, false, false);
        tex2d.ReadPixels(new Rect(0, 0, _rt.width, _rt.height), 0, 0);
        tex2d.Apply();
        _renderer.sprite = Sprite.Create(tex2d, new Rect(0, 0, TEX.width, TEX.height), new Vector2(0.5f, 0.5f), 100);
        
        _renderer.material = resultSharedMaterial;//Instantiate(resultMaterial);

        Vector4 newSize = _renderer.sprite.bounds.size;
        _renderer.transform.localScale *= originSize.x / newSize.x; //텍스쳐 크기 및 압축에 의한 scale 보정
    }

 

요로코롬 구현을 해보았다.

SpirteRenderer는 _mainTex를 자꾸 지가 건드려서 3D 렌더러에 비해 코드가 좀 더 필요했따.

아무튼 이틀 정도 삽질해서 구현 성공.

 

 

 

 

캡처.PNG

저 퍼런 Transparent 처리가 거의 완전히 사라질 줄 알았더니 그렇진 않고 약 50% 정도 경감.

 

 

 

캡처2.PNG

빌드 게임 내 프레임도 포스트 프로세싱 완전히 끄면 어떻게든 어떻게든 60프레임 근처에서 버텨봄직한 상태가 되었다.

 

 

 

 

갈비지 내장 그래픽 변태 해상도 60프레임을 향하여 며칠 더 삽질을 해봐야 겠쓰요.

 


엮인글

사진 및 파일 첨부

여기에 파일을 끌어 놓거나 왼쪽의 버튼을 클릭하세요.

파일 용량 제한 : 0MB (허용 확장자 : *.*)

0개 첨부 됨 ( / )

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
13 게임 총알 방패막 + 회전회오리슛 1 file 조루나 2020.10.27 291
12 게임 엔터 더 건전 따라서 UI에 현재 무기 그림이 나오게 해달라기에. 1 file 조루나 2020.10.16 307
11 게임 버프버프 2 file 조루나 2020.09.22 235
10 게임 수동 밉맵(mipmap) 3 file 조루나 2020.09.11 323
9 게임 2D 게임이라도 팝콘이 튀기고 싶어 file 조루나 2020.09.09 256
8 게임 뭐! 지도에 캐릭터 위치를 보여달라고! 1 file 조루나 2020.08.20 340
7 게임 씬에 몬스터 박기 편하라고 미리보기 만들기 1 file 조루나 2020.08.12 327
6 음악 직접 만든 신데마스 매쉬업 리믹스 3곡을 올려보겠습니다 2 file deric99 2020.07.31 193
5 게임 남의 쉐이더가 역시 좋구만 file 조루나 2020.07.17 622
» 게임 멀티텍스쳐 쉐이더가 너무 무거워서 최적화를 위해 Bake https://5nani.com/xe/index.php?mid=Creative&document_srl=5407 텍스쳐 쓰까쓰까 쉐이더 (SplatMap) 예에에에전에 지금 만들고 있는 게임 초창기에 지형을 어떻... file 조루나 2020.07.11 279
3 게임 아! Texture의 Mesh Type 너무너무 무섭다. 1 file 조루나 2020.07.07 276
2 게임 텍스쳐 쓰까쓰까 쉐이더 (SplatMap) - UV 스케일링 가능하게 업데이트 1 file 조루나 2020.06.18 397
1 게임 콜라이더 달린 총알 최적화하기 11 file 조루나 2020.06.11 489
Board Pagination Prev 1 2 3 Next
/ 3