일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- VR
- Private Bytes
- URP
- C언어
- ColorGradingLutPass
- Specular
- working set
- Virtual Byte
- 프로그래밍 기초
- Windows Build
- URP로 변경
- 메모리 누수
- ASW(Application SpaceWarp)
- 벡터
- Cartoon Rendering
- OculusMotionVectorPass
- 3d
- 게임 수학
- 개인 바이트
- 가상 바이트
- Cell Look
- 작업 집합
- Three(Two) Tone Shading
- Cell Shader
- Toon Shader
- Rim Light
- AppSW
- Today
- Total
목록전체 글 (258)
WinCNT
서론 예산 문제로 아트팀에서 적은 코스트로 몬스터의 다양성을 늘리고 싶다는 과제가 발생했었다 그래서 해결을 위해 셰이더에 팔레트 스왑 기능 추가해봤다 참고로 팔레트 스왑이란 이런 느낌 https://namu.wiki/w/%ED%8C%94%EB%A0%88%ED%8A%B8%20%EC%8A%A4%EC%99%91 팔레트 스왑 Palette Swap 게임 및 애니메이션에서 색 차분 을 컴퓨터로 구현하는 방법. 부족한 메모리를 아끼는 방법이 namu.wiki 당연히 옛날 하드웨어에서 사용하던 진정한 의미의 팔레트 스왑은 아니고 비슷한 효과를 가지는 셰이더을 만들 뿐이다 Blend modes 선정 사실 옛날의 팔레트 스왑도 아니고, 단순히 색을 바꾸기 위해서는 마스크와 셰이더에서의 간단한 계산 추가로 구현할 수 있을..
발생한 이슈 Directional Light가 없는 Scene에서 매우 강한 노란색의 Emission이 발생하는 이슈가 발생했다 미치고 팔짝 뛸 노릇인게 Unity 2021.3.10f1 Pro에서는 해당 이슈가 발생하지 않았는데, Unity 2021.3.10f1 Personal에서는 발생한다는 점이다… 이슈 상세 다음은 해당 이슈의 스크린샷인데, 가운데에 있는 디폴트 Sphere가 엄청나게 노란색을 뿜어내는 것을 볼 수 있다 사실 노란색을 뿜어내는 것 자체는 포스트 프로세싱 때문이지만, 그걸 끄더라도 렌더링이 정상적이지 않다는 것을 볼 수 있다 발생 원인 해당 이슈의 근본적인 원인까지는 사간 관계상 찾지 못 했다 하지만 직접적인 원인과 해결책은 사수의 도움으로 어떻게든 특정할 수 있었다 직접적인 원인은 ..
서론 전에 커스텀 ShaderGUI를 구현하는 법을 작성한 적이 있었다 https://wincnt-shim.tistory.com/371 Unity에서 커스텀 ShaderGUI를 구현해보자! 그 첫번째 서론 이번에는 Unity에서 커스텀 ShaderGUI를 구현해보기로 했다 ShaderGUI란 특정 셰이더의 머티리얼에 대한 Inspector의 UI를 제작할 수 있게 해주는 클래스라고 생각하면 될 것 같다 이 글에 구현하면 wincnt-shim.tistory.com 그 글을 작성한 뒤로 새롭게 알게 된 방법들이 있어서 추가로 정리하고자 한다 그리고 셰이더 키워드를 On/Off하는 방법도 겸사겸사 정리하고자 한다 ShaderGUI의 존재 의의를 뒤흔드는 MaterialPropertyDrawer 사실 간단한 U..
서론 많은 게임들은 Metallic Map이나 AO Map과 같이 색상 값이 아니라 0~1의 값만 필요한 맵의 경우, 하나의 텍스처로 합치곤 한다 이렇게 텍스처를 합치면 성능상으로 크게 2가지 이점을 얻을 수 있는데, 하나는 메모리를 절약할 수 있다는 점이고, 다른 하나는 텍스처의 샘플링에 의한 부하를 줄일 수 있다는 점이다 뭐 그러한 이론적인 이야기를 제처두고, 실제로 VR기기(Oculus Quest2)에서 텍스처 샘플링에 의한 부하가 어느 정도인지는 직접 해보지 않으면 모르기 때문에 대략적인 방법으로 검증해봤다 사실 사수가 시켰다 사족) 텍스처 컴바인으로 인한 메모리를 절약 사실 텍스처의 원본 이미지(png)의 경우, 채널별로 나누면 용량이 줄어든다 하지만 실제로 게임을 빌드할 때의 텍스처의 용량은 ..
서론 이번에는 카메라와 오브젝트가 가까워졌을 때, 디더링을 통해 오브젝트를 반투명처럼 보이게 만드는 셰이더에 대해서 정리하고자 한다 특허에 대한 얘기를 듣기도 했고, 왜 이러한 이런 기법을 쓰느냐에 대해서도 제법 정리할 보람이 있었다 여기서 말하는 Dithering 셰이더란? 사실 디더링은 여러 분야에서 여러 의미로 사용된다 음향에서도 사용되고 컴퓨터 그래픽 분야에서만 봐도 8비트/16비트 컴퓨터용 게임에 자주 사용된 기법이다 하지만 여기서 다룰 디더링이란 픽셀을 일정 패턴으로 폐기해서 그물망처럼 만들어서 반투명의 효과를 내는 기법을 말한다 참고로 해당 기법은 일본에서는 보통 디더링, 디더 빼기 등으로 불리지만, 디더링을 통한 반투명 표현을 콕 찝어서 말할 때는 Screen-Door Transparenc..
서론 Depth Map은 (카메라) 시점으로부터 물체 표면과의 거리와 관련된 정보가 담긴 Map을 의미한다 한국어로는 깊이 맵(Wikipedia에는 왠지 깊이 지도로 되어 있지만…)이라고도 하고, 일본어로는 深度マップ(심도 맵)으로 부르기도 한다 Depth Map은 진짜 정말로 많은 곳에 쓰이는데 이번에는 애니메이터 분이 PV의 피사계심도(Depth Of Field)에서 쓰고 싶다는 요청이 있어서 만들어봤다 ‘엥? DOF 그거 URP에 이미 있지 않음?’이라 생각할 수 있는데 필자도 그렇게 생각한다 하지만 애니메이터 분의 말을 들어보니, 유니티의 DOF는 키 프레임을 입력하는 방법을 몰라서 개인적으로 영상 제작 쓰기 힘들다고 하시더라 그리고 그냥 카메라 앞에 Quad를 두는 방식이 알기 쉽다고도 하심ㅎㅎ..
서론 Depth Texture를 구현해보던 중에 조금 의문이 생겨서 조금 조사해봤다 참고로 구현하려던 건 아래의 예제이다 Reconstruct the world space positions of pixels from the depth texture | Universal RP | 14.0.8 Reconstruct the world space positions of pixels from the depth texture | Universal RP | 14.0.10 Reconstruct the world space positions of pixels from the depth texture The Unity shader in this example reconstructs the world space positi..
서론 이번에 맡은 일은 기존 셰이더에 MatCaps를 추가하는 일이다 사실 그래픽스를 공부할 때 MatCaps를 배워서 몇 줄 안 되는 코드로 적용했던 기억이 있다 제발 그 기억이 맞기를……. 그래서 MatCap란게 뭐야? MapCap이란 Material Capture의 약자이며, 라이팅 정보를 담은 구체가 그려진 텍스처, 혹은 그 텍스처를 적용한 의사 라이팅 표현을 뜻한다 MatCap을 이용하면 라이팅 처리 없이 가볍게 라이팅을 표현할 수 있다 물론 어디까지나 의사 라이팅 표현이기 때문에 여러 제한이 있다 예를 들어 광원이 없어도 빛난다던가, 카메라 시점에 따라서 아티팩트가 보인다던가 등등 하지만 실제 라이팅 처리보다 매우 가볍기 때문에 예전의 모바일에서 라이팅 처리 대신 MatCap 사용했던 적도 있..
발생한 이슈 CI 빌드 자동화 테스트를 겸해서 Windows용 빌드를 만들어 실행해봤는데, 렌더링이 이상해지는 이슈가 발생했다 에디터나 VR기기(안드로이드)에서는 아무런 이상이 없었는데 Windows용 빌드에서만 이슈가 발생하고 있었다 이슈 상세 여러 조사로 알게 된 것은 카메라의 Post Processing을 끄면 이슈가 발생하지 않는다는 것뿐이었다 이제 이걸 어떡한담... 발생 원인 조사 경위 원인 조사를 위해 수많은 삽질과 시간이 필요했다 씬 복사하기, 프로젝트 버전 올리기, 동일 버전의 새로운 프로젝트 생성해서 같은 환경 구축하기, WinMerge해서 차이나는 파일을 되돌려고 빌드해서 확인하기 최종적으로는 WinMerge로 문제 부분을 특정할 수 있어서 조사해보니 발생 원인은 꽤나 복잡했다 물론 ..
서론 이번에는 UniTask를 이용한 스크립트로 Fade In, Fade Out를 구현해보려고 한다 물론 딱히 UniTask가 아니라 Coroutine도 사용할 수 있지만 모처럼 UniTask를 인스톨했으니 겸사겸사 사용해봤다 Fade In, Fade Out의 구현에 대해 Fade In, Fade Out은 포스트 프로세싱을 이용한 구현이 일반적일 것이다 하지만 그 방법만 있는 것이 아니다!! 다른 방법이 있는데 바로 카메라의 거의 바로 앞에 Quad를 두고, 그 Qaud만 Fade In, Fade Out시키는 방법(…)이다 원리는 매우 간단하다 이 방법은 구현이 간단하고 좀 더 직관적으로 Fade In, Fade Out를 사용할 수 있다는 메리트가 있다 하지만 화면의 비율이나 카메라의 FOV 등에 따라서..