본문 바로가기

Unity - Surface Shader6

5. 알파블렌딩과 컷아웃 알파(Alpha)는 오브젝트의 투명도를 의미합니다. 알파블렌딩은 투명한 오브젝트가 앞에 있을때, 뒤에 있는 배경 컬러값과 적당하게 컬러값을 섞어준다는 것을 의미합니다. 투명한 오브젝트를 그릴때 배경이 미리 그려져있어야 하기 때문에 , 렌더링 순서가 관련이 있습니다. 오브젝트 렌더링 순서는 다음과 같습니다. 불투명한 오브젝트 -> 뒤에있는 반투명 오브젝트 -> 앞에있는 반투명 오브젝트 불투명한 오브젝트는 Z buffer로 픽셀에 그려야 할지 말지를 알수가 있습니다. 그래서 렌더링 순서가 상관이 없지만 반투명 오브젝트는 반투명된 부분의 컬러값이 뒤에있는 배경과 블렌딩(알파블렌딩)이 되어야 하기 때문에 반드시 뒤에서 부터 그려져야 합니다. 그래서 소팅이 필요한데요 알파 소팅은 오브젝트의 중심점과 카메라의 거리.. 2023. 11. 20.
4. Cubemap을 사용하여 반사매질을 표현해보자. 큐브 맵은 Sky box에서 사용하기도 하지만, 큐브 맵 텍스처를 일반 오브젝트에 반사재질로 사용하면, 오브젝트에서 하늘에 반사되는 효과를 볼 수 있습니다. Cube map 텍스처를 사용하여 건물을 렌더링 해봅시다. 먼저 렌더링 패스를 이해해 봅니다. ======================================================= SurfaceShader 에서 Light를 표현할때, #pragma 에 Lambert를 추가해도 되지만, Custom Lighting을 하기 위해서는 Lighting + Custom API name 으로 #pragma 에 추가 한뒤, 함수 이름으로 정의를 하면 됩니다. 아래 예제에서는 함수 명이 LightingTest 이기 때문에 , #pragma Test를.. 2023. 11. 19.
3. Vertex Shader를 사용하여 Toon Shading 해보기 만화케릭터를 강조하기 위하여 외곽 효과를 주는 것을 toon shading, cell shding 이라고 합니다. 이번에 해볼 예제는 외곽선 그리기(toon shading) 입니다. 외곽선을 그리는 방법에는 림라이트 방법을 사용해도 되지만, 2 pass 렌더링 사용하는 방법도 가능합니다. 2 pass란 동일한 픽셀에 2번 렌더링 한다는 의미 입니다. 렌더링 한다고 해서 반드시 컬러값을 업데이트 하는 것은 아닙니다. 프래그먼트 쉐이더에서 아무일도 하지 않으면 변화가 없어 보입니다. 그러면 왜 하느냐? 백버퍼에 특정 값을 기록하여 진짜 렌더링하는 패스에서 해당 값을 사용하기도 하며, 이번 예제처럼 덧그리기도 할수도 있습니다. 그럼 2 pass 렌더링을 해보러 가봅시다. 원리를 먼저 생각해보면요 사각형이 그려.. 2023. 11. 14.
2. Blin - phong Specular + Rim Lighiting 이번에 구현할 내용은 blin -phong specular lighting 입니다. 사진속 남자의 몸 부분에 빛의 반사된 영역 흰색으로 표현된 부분이 specular lighting이 반영된 부분입니다. 그런데 빛이 닿지 않는 그림자 부분에도 specular lighting이 입니다. 이 부분은 rim lighting으로 fake specular lighting을 구현한 내용이며, 이것도 구현할 것입니다. 두가지를 구현할 예정입니다. 1) blin phong specular lighting, 2) fake specular lighting using rim ================================================================= 1) blin phong spec.. 2023. 11. 11.