그래픽
-
드로우콜과 병합에 대한 정리[작성일 23.9.5] 옮김실행이유렌더링되는 배치수와 SetPassCall을 줄이기 위해 -Color Correction Lut(_Lut__는 룩업 텍스처_ 의 약어)는 사후 효과에서 컬러 그레이딩을 최적으로 수행하는 방법입니다. 색상 보정 커브의 경우처럼 커브를 통해 개별 컬러 채널을 미세 조정하는 대신 텍스처를 하나만 사용하여 보정된 이미지를 생성합니다. 룩업은 원본 이미지 컬러를 룩업 텍스처를 어드레스하는 데 사용되는 벡터로 사용함으로써 수행됩니다. -Screen Space Ambient Occlusion (SSAO) 이미지 이펙트는 실시간으로 앰비언트 오클루전을 이미지 포스트 프로세싱 효과로서 재현합니다. 서로 인접한 주름, 구멍, 표면을 어둡게 만듭니다. 현실에서 이..
[실험] 드로우콜과 병합을 위해드로우콜과 병합에 대한 정리[작성일 23.9.5] 옮김실행이유렌더링되는 배치수와 SetPassCall을 줄이기 위해 -Color Correction Lut(_Lut__는 룩업 텍스처_ 의 약어)는 사후 효과에서 컬러 그레이딩을 최적으로 수행하는 방법입니다. 색상 보정 커브의 경우처럼 커브를 통해 개별 컬러 채널을 미세 조정하는 대신 텍스처를 하나만 사용하여 보정된 이미지를 생성합니다. 룩업은 원본 이미지 컬러를 룩업 텍스처를 어드레스하는 데 사용되는 벡터로 사용함으로써 수행됩니다. -Screen Space Ambient Occlusion (SSAO) 이미지 이펙트는 실시간으로 앰비언트 오클루전을 이미지 포스트 프로세싱 효과로서 재현합니다. 서로 인접한 주름, 구멍, 표면을 어둡게 만듭니다. 현실에서 이..
2024.05.07 -
결과 인스펙터 Distance : 해당 값보다 크면 강조효과가 나타나지 않음. 적용방법 URP 쉐이더 세팅에서 아래와 같이 적용함
[Unity Shader Graph] Rim 아이템 강조효과결과 인스펙터 Distance : 해당 값보다 크면 강조효과가 나타나지 않음. 적용방법 URP 쉐이더 세팅에서 아래와 같이 적용함
2024.04.23 -
3차원 RGB UV
[Unityy URP Shader] 축 정보3차원 RGB UV
2024.04.19 -
[출처] Unty Shader Training https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d struct VertexInput { float4 vertex : POSITION; float3 normal : NORMAL; }; struct VertexOutput { float4 vertex : SV_POSITION; float3 normal : NORMAL; //Vector 대신 사용 가능한 예약어 float3 WorldSpaceViewDirection : TEXCOORD0; }; float _RimPower, _RimInten; half4 _RimColor; VertexOutput vert(VertexInput v) { VertexOutput o; o.vertex..
[Unity URP Shader]Rim 오브젝트 강조[출처] Unty Shader Training https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d struct VertexInput { float4 vertex : POSITION; float3 normal : NORMAL; }; struct VertexOutput { float4 vertex : SV_POSITION; float3 normal : NORMAL; //Vector 대신 사용 가능한 예약어 float3 WorldSpaceViewDirection : TEXCOORD0; }; float _RimPower, _RimInten; half4 _RimColor; VertexOutput vert(VertexInput v) { VertexOutput o; o.vertex..
2024.04.17 -
[출처] Unty Shader Training https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d Properties { _RampTex("RampTexture", 2D) = "White"{} _TintColor("Color", color) = (1,1,1,1) _Intensity("Intensity", Range(0,1)) = 0.5 _AmbientColor("AmbientColor", color) = (1,1,1,1) _lightwidth("LightWidth" , Range(0.1, 10)) = 0.5 _lightStep("LightStep" , Float) = 0.5 } ....[생략] float4 _TintColor; float _Intensity; float..
[Unity URP Shader] 툰 라이팅 기본[출처] Unty Shader Training https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d Properties { _RampTex("RampTexture", 2D) = "White"{} _TintColor("Color", color) = (1,1,1,1) _Intensity("Intensity", Range(0,1)) = 0.5 _AmbientColor("AmbientColor", color) = (1,1,1,1) _lightwidth("LightWidth" , Range(0.1, 10)) = 0.5 _lightStep("LightStep" , Float) = 0.5 } ....[생략] float4 _TintColor; float _Intensity; float..
2024.04.17 -
[출처] Unty Shader Training https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d VertexOutput vert(VertexInput v) { VertexOutput o; float4 positionWS = TransformObjectToHClip(v.vertex.xyz); o.normal = TransformObjectToWorldNormal(v.normal); o.vertex = positionWS; return o; } half4 frag(VertexOutput i) : SV_Target { //light //유니티 라이트를 무조건 한 방향에서만 빛이 온다는 것이 전제 //라이트의 노말위치를 반환해준다고 생각하면 좋을듯 /*float3 light..
[Unity URP Shader] Direction Light[출처] Unty Shader Training https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d VertexOutput vert(VertexInput v) { VertexOutput o; float4 positionWS = TransformObjectToHClip(v.vertex.xyz); o.normal = TransformObjectToWorldNormal(v.normal); o.vertex = positionWS; return o; } half4 frag(VertexOutput i) : SV_Target { //light //유니티 라이트를 무조건 한 방향에서만 빛이 온다는 것이 전제 //라이트의 노말위치를 반환해준다고 생각하면 좋을듯 /*float3 light..
2024.04.17 -
[출처] Unty Shader Training https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d Properties{ ,...[생략] //NoScaleOffset : tile과 offset을 숨기는 명령 [NoScaleOffset] _Flowmap("Flowmap", 2D) = "white" {} } ....[생략] sampler2D _Flowmap; VertexOutput vert(VertexInput v) { VertexOutput o; o.vertex = TransformObjectToHClip(v.vertex.xyz); o.uv = v.uv.xy * _MainTex_ST.xy + _MainTex_ST.zw; //[노이즈 발생] half4 noise = tex2..
[Unity URP Shader] 웨이브[출처] Unty Shader Training https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d Properties{ ,...[생략] //NoScaleOffset : tile과 offset을 숨기는 명령 [NoScaleOffset] _Flowmap("Flowmap", 2D) = "white" {} } ....[생략] sampler2D _Flowmap; VertexOutput vert(VertexInput v) { VertexOutput o; o.vertex = TransformObjectToHClip(v.vertex.xyz); o.uv = v.uv.xy * _MainTex_ST.xy + _MainTex_ST.zw; //[노이즈 발생] half4 noise = tex2..
2024.04.17 -
[출처] Unty Shader Training https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d Properties{ .......[생략] //NoScaleOffset : tile과 offset을 숨기는 명령 [NoScaleOffset] _Flowmap("Flowmap", 2D) = "white" {} //흐르는 시간 배수와, 강도 _FlowIntensity("flow Intensity", Range(0,1)) = 1 _FlowTime("flow time", Range(0,10)) = 1 } ......[생략] VertexOutput vert(VertexInput v) { VertexOutput o; o.vertex = TransformObjectToHClip(v.v..
[Unity URP Shader] 플로우맵을 이용한 애니메이션[출처] Unty Shader Training https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d Properties{ .......[생략] //NoScaleOffset : tile과 offset을 숨기는 명령 [NoScaleOffset] _Flowmap("Flowmap", 2D) = "white" {} //흐르는 시간 배수와, 강도 _FlowIntensity("flow Intensity", Range(0,1)) = 1 _FlowTime("flow time", Range(0,10)) = 1 } ......[생략] VertexOutput vert(VertexInput v) { VertexOutput o; o.vertex = TransformObjectToHClip(v.v..
2024.04.17 -
[출처] Unty Shader Training https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d VertexOutput vert(VertexInput v) { VertexOutput o; o.vertex = TransformObjectToHClip(v.vertex.xyz); o.uv = v.uv.xy * _MainTex_ST.xy + _MainTex_ST.zw; o.uv2 = v.uv.xy * _MainTex02_ST.xy + _MainTex02_ST.zw; return o; } half4 frag(VertexOutput i) : SV_Target { //텍스쳐 uv에 따른 맞추는 과정 float4 tex01 = _MainTex.Sample(sampler_MainTe..
[Unity URP Shader] 텍스쳐 섞기[출처] Unty Shader Training https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d VertexOutput vert(VertexInput v) { VertexOutput o; o.vertex = TransformObjectToHClip(v.vertex.xyz); o.uv = v.uv.xy * _MainTex_ST.xy + _MainTex_ST.zw; o.uv2 = v.uv.xy * _MainTex02_ST.xy + _MainTex02_ST.zw; return o; } half4 frag(VertexOutput i) : SV_Target { //텍스쳐 uv에 따른 맞추는 과정 float4 tex01 = _MainTex.Sample(sampler_MainTe..
2024.04.17 -
투명 오브젝트에 관한 현상 조건 1 : 왼쪽 오브젝트가 오른쪽 오브젝트보다 앞에 있는 경우 왼쪽 오브젝트가 오른쪽 오브젝트에 일부 가려진 모습 조건 2 : 오른쪽 오브젝트가 왼쪽오브젝트보다 앞에 있는 경우 오른쪽 오브젝트가 왼쪽 오브젝트에 일부 가려진 경우 문제 : Transparent 쉐이더임에도 불구하고, 오브젝트의 순서에 따라 그리는 것이 달라짐 그리는 순서는 Depth Buffer에 저장된 오브젝트 피봇 기준으로 정해지는 것인데, 이 순서에 따라서 마지막 alpha blend 과정에서 뒤에 먼저 그려진 오브젝트에 가려지는 픽셀은 탈락이 되어버리는 것임. 해결 : 1. z_Test를 off 해서 무조건적으로 그려지게 만들기 -문제점 : 이 오브젝트는 어떠한 오브젝트에 가려지든 그려진다. 2. Z-W..
[Unity Shader URP] 투명오브젝트 정렬 문제투명 오브젝트에 관한 현상 조건 1 : 왼쪽 오브젝트가 오른쪽 오브젝트보다 앞에 있는 경우 왼쪽 오브젝트가 오른쪽 오브젝트에 일부 가려진 모습 조건 2 : 오른쪽 오브젝트가 왼쪽오브젝트보다 앞에 있는 경우 오른쪽 오브젝트가 왼쪽 오브젝트에 일부 가려진 경우 문제 : Transparent 쉐이더임에도 불구하고, 오브젝트의 순서에 따라 그리는 것이 달라짐 그리는 순서는 Depth Buffer에 저장된 오브젝트 피봇 기준으로 정해지는 것인데, 이 순서에 따라서 마지막 alpha blend 과정에서 뒤에 먼저 그려진 오브젝트에 가려지는 픽셀은 탈락이 되어버리는 것임. 해결 : 1. z_Test를 off 해서 무조건적으로 그려지게 만들기 -문제점 : 이 오브젝트는 어떠한 오브젝트에 가려지든 그려진다. 2. Z-W..
2024.04.04