返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >unity置灰处理的实现
  • 279
分享到

unity置灰处理的实现

2024-04-02 19:04:59 279人浏览 泡泡鱼
摘要

目录1 UI对象不可用的时候显示置灰效果2 场景中所有对象置灰,比如战斗失败时候显示的置灰效果由于人眼对RGB敏刚程度不同,对绿色的敏感度最高,对红色的敏感度次之,对蓝色的敏感度最低

由于人眼对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);
    }
}


启用置灰脚本

在这里插入图片描述

禁用置灰脚本

在这里插入图片描述

这里的Gray材质球用的的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
        }
    }
}

到此这篇关于unity置灰处理的实现的文章就介绍到这了,更多相关unity置灰处理内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: unity置灰处理的实现

本文链接: https://lsjlt.com/news/130796.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • unity置灰处理的实现
    目录1 UI对象不可用的时候显示置灰效果2 场景中所有对象置灰,比如战斗失败时候显示的置灰效果由于人眼对RGB敏刚程度不同,对绿色的敏感度最高,对红色的敏感度次之,对蓝色的敏感度最低...
    99+
    2024-04-02
  • unity置灰处理的实现方法
    这篇文章主要介绍“unity置灰处理的实现方法”,在日常操作中,相信很多人在unity置灰处理的实现方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”unity置灰处理的实现方法”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-20
  • Java数字图像处理之图像灰度处理怎么实现
    本篇内容介绍了“Java数字图像处理之图像灰度处理怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、简介图像灰度化处理可以作为图像处...
    99+
    2023-07-02
  • C++ opencv图像处理实现灰度变换示例
    目录灰度变换概念灰度变换的作用灰度变换的方法灰度化灰度的概念对彩色图进行灰度化1.加权平均值法2.取最大值3.平均值灰度的线性变换1.线性变换2.分段线性变换灰度的非线性变换1.对数...
    99+
    2024-04-02
  • Unity后处理效果之边角压暗的实现方法
    本篇内容介绍了“Unity后处理效果之边角压暗的实现方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!我使用的版本为2019.4.12(LT...
    99+
    2023-06-09
  • C语言实现BMP图像处理(彩色图转灰度图)
    我们知道真彩图不带调色板,每个象素用 3 个字节,表示 R、G、B 三个分量。所以处理很简单,根据 R、G、B 的值求出 Y 值后,将 R、G、B 值都赋值成 Y,写入新图即可。 在...
    99+
    2024-04-02
  • Android实现设置APP灰白模式效果
    目录方案一:方案二:方案三细心点的童鞋会发现,到特殊节日比如清明节这天很多App都设置了符合主题的灰白模式,比如京东,如图所示: 我们再来看看最终实现的效果图: 那我们今天就介绍...
    99+
    2024-04-02
  • python图像处理-利用一行代码实现灰度图抠图
    目录一行代码实现灰度图抠图Python抠图程序源码准备程序构思完整代码截图如下,每条语句均有功能注释一行代码实现灰度图抠图 抠图是ps的最基本技能,利用python可以实现用一行代码...
    99+
    2024-04-02
  • Unity如何实现高效的音效管理类
    本篇内容介绍了“Unity如何实现高效的音效管理类”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!效果自动维护一个 AudioSource的池...
    99+
    2023-07-05
  • vue网站全局置灰功能如何实现
    本篇内容介绍了“vue网站全局置灰功能如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、前端独立实现两种不同的逻辑,一种是前端自己实...
    99+
    2023-07-04
  • js按钮置灰不可点击怎么实现
    要实现按钮置灰不可点击,可以使用以下方法:1. 使用JavaScript的setAttribute()方法将按钮的disabled属...
    99+
    2023-08-08
    js
  • Unity中的静态批处理和动态批处理操作
    前言 Unity在运行时可以将一些物体进行合并,从而用一个绘制调用来渲染他们。这一操作,我们称之为“批处理”,能得到越好的渲染性能。 Unity中内建的批处理机制所达到的效果要明显强...
    99+
    2024-04-02
  • python图片灰度化处理的几种方法
    今天在学习的时候,发现scipy.misc中的imread提取图片的方法被弃用了。太生气了! 只好使用了matplotlib.pyplot中的imread了,可是当我发现他不能直接通过True来提取灰度图片时,...
    99+
    2022-06-02
    python图片灰度化 python 灰度化
  • android 处理配置变更的实现方法
    目录1.配置变更2.处理配置变更之:在配置变更期间保留对象3.处理配置变更之:自行处理配置变更1.配置变更 某些设备配置可能会在运行时发生变化(例如屏幕方向、键盘可用性,以及当用户...
    99+
    2024-04-02
  • Unity实现高效的音效管理类的示例代码
    目录效果食用方式源码效果 自动维护一个 AudioSource的池子 如果超过了池子的峰值 池子会生成一个新的AudioSource对象来进行扩容 支持2D音效调用方式 publi...
    99+
    2023-03-22
    Unity实现音效管理类 Unity音效管理类 Unity音效管理
  • html中如何实现a标签置灰不可点击
    小编给大家分享一下html中如何实现a标签置灰不可点击,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!a标签的title属性可以实现鼠标放上去显示信息的功能<a title=...
    99+
    2024-04-02
  • Unity实现识别图像中主体及其位置
    目录EasyDL图像分割介绍创建应用创建模型EasyDL图像分割介绍 创建应用 1.进入百度AI开放平台打开控制台: 2.在左上角打开产品服务列表,找到EasyDL零门槛AI开放...
    99+
    2024-04-02
  • Unity实现简单摇杆的制作
    利用UGUI制作一个简单摇杆,效果图 1、首先建立两个Image,然后将其中一个为父物体,另一个为子物体,并且调整好大小: ps:将子物体的锚点设置为居中  ...
    99+
    2024-04-02
  • Unity实现换装系统的方法
    这篇文章主要介绍Unity实现换装系统的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体内容如下1.创建Sprite Library Asset2.添加新目录Label 可以理解为标签,在代码调用过程中使用,将...
    99+
    2023-06-14
  • Unity打包代码到DLL的实现
    使用Unity API PlayerBuildInterface.CompilePlayerScripts 将项目中的代码生成为 DLL 程序集 在 Editor 文件夹下新建脚本 ...
    99+
    2023-03-09
    Unity打包代码到DLL Unity打包代码
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作