
PERSPECTIVE Perspective 카메라 투영에서 깊이 텍스처를 샘플링하면 (Scene Depth가 Raw모드로 설정 됨) 0~1사이의 값을 반환하여 근거리에서 원거리 카메라 클리핑 평면에서 깊이를 인코딩합니다 (또는 플랫폼이 반전 된 깊이 버퍼를 사용하는 경우 그 반대도 마찬가지입니다). 값은 비선형입니다. 이는 0.5 값이 두 클리핑 평면 사이의 중간에 있지 않음을 의미합니다. (이것은 정밀도를 높이기위해) 대부분의 효과에 대해 이 값을 Linear01Depth 및 LinearEyeDepth 함수 (또는 Linear01 또는 Eye 모드로 설정된 Scene Depth)를 사용하여 수행되는 linear01 또는 linear-eye 값으로 변환하려고합니다. 이러한 기능/모드는 플랫폼 차이 (역방..

UVs 3D 모델링 프로그램 (예 : Blender, Maya)에서 모델을 만들 때 아티스트는 일반적으로 UV 매핑이라는 프로세스를 거치게됩니다. 여기에서 3D 지오메트리가 2D "net"으로 풀려서 각 정점에 UV 값 (해당 네트의 XY 좌표, 일반적으로 0과 1 사이)을 할당합니다. 이러한 UV는 다양한 효과에 사용할 수 있으며, 가장 일반적으로 모델에 텍스처를 적용하는 데 사용할 수 있습니다. 셰이더에서 모델에서 이러한 UV 좌표를 얻을 수 있습니다. 코드에서 이것은 "appdata"구조체의 TEXCOORD (0, 1 등) 의미 체계 중 하나를 사용하여 수행됩니다. (일반적으로 URP에서는 "attribute") shadergraph에서 UV 노드를 사용할 수 있습니다. 조각이 많은 복잡한 모델의 ..

World space UVs UV를 사용하여 셰이더에게 모델에 렌더링 할 텍스처 부분을 알려줍니다. 일반적으로 메시 UV 채널에 저장된 것을 사용하지만, 특히 사용 가능한 UV 좌표가없는 경우에는 fragment의 표준 공간 위치를 대신 사용하는 것도 유용 할 수 있습니다. 이것을 world space "투영(projected)된"(또는 정렬된) UV 및 평면 텍스처 매핑이라고도합니다. 그러나 Position 노드는 3D 벡터를 제공하며 Texture2D를 샘플링하는데 필요한 UV 좌표는 2차원입니다. 따라서 위치 벡터에서 두개의 구성요소만 사용할 수 있습니다. 예를 들어 X 및 Z 구성 요소 (split 노드에서 R및B로 표시됨)를 사용하여 텍스처를 샘플링 할 수 있습니다. Y축은 샘플에 포함되어 있지..

mesh vertex 또는 fragment의 화면위치에 대한 액세스를 제공합니다. 출력값의 모드를 선택할 수 있습니다. Default 화면 위치를 반환합니다. 이 모드는 화면 위치를 clip space의 W요소로 나눕니다. (Vertex 변환의 다음 단계는 perspective divide이다. 이 operation은 clip space내의 각 object들의 x, y, z component들을 w로 나눈다(normalize). 이 결과 w 는 1이 되며, 각 x, y, z component 는 -1 ~ 1 사이의 값으로 변환 된다. 이것은 cube 내의 모든 primitive들은 (-1, -1, -1) ~ (1,1,1)에 위치 하게 된다. 이것을 Normalized Device Coordinate Sp..

입력UV를 기반으로 Voronoi 또는 Worley 노이즈를 생성합니다. 보로노이 노이즈는 픽셀과 점격자 사이의 거리를 계산하여 생성합니다. Angle Offset에 의해 제어되는 의사랜덤값으로 점을 조절함으로써 셀 클러스터를 생성 할 수 있습니다. 이러한 셀의 크기와 결과 노이즈는 Cell Density에 의해 제어됩니다 . output셀에는 raw셀 데이터가 포함됩니다. 일반적으로 가장 가까운 지점까지의 거리를 F1 Voronoi. 두번째로 가까운 지점까지의 거리를 출력하는 것을 F2 Voronoi, 세번째로 가장 가까운 지점은 F3으로 표현합니다. Shadergraph에는 F1 Voronoi (일반 유클리드 거리를 사용하여 가장 가까운 지점까지의 거리)를 출력 하는 내장 Voronoi 노드를 사용합..

렌더 텍스처(Render Textures) 는 특수한 타입의 텍스처 로 런타임 시점에 생성되고 업데이트됩니다. 렌더 텍스처를 사용하려면 먼저 새 렌더 텍스처를 생성하고 카메라 하나를 지정해서 렌더링합니다. 그러면 일반 텍스처와 마찬가지로 머티리얼 에서 렌더 텍스처를 사용할 수 있습니다. (Assets 폴더에서 마우스오른쪽 클릭으로 Create > RenderTexture로 생성 혹은 스크립트로 생성 할 수 있음) var rt =new RenderTexture(256, 256, 16, RenderTextureFormat.ARGB32); Destroy(rt); // 사용하지 않을때 제거해야함. 생성된 렌더텍스처를 보면 크기/색상/형식/mipmap 활성화 등의 옵션이 있는데 이는 렌더텍스처에 필요한 메모리에 ..

shader graph의 마스터노드의 position input은 vertex shader 단계에 영향을 줍니다. vertex 단계에서는 당연히 fragment 단계에 영향을 주지 못합니다. (다만, 텍스쳐를 샘플링해서 vertex 단계에서 이용하려면 SampleTexture2DLOD를 사용할 수 있습니다.) vertex를 조작하기위해 object space로된 position 노드를 만들면 우리가 조작할 수 있는 vertex의 위치값 (vector3)가 반환됩니다. (object 공간의 위치값이므로 vertex를 제어하려면 Scale, Rotate, Postion 순으로 제어해야 의도한 결과가 나올 수 있습니다.) 쉐이더는 GPU에서 실행되기에 실제 mesh자체를 업데이트하거나 colider에 영향을 ..

Fresnel Effect는 시야각에 따라 표면의 반사율이 달라지는 효과로, 입사각에 접근하면 더 많은 빛이 반사됩니다. Fresnel Effect는 표면 법선과 뷰 방향 사이의 각도를 계산하여 이를 근사화합니다. 각도가 클 수록 반환값이 커집니다. 즉, 노드는 메시의 Normal과 View Dir (카메라에서 픽셀 위치까지의 벡터)을 기반으로 값을 출력합니다 . 그들 사이 의 각도 가 클 수록 반환되는 값이 커집니다. 90도 각도 차이에서 이것은 정확히 1 입니다. 카메라를 향하는 법선은 더 작은 값을 반환하거나 정확히 정렬 된 경우 0을 반환 하며 Power 값을 지정하여 이를 조정할 수 있습니다. (aka Rim Light) void Unity_FresnelEffect_float(float3 Nor..
- Total
- Today
- Yesterday