URP(26)
-
[Unity] URP 셰이더 그래프 Combine, Swizzle 노드
위의 셰이더 그래프를 보면 [Vector 3]에서 출발한 값이 [Split]을 통해 나뉘어졌고, 다시 [Combine] 노드를 지나면서 합쳐진 것을 볼 수 있다. [Split]과 [Combine] 사이 노드를 이어줄 때, R에 있던 1 값을 G로 보내면서 한 번 꼬아진 것을 볼 수 있다. 결과적으로 색은 (0, 1, 0)인 초록색이 나오게 되고 이것을 [Swizzle]이라고 부른다. [Swizzle] 노드의 Mask 부분에 원하는 조합을 써 놓으면 되는데, 순서에 따라서 결과값이 달라진다. x에 있는 값 "1" 하나만 적용되어 출력이 (1, 1, 1)로 흰색이 나왔다. xy를 적어서 (1, 1, 0)이 되어 노란색이 출력되었다. xyz를 적어서 바로 위와 마찬가지로 (1, 1, 0)이 되어 노란색이 출력..
2023.07.10 -
[Unity] URP 셰이더 그래프 기초 개념2 (Graph Inspector - Node Settings 인터페이스)
[Unity] URP 셰이더 그래프 기초 개념 ShaderGraph URP에서 생성할 수 있는 셰이더 그래프 종류를 볼 수 있다. Lit Shader Graph: 빛을 받고 그림자를 만들 수 있는 셰이더 Unlit Shader Graph: 빛과 무관하게 텍스쳐 그대로 보여주는 셰이더 셰이더 lightbakery.tistory.com 이전 기초 개념에서 정리하지 않았던 내용을 정리하는 페이지이다. Graph Inspector 창 1. Float Override Property Declaration - Shader Declaration : Property 속성을 재선언한다. Global : 셰이더 Property를 글로벌에서 제어한다. 코딩으로 이 Property 이름을 사용하는 모든 셰이더를 한 번에 제어..
2023.07.10 -
[Unity] URP 셰이더 퐁(Phong), 블린 퐁(Blinn Phong), 프레넬(Fresnel), Vertex Shader 연산(Gouraud Shading)
퐁(Phong) Bui Tuong Phong이 1975년 발표한 렌더링 알고리즘이다. 퐁 스페큘러 계산의 원리를 설명하는 그림이다. 스페큘러 효과로 얼마나 밝아지는지, 즉 반사된 광원이 얼마나 카메라로 정확하게 들어오는지를 계산하기 위해 R 벡터와 V 벡터의 각도 차이를 계산한다. 차이가 작으면 반사된 광원이 카메라에 정확하게 보인다는 뜻이고 크면 광원이 카메라에 안 보인다는 뜻이다. dot(R, V)를 계산한 결과의 스칼라 값에 의해 얼마나 밝은지가 결정된다. 빛의 반사는 HLSL reflect(LI, N)에 의해 계산된다. Shader "Custom/BRDF/Phong" { Properties { [MainTexture] _BaseMap("Base Map", 2D) = "white" {} [HDR]_..
2023.06.13 -
[Unity] URP 셰이더 BRDF(양방향 반사도 분포 함수)
BRDF는 Bidirectional Reflectance Distribution Function의 약자이다. 어떻게 반사할지를 정의하는 함수이다. 요즘의 사실적인 BRDF는 PBS(Physically Based Shading)라고 부르는 물리 기반 셰이딩 기법을 사용한다. 유니티는 Smoothness, Metallic, BaseColor 값으로 사실적으로 보이도록 한다. (*참고 디즈니 BRDF 자료 링크) Lambert BRDF Shader "Custom/BRDF/Lambert" { Properties { [MainTexture] _BaseMap("Base Map", 2D) = "white" {} [MainColor][HDR]_BaseColor("BaseColor", Color) = (1, 1, 1, ..
2023.06.13 -
[Unity] URP 셰이더 아웃라인 셰이더
이 책의 예제로 오브젝트에 대한 URP 아웃라인 셰이더가 있다. 모델은 링크에서 무료로 받을 수 있고 아웃라인 셰이더가 적용되었다. Shader "Custom/PassTest/OutlinePassTest" { Properties { _BaseMap("Base Map", 2D) = "white" {} _OutlineColor("Outline Color", Color) = (1, 0, 0, 1) _OutlineDistance("Outline Distance", Float) = 0.1 } SubShader { Tags { "RenderType" = "Opaque" "RenderPipeline" = "UniversalPipeline" } Pass { Name "TestPassNameMain" HLSLPROGRA..
2023.06.12 -
[Unity] 행렬과 MVP 변환
크기를 제어하는 행렬 크기를 제어하는 행렬은 위와 같은 형식으로 나타낼 수 있다. 1이 포함된 마지막 행과 열이 있는 이와 같은 행렬은 동차 좌표(Homogeneous Coordinate)라고 하고 평행 이동을 하는 위치 변환을 기존 행렬의 곱셈 규칙에 적용하기 위해서 새로운 축이 필요하다. 회전을 제어하는 행렬 회전의 기저 벡터는 다음과 같다. 3차원에서는 x, y, z 각 3개의 축에 대해 오일러 회전을 한다. 위에서부터 각각 x축 중심(pitch), y축 중심(yaw), z축 중심(roll) 회전이다. 이동을 제어하는 행렬 tx, ty, tz는 각각 x, y, z 좌표를 이동하기 위한 이동 값이다. 행렬의 결합 행렬은 결합하여 사용할 수 있고 먼저 계산 되어야 하는 행렬을 오른쪽에 둔다. 그리고 결..
2023.06.12