Unity(119)
-
[Unity] URP 프레넬 셰이더(Fresnel Shader) 응용 (조명 효과, 깜빡이는 조명 만들기)
HDR과 Bloom 효과는 저사양의 모바일 게임에서 사용하거나 레트로한 느낌을 주기 힘들기 때문에 프레넬 효과를 이용하여 만들어 볼 것이다. 조명 효과 Street Light 3D Model Free Download | 3DModelsCC0 Free Street Light 3D Model. Public Domain License. No credit or attribution required. www.3dmodelscc0.com 책의 예제와 같이, 무료 가로등 에셋을 받아서 프레넬 효과를 적용해 줄 Sphere 하나를 가로등에 씌워준다. 조명 효과를 줄 것이기 때문에 [Surface Type] - [Transparent], [Blending Mode] - [Additive]를 적용시켜 준다. [Fresne..
2023.07.20 -
[Unity] URP 셰이더 프레넬 셰이더(Fresnel Shader)
프레넬(Fresnel) 효과는 게임에서 배경과 캐릭터의 분리나 강조를 위해 또는 선택되었을 때 프레넬 효과를 과장하여 사용한다. 테두리를 강조하는 비슷한 효과인 림 라이트도 프레넬로 만든다. Fresnel Shader 만들기 프레넬(Fresnel)은 물체가 기울어질수록 반사가 심해진다. 이 말은 내가 바라보는 방향(벡터)에 따라 노말 벡터와 계산으로 반사가 달라져야 한다는 것이고, 따라서 [Normal Vector]와 [View Direction]의 [Dot Product] 연산을 한다. 카메라를 바라보는 면이 밝고, 각도가 커질 수록 어둡게 보인다. [One Minus] 노드를 이용해서 반전을 시켜보면, 하지만 아직 빛나는 부분의 면적이 넓으므로 일부만 빛나게 만들려면 어두운 부분은 완전히 어둡게, 밝..
2023.07.20 -
[Unity] URP 셰이더 그래프로 Lambert Light 만들기 (+Half Lambert)
간단한 Lambert Light [Normal Vector] 노드와 [CustomLight] 커스텀 노드를 [Dot Product]로 내적하여 Lambert Light를 표현할 수 있게 되었다. 하지만 여기서 -1부터 1까지 표현되는 그림자이기 때문에 추가 조명을 더해도 -1에서 0이상 밝아지지 않는 문제가 있을 수 있으므로 0~1로 제한하는 [Saturate] 노드를 붙여준다. ([Maximum] 노드를 사용해 들어온 값과 0을 비교하여 0 이하는 더 큰 값인 0을 출력하게 할 수도 있고, [Clamp] 노드를 이용하여 직접 0~1 범위를 설정할 수도 있다.) Normal Map 적용 예제 파일에 함께 들어있는 Normal Map을 사용한 모습인데, 기존 Normal Map의 Space가 Tangent..
2023.07.18 -
[Unity] URP 셰이더 커스텀 노드로 Light Vector 노드 만들기
먼저, [Custom Function] 노드의 Graph Inspector를 정리하면, Precision: 값의 정밀도이다. Inherit: 이전 노드에서 상속받는 정밀도 Single: Float과 같으며 32bit 정밀도이다. 높은 품질과 정밀도를 가진다. Half: 16bit 정밀도로 Single보다는 조금 떨어진다. Use Graph Precision: Graph Setting에서 결정한 정밀도를 사용하는 옵션이다. HLSL 함수 이름이 Precision에 맞춰서 자동으로 접미어가 붙기 때문에 출력 변수의 단위가 이 Precision에 맞지 않으면 에러가 난다. Preview: 2D/3D 어떤 것으로 볼지를 결정한다. Inputs/Outputs: 다른 노드의 Input과 Output처럼 입력과 출력..
2023.07.18 -
[Unity] URP 셰이더 Normal Vector 정리
[Normal Vector] 노드에는 아래 사진과 같이 여러 종류의 Space를 설정할 수 있다. 책에 나온 예제 오브젝트로 그 차이를 정리하려고 한다. Object Space 오브젝트가 스스로 가지고 있는 공간이며 피봇점의 좌표이다. 오브젝트를 회전하면 좌표도 같이 회전한다. 오브젝트 기준으로 무언가를 해야 할 때 쓰인다. 두개골 윗부분이 녹색인 건 어느 방향으로 회전시켜도 계속 녹색을 유지한다. View Space 카메라 기준의 좌표이며 오브젝트를 회전시키더라도 카메라 기준으로 좌표가 만들어진다. 카메라 방향을 바라보는 면은 언제나 파란색(Z축)이다. 내가 바라보는 방향을 기준으로 어떤 것을 할 때 쓰인다. World Space 월드 기준으로 좌표가 결정되기 때문에 화면을 회전시켜도 월드 좌표의 방향..
2023.07.18 -
[Unity] URP 셰이더 돌이 물에 젖고 마르는 셰이더 만들기
물체가 물에 젖게 되면 표면에 정반사가 늘고, 난반사가 줄어들어 어두워지고, 표면의 색상은 물 층 내부에서 전반사로 전해진다. 빛이 물 층을 통과하여 표면까지 도달하는 빛의 양이 줄어들어 어둡게 보인다. [Unity] URP 셰이더 Detail Map Detail Map은 근접했을 때 흐려지는 텍스쳐의 디테일을 보완하고자 만든 기법이다. 책의 예제 돌 오브젝트와 텍스쳐 오브젝트를 보면, 일반적으로 셰이더를 적용했을 때는 물체에 가까이 갔을 때 lightbakery.tistory.com 이전 글의 셰이더에 이어진다. Detail Map을 위해 Blend 되었던 Base Map을 [Multiply]로 곱하여 어둡게 했고, Smoothness를 0.8로 높였더니 어둡고 반사가 잘되는 젖어 보이는 돌처럼 보이게..
2023.07.17