Created
October 5, 2021 14:54
-
-
Save sungkukpark/5405116c379baca2da69b1230bca2ebe to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Copied from https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@12.0/manual/writing-shaders-urp-basic-unlit-structure.html and translated by sungkukpark. | |
// 이 셰이더는 메시 형태를 코드에 미리 지정된 컬러로 채우는 셰이더이다. | |
Shader "Example/URPUnlitShaderBasic" | |
{ | |
// 유니티 셰이더의 프로퍼티 블록이다. 본 예제에서 이 블록은 비어있다. | |
// 왜냐하면 프래그먼트(fragment) 셰이더에 출력 컬러가 미리 지정되어 있기 때문이다. | |
Properties | |
{ } | |
// 서브셰이더(SubShader) 블록은 셰이더 코드를 담고 있다. | |
SubShader | |
{ | |
// 서브셰이더 태그는 언제, 그리고 어떤 조건 하에서 서브셰이더 블록이나 패스가 실행되는지 정의한다. | |
Tags { "RenderType" = "Opaque" "RenderPipeline" = "UniversalPipeline" } | |
Pass | |
{ | |
// HLSL 코드 블록. 유니티 SRP는 HLSL 언어를 사용한다. | |
HLSLPROGRAM | |
// 이 줄은 버텍스 셰이더의 이름을 정의한다. | |
#pragma vertex vert | |
// 이 줄은 프래그먼트 셰이더의 이름을 정의한다. | |
#pragma fragment frag | |
// Core.hlsl 파일은 자주 쓰이는 HLSL 매크로나 함수 정의를 포함한다. | |
// 또한, 이 파일은 Common.hlsl나 SpaceTransforms.hlsl와 같은 | |
// 다른 HLSL #include 래퍼런스들 또한 포함한다. | |
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" | |
// 이 구조체 정의는 어떤 변수를 포함하는지 정의한다. | |
// 이 예제는 Attributes 구조체를 버텍스 세이더의 입력 구조체로 받는다. | |
struct Attributes | |
{ | |
// positionOS 변수는 오브젝트 스페이스의 정점 위치를 갖는다. | |
float4 positionOS : POSITION; | |
}; | |
struct Varyings | |
{ | |
// 이 구조체의 위치 변수는 반드시 SV_POSITION 시멘틱을 가져야만 한다. | |
float4 positionHCS : SV_POSITION; | |
}; | |
// Varyings 구조체 안에 정의된 프로퍼티를 가진 버텍스 셰이더 정의. | |
// vert 함수의 타입은 반드시 해당 함수가 반환하는 (구조체) 타입과 동일해야 한다. | |
Varyings vert(Attributes IN) | |
{ | |
// Varyings 구조체 타입의 출력 객체 (OUT) 선언. | |
Varyings OUT; | |
// TransformObjectToHClip 함수는 오브젝트 스페이스의 버텍스 위치를 | |
// 동차 클립 스페이스의 위치로 변환한다. | |
OUT.positionHCS = TransformObjectToHClip(IN.positionOS.xyz); | |
// 출력을 반환. | |
return OUT; | |
} | |
// 프래그먼트 셰이더 정의. | |
half4 frag() : SV_Target | |
{ | |
// 컬러 변수를 정의하고 이를 반환한다. | |
half4 customColor = half4(0.5, 0, 0, 1); | |
return customColor; | |
} | |
ENDHLSL | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment