본문 바로가기
반응형

shader7

[Shader] Step, Mix, SmoothStep 기본 void main() { vec3 colour = vec3(0.0); colour = vec3(vUvs.x); gl_FragColor = vec4(colour, 1.0); } Step step(edge,x): x를 edge로 비교를 해서 step 함수를 생성 if(x 0.0 //step(0.5,0.51) => 1.0 colour = vec3(step(0.5,vUvs.x)); Mix mix(a,b,t): a와 b 사이를 t를 퍼센트로 사용하여 선형으로 보간. Unreal, Unity에서 사용하는 lerp와 같음. return a+t(b-a); //mix(10.0,20.0,0.25) => 12.5 //mix(10.0,20.0,1) => 20.0 vec3 red = vec3(1.0, 0.0, 0.0); .. 2024. 4. 3.
Draw call은 무엇일까 오브젝트를 그릴 때 정보들(정점의 위치, normals, color 등)을 GPU로 보낸다. 이 정보들을 가지고 카메라 frustum안에 존재하는 오브젝트를 그린다. GPU에 위의 정보들이 들어간다. 데이터를 VRAM으로 전송한다. 화면에 오브젝트를 그리도록 요청한다. 오브젝트를 그리는 과정이 실행되며 이러한 과정을 “Draw Call”이라고 한다. 특징 셰이더가 많이 패스되면 렌더링을 할 때 많은 draw call이 발생한다. 하나의 패스 = 하나의 draw call이다. 이 의미는 패스의 개수는 draw call의 개수와 동일하다. 2022. 4. 4.
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.
반응형