欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

unity置灰處理的實(shí)現(xiàn)

 更新時(shí)間:2021年07月19日 15:57:38   作者:塵世喧囂  
本文主要介紹了unity置灰處理的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

由于人眼對(duì)RGB敏剛程度不同,對(duì)綠色的敏感度最高,對(duì)紅色的敏感度次之,對(duì)藍(lán)色的敏感度最低,因此需要對(duì)RGB設(shè)置不同的權(quán)重,來(lái)達(dá)到灰度顯示的效果,比較常用的RGB權(quán)重值為 R:0.298912, G:0.586611,B: 0.114478
grayColor.rgb = float3(color.r0.298912 , color.g0.586611 ,color.b*0.114478)

1 UI對(duì)象不可用的時(shí)候顯示置灰效果

通過(guò)shader進(jìn)行控制置灰,shader中添加變量 _ShowGray,在代碼中可以通過(guò)動(dòng)態(tài)給改變量賦值的方式,控制是否進(jìn)行置灰顯示
shader 代碼是通過(guò) Image Effect shader進(jìn)行簡(jiǎn)單修改得到的,

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 場(chǎng)景中所有對(duì)象置灰,比如戰(zhàn)斗失敗時(shí)候顯示的置灰效果

場(chǎng)景置灰,一般采用的是對(duì)相機(jī)渲染進(jìn)行設(shè)置,在相機(jī)上面添加腳本,在OnRenderImage回調(diào)方法里面,對(duì)渲染對(duì)象進(jìn)行處理
腳本

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);
    }
}


啟用置灰腳本

在這里插入圖片描述

禁用置灰腳本

在這里插入圖片描述

這里的Gray材質(zhì)球用的的shader是一個(gè)簡(jiǎn)單的置灰效果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
        }
    }
}

到此這篇關(guān)于unity置灰處理的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)unity置灰處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • WPF中Binding字符串格式化技巧分享

    WPF中Binding字符串格式化技巧分享

    在?WPF?開發(fā)中,數(shù)據(jù)綁定(Binding)是一項(xiàng)核心功能,它允許?UI?元素與數(shù)據(jù)源緊密關(guān)聯(lián),下面我們就來(lái)深入了解下Binding字符串格式化的技巧吧
    2024-10-10
  • 介紹C# 泛型類在使用中約束

    介紹C# 泛型類在使用中約束

    這篇文章介紹了C# 泛型類在使用中約束,有需要的朋友可以參考一下
    2013-09-09
  • C#自定義簽名章實(shí)現(xiàn)方法

    C#自定義簽名章實(shí)現(xiàn)方法

    這篇文章主要介紹了C#自定義簽名章實(shí)現(xiàn)方法,涉及C#圖形繪制的相關(guān)實(shí)現(xiàn)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-08-08
  • C# 8.0中的范圍類型(Range Type)示例詳解

    C# 8.0中的范圍類型(Range Type)示例詳解

    這篇文章主要給大家介紹了關(guān)于C# 8.0中范圍類型(Range Type)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • C# WinForm捕獲全局變量異常 SamWang解決方法

    C# WinForm捕獲全局變量異常 SamWang解決方法

    本文將介紹C# WinForm捕獲全局變量異常 SamWang解決方法,需要的朋友可以參考
    2012-11-11
  • C#使用ZXing實(shí)現(xiàn)二維碼和條形碼的生成

    C#使用ZXing實(shí)現(xiàn)二維碼和條形碼的生成

    這篇文章主要為大家詳細(xì)介紹了C#如何使用ZXing實(shí)現(xiàn)二維碼和條形碼的生成與識(shí)別,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • 深入了解C#多線程安全

    深入了解C#多線程安全

    使用多線程無(wú)法避免的一個(gè)問(wèn)題就是多線程安全。那什么是多線程安全?如何解決多線程安全?本文將通過(guò)一些簡(jiǎn)單的例子為大家詳細(xì)介紹一下多線程相關(guān)的問(wèn)題,感興趣的可以了解一下
    2021-12-12
  • VS2010下生成dll的方法

    VS2010下生成dll的方法

    這篇文章主要介紹了VS2010下生成dll的方法,需要的朋友可以參考下
    2018-01-01
  • 雅虎公司C#筆試題(后半部份才是)

    雅虎公司C#筆試題(后半部份才是)

    雅虎公司C#筆試題(后半部份才是)...
    2007-04-04
  • .Net Winform開發(fā)筆記(四)透過(guò)現(xiàn)象看本質(zhì)

    .Net Winform開發(fā)筆記(四)透過(guò)現(xiàn)象看本質(zhì)

    本文將從Winform應(yīng)用程序中的Program.cs文件的第一行代碼開始逐步分析一個(gè)Winform應(yīng)用程序到底是怎樣從出生走向死亡
    2013-01-01

最新評(píng)論