shader(37)
-
[Unity] URP 셰이더 HLSL Pass와 Pass Commands
Pass Pass는 하나의 셰이더가 여러 번 그려야 하는 경우 사용된다. Pass 아래에 Tags 명령어가 또 나오는데, SubShader의 Tags 명령어와 이름은 같지만 다른 목적을 가지고 있다. URP 렌더 파이프 라인에 의해 이 패스를 그릴지 말지를 결정하는 기준이 된다. Pass 안에 있는 명령어를 생략해도 디폴트 값으로 적용되며, SubShader에서 사용해도 된다. SubShader에서 Pass의 명령어를 사용하면 모든 Pass에 적용된다. Shader "Universal Render Pipeline/Lit" { Properties { // Specular vs Metallic workflow [HideInInspector] _WorkflowMode("WorkflowMode", Float) ..
2023.06.12 -
[Unity] URP 셰이더 HLSL ShaderLab Properties, SubShader Tags
Properties https://docs.unity3d.com/kr/2021.1/Manual/SL-Properties.html ShaderLab: 머티리얼 프로퍼티 정의 - Unity 매뉴얼 이 페이지는 ShaderLab 코드에서 Properties 블록을 사용하여 셰이더 오브젝트의 머티리얼 프로퍼티를 정의하는 방법에 대한 정보를 포함합니다. docs.unity3d.com 유니티 매뉴얼에 프로퍼티에 대한 내용이 잘 나와있다. Integer, Int 정수형에 대한 설명이다. _ExampleName ("Integer display name", Integer) = 1 _ExampleName ("Int display name", Int) = 1 Float Float와 Range 타입이 있다. Range 타입은..
2023.06.12 -
[Unity] URP 셰이더 HLSL Lambert 셰이더
Shader "Custom/BRDF/Lambert" { Properties { [MainTexture] _BaseMap("Base Map", 2D) = "white" {} [MainColor][HDR]_BaseColor("BaseColor", Color) = (1, 1, 1, 1) } SubShader { Tags { "RenderType" = "Opaque" "RenderPipeline" = "UniversalPipeline" } Pass { HLSLPROGRAM #pragma vertex vert #pragma fragment frag #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" #include "Pa..
2023.06.10 -
[Unity] URP 셰이더 HLSL 텍스쳐 적용
HLSL의 변수 float4 testVar; //초기 값 없이 변수만 선언 float4 testVar = float4(1,2,3,4); // 초기 값과 함께 변수 선언 float2 newVar1 = testVar.xy; float2 newVar2 = testVar.zw; float3 newVar3 = testVar.zxy; 위와 같이 구성 성분을 조합해서 사용 가능하다. testVar.xygb //Error testVar.xx = float(1, 2); //Error (xx가 문제) xyzw 방식과 rgba 방식을 혼용할 수 없다. HLSL의 함수 half4 frag(Varyings IN) : SV_Target { half4 color = SAMPLE_TEXTURE2D(_BaseMap, sampler_B..
2023.06.09 -
[Unity] URP 셰이더 HLSL 구조와 _BaseColor 적용
ShaderLab ShaderLab은 범용적인 HLSL만으로는 유니티 3D 엔진만의 여러 기능들을 제어할 수 없어서 만든 규칙이다. OpenGL이나 HLSL 같은 셰이더 언어는 유니티 엔진이 존재하기 전부터 사용된 언어이기 때문. 특징은 간단한 문법 구조를 가지고 있고 엔진 기능들에 관련된 것들이다. 직접적으로 셰이딩 연산에 관한 것들은 없다. // 이것은 주석입니다. (Comment) Shader "Custom/ShaderLab HLSL/CustomUnlit" { Properties { } SubShader { Tags { "RenderType" = "Opaque" "RenderPipeline" = "UniversalPipeline" } Pass { HLSLPROGRAM #pragma vertex ve..
2023.06.08 -
[Unity] URP 셰이더 Gamma와 sRGB
sRGB 사진 텍스쳐는 sRGB를 켜고 Normal Map이나 Ambient Occlusion 텍스쳐 등 셰이더 계산에 사용되는 데이터 텍스쳐는 sRGB를 끈다. 감마 보정 채널당 8비트의 색 표현도 결국 밴딩 현상이 일어나지만 아주 미세하게 발생해서 잘 느끼지 못할 뿐이다. 감마보정은 어두운 부분의 밴딩 현상을 최소화하는 보완책이다. 왼쪽은 0.45 제곱의 지수 그래프로 0.45 만큼 감마 인코딩할 때 포토샵에서도 같은 모양의 그래프를 볼 수 있다. 모니터에 출력될 때 다시 어둡게 디코딩될 것을 전제로 이미지를 조금 밝게 저장한다. 오른쪽은 2.2 제곰의 지수 그래프로 2.2 감마 디코딩을 나타내며 다시 어둡게 디코딩해서 모니터에 출력한다. GLSL 그래프를 살펴보면 지수 함수로 바뀌면서 낮은 영역에서..
2023.06.07