유 니 티 재 처리 실현

5276 단어 unity재 를 놓다
RGB 에 대한 민감 도 는 사람마다 눈 이 다 르 기 때문에 녹색 에 대한 민감 도가 가장 높 고 빨간색 에 대한 민감 도가 그 다음 이 고 파란색 에 대한 민감 도가 가장 낮 기 때문에 RGB 에 대해 서로 다른 가중치 를 설정 하여 그 레이스 케 일 에 나타 나 는 효 과 를 달성 해 야 한다.비교적 자주 사용 하 는 RGB 가중치 는 R:0.298912,G:0.586611,B:0.114478 이다.
grayColor.rgb = float3(color.r0.298912 , color.g0.586611 ,color.b*0.114478)
1 UI 대상 이 사용 할 수 없 을 때 회색 효과 보이 기
shader 를 통 해 회색 을 제어 하고 shader 에 변 수 를 추가 합 니 다ShowGray,코드 에서 동적 으로 양 대 입 을 바 꾸 는 방식 으로 회색 디 스 플레이 여 부 를 제어 할 수 있 습 니 다.
shader 코드 는 Image Effect shader 를 통 해 간단하게 수정 되 었 습 니 다.

Shader "UI/UIGray"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
        [Toggle]_ShowGray("show gray", Range(0,1)) = 0
    }
    SubShader
    {
        // No culling or depth
        Cull Off ZWrite Off ZTest Always
        //-----add code-------
        Blend SrcAlpha OneMinusSrcAlpha
        //----finish----
        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            #include "UnityCG.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = v.uv;
                return o;
            }

            sampler2D _MainTex;
            fixed _ShowGray;

            fixed4 frag (v2f i) : SV_Target
            {
                fixed4 col = tex2D(_MainTex, i.uv);
                // just invert the colors
                //col.rgb = 1 - col.rgb;
            //----add code----
                fixed gray = dot(col.rgb, float3(0.298912, 0.586611, 0.114478));
                col.rgb = lerp(col.rgb, fixed3(gray, gray, gray), _ShowGray);
            //-----finish-----
                return col;
            }
            ENDCG
        }
    }
}

2 장면 에서 모든 대상 이 회색 을 설치 합 니 다.예 를 들 어 전투 실패 시 나타 나 는 회색 효과 입 니 다.
장면 에 회색 을 설치 할 때 보통 카메라 렌 더 링 을 설정 하고 카메라 에 스 크 립 트 를 추가 하 며 OnRenderImage 리 셋 방법 에서 렌 더 링 대상 을 처리 합 니 다.
각본

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PostEffectGray : MonoBehaviour
{
    public Material grayMaterial;
    void OnRenderImage(RenderTexture src, RenderTexture dest)
    {
        Graphics.Blit(src, dest, grayMaterial);
    }
}


회색 스 크 립 트 사용 하기
在这里插入图片描述
회색 스 크 립 트 사용 안 함
在这里插入图片描述
여기 그레이 소재 공 에 사용 되 는 shader 는 간단 한 회색 효과 shader 입 니 다.코드 는 다음 과 같 습 니 다.

Shader "Unlit/Gray"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 100

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            // make fog work
            #pragma multi_compile_fog

            #include "UnityCG.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                UNITY_FOG_COORDS(1)
                float4 vertex : SV_POSITION;
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                UNITY_TRANSFER_FOG(o,o.vertex);
                return o;
            }

            fixed4 frag (v2f i) : SV_Target
            {
                // sample the texture
                fixed4 col = tex2D(_MainTex, i.uv);
                half3 gray = dot(col.rgb, half3 (0.22, 0.707, 0.071));
            // apply fog
                UNITY_APPLY_FOG(i.fogCoord, col);
                return fixed4(gray.rgb, col.a);
            }
            ENDCG
        }
    }
}

유 니 티 재 처리 의 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 유 니 티 재 처리 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기