할 때 마다 잊어버려서 백업용. 


Shader "ltest"

{

        SubShader

        {

               Tags{ "RenderType" = "Opaque" }

 

               CGPROGRAM

               #pragma surface surf Lambert 

               struct Input

               {

                       float4 screenPos;//스크린 포지션을 받읍시다

               };

 

               sampler2D _CameraDepthTexture;

 

               void surf( Input i , inout SurfaceOutput o )

               {

                       float4 ScreenPos = float4( i.screenPos.xyz , i.screenPos.w + 0.00000000001 ); //0으로 나누는 사태만 방지하기 위해 작은 값을 넣습니다. 

                       float4 screenPosNorm = ScreenPos / ScreenPos.w; // 퍼스펙티브 제거

                       //screenPosNorm.z = ( UNITY_NEAR_CLIP_VALUE >= 0 ) ? screenPosNorm.z : screenPosNorm.z * 0.5 + 0.5;

                       //near클립 값이 0보다 크면 냅두고 작으면 하프 램버트 처리

                       float screenDepth= LinearEyeDepth(UNITY_SAMPLE_DEPTH(tex2Dproj(_CameraDepthTexture,UNITY_PROJ_COORD(ScreenPos)))); // 깊이 텍스쳐를 스크린 좌표계를 이용해서 깊이값을 뽑아내고 그걸 리니어로 변환

                       o.Emission  = 1- ( screenDepth - LinearEyeDepth( screenPosNorm.z ) );

               }

               ENDCG

        }

       

}