배움엔 끝이없다/그래픽스(4)
-
GPU를 위한 텍스쳐 압축 기법 (DXT, PVRTC, ETC, ASTC)
유튜브 Unity Korea 채널의 알쓸유잡 - 효율적인 텍스처 압축 이해하기 영상을 참고해 공부한 내용을 정리했습니다. 추가로 유니티의 ETC 관련 블로그 포스팅을 참고했습니다. 기본적으로 텍스쳐는 32bpp, half color 표현시 16bpp로 텍스쳐를 표현한다. 보통 익숙한 png나 jpg등의 가변비율 인코딩 방식은 디스크에 이미지를 저장할 때 사용하는 방식으로, GPU에서 텍스쳐를 사용할 때는 Sample 연산을 위해 다시 원본을 복원해 메모리에 올려야한다. GPU에선 interpolation 등의 이유로 Sample 연산을 무지 많이 해야하기 때문에, 실제 메모리에 올라가는 텍스쳐를 압축하려면 빠른 디코딩이 되어야 하고 Random Access가 되어야한다. 블럭기반 압축 앞으로 설명할 텍스..
2023.11.04 -
[Unity Shader] 간단한 Cloak 쉐이더
이 글은 유니티 코리아 유튜브 채널에 있는 유니티 셰이더그래프 튜토리얼 3 : 투명망토 효과(cloaking, stealth) 를 참고해 초보자가 학습한 내용입니다. 요약 위와 같은 투명인간 효과를 위한 쉐이더를 구현합니다. 쉐이더는 크게 아래의 과정으로 이루어집니다. 기본적인 씬이 렌더링 된 후에(Transparent 단계) 실행되어, 현재 픽셀 위치의 Screen Color를 불러와 표시한다. 현재 픽셀 위치에 vertex normal값을 더해줘 왜곡을 준다. Fresnel 효과로 외곽선 부분에 색을 넣는다. Cloak 쉐이더 Screen Color 구하기 우선 렌더링 파이프라인 애셋에 Screen Color를 버퍼에 담도록 설정해야한다. 여기서 Opaque Texture를 체크해주면 되고, Down..
2023.11.02 -
Render Hell - Book 2 (+알쓸유잡 강의 참고) 정리
쉐이더 스터디 내용 공유를 위해 작성했습니다. 참고 강의 영상: 알쓸유잡 - 야 너두 쉐이더 개발할 수 있어! 주 참고 자료: Render Hell - Book 2 1. GPU의 내부 시스템들 (Nvidia GPU 기준) GPU 코어는 per vertex / pixel 연산을 할 수 있지만, tessellation이나 culling 등 복잡한 Fixed pipeline의 작업들은 전문 하드웨어 블록이 따로 존재한다. Streaming Multiprocessor(SM)는 하나의 쉐이더에 속한 stream of verticies/pixels를 담당하고, 이에 대한 작업을 여러 GPU 코어에 분배한다. 하나의 GPU에 여러개의 SM이 있기 때문에, 2개 이상의 쉐이더를 동시에 실행할 수 있다. 2. GPU의 ..
2023.09.05 -
Render Hell - Book 1 (+알쓸유잡 강의 참고) 정리
쉐이더 스터디 내용 공유를 위해 작성했습니다. 참고 강의 영상: 알쓸유잡 - 야 너두 쉐이더 개발할 수 있어! 주 참고 자료: Render Hell - Book 1 Book 1에선 전반적인 렌더링에 대한 High level 용어 정리 및 Pipeline에 대한 overview를 제공합니다. 1. 데이터 이동 렌더링을 위한 정보인 정점 데이터, 텍스쳐 등은 RAM에서 VRAM으로 복사된다. 복사 후, RAM에서 더이상 필요하지 않은 데이터는 해제된다. - 이는 프로그래머가 정한다. 예를 들어 정점 데이터는 충돌 체크 등을 위해 남기고, 텍스쳐 등 렌더링에만 쓰이는 정보는 해제할 수 있다. - 유니티에 관련 속성으로는 Texture read/write enabled 속성이 있다. Texture 정보를 cpu..
2023.09.05