유니티/쉐이더 (7) 썸네일형 리스트형 [Unity Shader] 가까워질수록 보이는 쉐이더, 카메라 위치 받아오기 Properties { _DisPower("Distance Power", float) = 0 } SubShader { Tags { "RenderType"="Transparent" "Queue"="Transparent" } LOD 200 CGPROGRAM #pragma surface surf Lambert alpha:fade #pragma target 3.0 float _DisPower; struct Input { float3 worldPos; }; void surf (Input IN, inout SurfaceOutput o) { fixed4 c = fixed4(1, 1, 1, 1); float d = distance(IN.worldPos, _WorldSpaceCameraPos) / _DisPower; d.. [Unity Shader] Custom PostProcessing(포스트 프로세싱) 직접 만들기 (노이즈 필터) Post Processing(포스트 프로세싱)이란? 기존에 렌더링된 씬에 렌더링 효과를 더하는 작업 유니티에서 포스트프로세싱 기능을 제공하긴 하지만 직접 만들어서 적용하는 법을 알아보겠습니다. C# 스크립트 생성 c# 스크립트를 생성해준뒤 다음과 같이 작성해줍니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class PostProcessing : MonoBehaviour { public Material material; private void OnRenderImage(RenderTexture source, RenderTexture destination) { Graphics.Blit(source.. [Unity Shader] 비눗방울 쉐이더 만들기 이런 느낌으로 만들어보겠습니다 기본코드 Smoothness는 1, Metallic은 0으로 해뒀습니다. Shader "Custom/Bubble" { Properties { _Glossiness ("Smoothness", Range(0,1)) = 0.5 _Metallic ("Metallic", Range(0,1)) = 0.0 } SubShader { Tags { "RenderType"="Transparent" "Queue"="Transparent" } LOD 200 CGPROGRAM #pragma surface surf Standard alpha:fade #pragma target 3.0 half _Glossiness; half _Metallic; struct Input { float3 viewDir; }.. [Unity Shader] 쉐이더로 애니메이션 재생 Properties { _MainTex("Texture", 2D) = "white" {} _XCount("Texture Count", Range(1, 10)) = 1 _Speed("Speed", Range(0.1, 10)) = 1 } SubShader { Tags { "RenderType" = "Transparent" "Queue" = "Transparent" } LOD 200 cull off CGPROGRAM #pragma surface surf Lambert noambient alpha:fade #pragma target 3.0 sampler2D _MainTex; float _Speed; int _XCount; int _WaitCount; struct Input { float2 uv_MainTex; .. [Unity Shader] 외곽선 만들기 : Pass 추가, Vertex Shader, zwrite 완성 결과 Pass Pass는 오브젝트 렌더링 단위로 Pass 수만큼 오브젝트를 그려줍니다. pass추가 Standard Surface Shader를 만들고 다음과 같이 수정했습니다. CGPROGRAM ~ ENDCG 부분을 추가해주면 Pass가 추가됩니다. 똑같이 2번 그린 것이기 때문에 변화는 없습니다. Vertex Shader Surface Shader는 색을 제어하고 Vertex Shader는 말그대로 vertex(정점)를 제어할 수 있습니다. vertex shader 추가 - #pragma에 vertex:(함수 이름)을 작성합니다. - void (함수이름) (inout appdata_full v)로 함수를 작성합니다. appdata full 구조체 float4 vertex : POSITION; f.. [Unity Shader] 커스텀 라이트 : Lambert, Half - Lambert Lambert (램버트) Specular 공식이 없고 빛에 의한 밝고 어두움이 구현된 가벼운 라이트 구조 내장된 Lambert를 이용한 코드 Shader "Custom/Lambert" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } CGPROGRAM #pragma surface surf Lambert #pragma target 3.0 sampler2D _MainTex; struct Input { float2 uv_MainTex; }; void surf (Input IN, inout SurfaceOutput o) { fixed4 c = tex2D (_MainTex, IN... [Unity Shader] 쉐이더 코드 설명 : Properties, SurfaceOutputstandard 쉐이더 코드 예시로 설명할 쉐이더 코드입니다. 스탠다드 서피스 쉐이더로 만들었습니다. Properties 쉐이더 인터페이스를 만들어줍니다. 인스펙터 창에 표시됩니다. 끝에 ;를 붙이지 않습니다. - 순서대로 변수명, display name, 형식, 초기값 입니다. - 변수명: 밑줄이 필수는 아니지만 입력받았다는 의미로 자주 쓰입니다. - display name: 인스펙터창에 표시 될 이름입니다. - 형식: 어떤 종료의 인터페이스를 만들지에 대한 내용입니다. - 초기값: 쉐이더가 처음 만들어질 때 초기값입니다. 인터페이스 종류 오른쪽처럼 코드를 작성하면 인스펙터 창에 왼쪽처럼 표시됩니다. SubShader Tags RenderType 태그 씬을 렌더링하기 위한 정보를 얻으려고 사용되는 리플레이스드 쉐이더(.. 이전 1 다음