일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 개인 바이트
- URP
- 작업 집합
- Rim Light
- Toon Shader
- 프로그래밍 기초
- VR
- Cell Shader
- 메모리 누수
- 벡터
- Cell Look
- Private Bytes
- Cartoon Rendering
- Specular
- 게임 수학
- C언어
- 가상 바이트
- Windows Build
- Virtual Byte
- AppSW
- OculusMotionVectorPass
- ColorGradingLutPass
- ASW(Application SpaceWarp)
- Three(Two) Tone Shading
- 3d
- URP로 변경
- working set
- Today
- Total
목록Unity/URP or Shader 관련 (37)
WinCNT
서론 배경 아티스트 분께서 Skybox에 Fog를 표현하고 싶다고 요청한 적이 있다 배경 오브젝트에는 Fog가 걸리지만 그 뒤의 Skybox에는 Fog가 생기지 않아서 위화감이 생긴다는 이유였다 당시의 필자는 Fog를 그 존재밖에 몰라서 대충 왜 그런지에 대해서 뇌피셜로 얘기하며 대응되는 셰이더를 만들겠다는 말을 남기고 호다닥 그 자리에서 도망쳤었다 다행히 뇌피셜로 떠든 게 대부분 사실이었다 우선은 Fog가 어떻게 적용되는지 알아보자 Default의 스카이박스는 물론이고 내장된 다른 Skybox 셰이더도 유니티에서 바로 볼 순 없다 그렇다고 아예 방법이 없는 것은 아니지! Download Archive Download Archive Download Archive unity.com 예전에도 한 번 작성한 ..
서론 여태까지 필자는 포스트 프로세싱을 위해서는 최소 4개의 버텍스를 가진 쿼드가 있어야 한다는 고정관념에 빠져 살아왔다 하지만 매우 충격적이게도 단 3개의 버텍스, 즉 삼각형으로 풀 스크린의 쿼드를 대신할 수 있다는 것을 알아버리고 말았다 이름하여 Full Screen Triangle!! 이 글은 풀 스크린 트라이앵글에 대해서 알게 된 내용을 정리한 글이다 참고로 Full Screen Triangle이란 단어(유니티의 함수 이름에서 발췌)는 여태까지 알고 있던 Full Screen Quad와 구별하기 위해서 사용하고 있지만, 보통은 둘 다 Full Screen Quad라고 부르는 것 같다 Blit.hlsl 물론 이 방법을 필자가 스스로 생각해낸 건 아니고 아래의 소스 코드에서 사용되고 있었다 com.u..
서론 예산 문제로 아트팀에서 적은 코스트로 몬스터의 다양성을 늘리고 싶다는 과제가 발생했었다 그래서 해결을 위해 셰이더에 팔레트 스왑 기능 추가해봤다 참고로 팔레트 스왑이란 이런 느낌 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 선정 사실 옛날의 팔레트 스왑도 아니고, 단순히 색을 바꾸기 위해서는 마스크와 셰이더에서의 간단한 계산 추가로 구현할 수 있을..
서론 많은 게임들은 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 사용했던 적도 있..
서론 이번에는 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 등에 따라서..
서론 URP 환경에서 AlphaTest 셰이더를 구현하면서 알게 된 내용을 정리해보고자 한다 Cutout? Alpha Test? Alpha Clipping? 이번에 조사하면서 알게된 점은 이 셰이더가 정말 다양한 명칭으로 불린다는 것이었다 일단 이번에 구현하려고 하는 것은 알파 값으로 지정된 부분은 그리지 않고, 그 외의 부분은 그리는 셰이더이다 예를 들어, 다음과 같은 텍스처가 있다고 했을 때 다음과 같이 출력하는 것이 목표이다(아래는 디폴트 머테리얼을 사용한 결과) DirectX에서는 Alpha Test, OpenGL에서는 Cutout이라고 부른다고 하는데, 일단 여기서는 Cutout라고 부르기로 한다 (Alpha Test는 좀 더 광의적인 의미도 있고, Alpha Clipping는 URP의 Lit셰..