본문 바로가기
반응형

셰이더6

ShaderLab 알아보기 SubShader 각 셰이더는 최소 한개의 SubShader를 가진다. 지원이 되는 API: SubShader가 실행됩니다. 지원이 되지 않는 API: Fallback 컴포넌트를 활용해 그래픽 에러 없이 실행이 될 수 있도록 합니다. Shader "Unlit/Drawers" { Properties { ... } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { ... } } } Tags 셰이더가 어떤방식으로 언제 진행되야할지 알려주는 라벨이다. 사용방식 SubShader 내부에서 사용 모든 pass에 영향을 준다. pass 내부에서 사용 해당 pass만 영향을 받는다. SubShader { 1. Tags { "RenderType"="Opaque" } .. 2022. 3. 31.
[Material property drawer(4)] PowerSlider , IntRange 사용하기 이 drawer들은 수치범위와 정밀도 작업에 유용합니다. PowerSlider 곡선형태로 제어되는 비선형 슬라이더이다. IntRange 수치범위를 정수로 표현한다. Properties { [PowerSlider(3.0)] _Brightness("Brightness",Range(0.01,1)) =0.05 [IntRange] _Sample("Samples",Range(0,255)) = 50 } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { float _Brightness; float _Samples; ... ENDCG } Inspector에서 표현 2022. 3. 30.
[Material property drawer(3)] Enum 사용하기 Enum KeywordEnum가 비슷하지만 인자로 value/id로 구성되어있다. 이 프로퍼티는 인스펙터 상에서 동적으로 기능을 변경할 수있도록 셰이더 내부의 명령어로 전달한다. Properties { //Enum(Value0,Id0,Value1,Id1,etc...) [Enum(Off,0,Front,1,Back,2)] _Face("Culling",Float) = 0 } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Cull [_Face] Pass { ... } ENDCG } } 주로 Cull명령어에서 찾아볼 수 있다. “_Face” Enum타입 프로퍼티를 선언하여 사용한다. Inspector창에서 수정이 가능한 Enum타입의 프로퍼티 2022. 3. 27.
[Material property drawer(2)] KeywordEnum 사용하기 KeyWordEnum 이 drawer는 인스펙터에 팝업 형식의 메뉴 생성을 할 수 있다. 9가지의 다른 상태들을 구성할 수 있다. Properties { [KeywordEnum(Off,Red,Blue)] _Options("Options",Float) =0 } Pass { CGPROGRAM #pragma multi_compile _OPTIONS_OFF _OPTIONS_RED _OPTIONS_BLUE ... fixed4 frag (v2f i) : SV_Target { // sample the texture fixed4 col = tex2D(_MainTex, i.uv); #if _OPTIONS_OFF return col; #elif _OPTIONS_RED return col * float4(1,0,0,1); .. 2022. 3. 26.
[Material property drawer(1)] Toggle 사용하기 Material property drawer Unity의 ShaderLab에는 "drawer"라는 속성들이 있다. 이를 통해 인스펙터에서 직접만든 프로퍼티들을 생성할 수 있고 셰이더에서의 조건문들을 처리할 수 있다. Toggle 사용법에 대해 알아보자. 프로퍼티 작성 방법 Unity의 ShaderLab에서는 boolean 타입을 사용할 수가 없다. 대신 Toggle이 그 역할을 한다. [Toggle] _Enable("Enable",Float) = 0 Toggle을 사용하기 위해서는 타입: Float 기본 값: 0 또는 1 로 해야한다. 기본 값은 왜 0 또는 1이 되어야할까. 0의 의미는 Off 1의 의미는 On 코드에서 실행하는 방법 Pass { CGPROGRAM #pragma vertex vert #.. 2022. 3. 25.
1. 셰이더 기본 - UV 텍스처 좌표, 오브젝트에 텍스처를 매핑 가능 한 정점 UV를 변경하면 Mesh에 텍스처가 표시되는 방식도 변경할 수 있음 - 셰이더 정점과 픽셀의 특성을 설명하는 프로그램 => 컴퓨터가 Mesh를 렌더링하는 방식을 설정하고 변경 - MeshInfo(Vertex, Uv etc.) 컴퓨터에서 읽은 후 Vertex Shader로 전달 - Vertex Shader 각 Vertex마다 한번씩 실행 Pixel Shader가 다음에 사용할 데이터(ex-UV)를 준비 - Pixel Shader 각 픽셀 당 한번씩 실행되고 객체 렌더링 텍스처 적용,색상 변경, 픽셀 제거 등 역할을 함 Property 속성에 표시되는 변수, 셰이더에서 사용 Properties { _MainTex("Texture",2D)= "wh.. 2020. 1. 12.
반응형