首页 > 其他分享 >简单后处理 - 屏幕置灰

简单后处理 - 屏幕置灰

时间:2023-02-17 22:11:26浏览次数:55  
标签:MainTex uv vertex grayMaterial 后处理 v2f 简单 float4 屏幕

 

 

置灰的shader

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

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

            sampler2D _MainTex;
            float4 _MainTex_ST;

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

            fixed4 frag(v2f i) : SV_Target
            {
                fixed4 c = tex2D(_MainTex, i.uv);
                c.rgb = Luminance(c.rgb);
                return c;
            }
            ENDCG
        }
    }
}

 

PostEffectsBase来自shader入门精要第12章

using UnityEngine;

public class PostEffectGray : PostEffectsBase
{

    public Shader m_grayShader;
    private Material m_grayMaterial;

    public Material material
    {
        get
        {
            m_grayMaterial = CheckShaderAndCreateMaterial(m_grayShader, m_grayMaterial);
            return m_grayMaterial;
        }
    }


    void OnRenderImage(RenderTexture src, RenderTexture dest)
    {
        if (null != material)
        {
            Graphics.Blit(src, dest, material);
        }
        else
        {
            Graphics.Blit(src, dest);
        }
    }

}

 

参考

unity 常见的置灰处理_天涯过客TYGK的博客-CSDN博客_unity置灰mash

 

标签:MainTex,uv,vertex,grayMaterial,后处理,v2f,简单,float4,屏幕
From: https://www.cnblogs.com/sailJs/p/17120669.html

相关文章

  • 【已解决】com.alibaba.fastjson.JSONException: expect ':' at 0 解决方法【一行就解
    报错原因是把List<Map<String,Object>>直接转json,其中格式不对就报错了。List<Map<String,Object>>listinfo=repository.getxxxx(xx,xx,xx);当for中使用:JSONObjectobj=......
  • C语言扫雷游戏简单实现
    这是一篇介绍扫雷游戏的博客,采用C语言实现,主要作为数组的简单实践,包括有游戏实现的简单思路、游戏代码,以及笔者的一些小经验,希望可以给同为小白的同志一些参考,如有错误,还......
  • 虚幻引擎UE4如何实现打包后播放片头?其实超简单!
    虚幻引擎作为一款全球性的3D实时开发工具,不仅在游戏行业,其在建筑、影视、医疗等行业也被广泛使用。作为开发人员,有时开发的UE虚幻引擎项目比较大,开始运行项目时需要等待较......
  • 基于ISC DHCP的简单准入开源方案
    实现所需要的组件:1)LINUX操作系统;ISC-DHCP-SERVER软件2)支持DHCPSnooping、防ARP中间人攻击的接入交换机 实现简单准入的原理:ISC-DHCP-Server的配置文件dhcpd.conf......
  • 云计算的简单解释
    云计算=公有云(阿里,华为,腾讯云)+私有云(Openstack)+混合云。云计算顾名思义,就是计算在云端。以公有云为例子,是指比如我们有一个程序计算的人物,我放在了阿里云的服务器上,进行......
  • 使用SpringBoot简单实现WebRTC群聊会议室(Mesh方案)
    近期需要做一个类似会议室功能,但网络上大多数是一对一通信,故记录分享希望帮助到有用的人WebRTC一对一聊天原理关于WebRTC建立一对一聊天的模板网上很多,可参考以下博客:spr......
  • Vite的简单原理
    请说说Vite的原理Vite有如下特点:快速的冷启动:NoBundle+esbuild预构建即时的模块热更新:基于ESM的HMR,同时利用浏览器缓存策略提升速度真正的按需加载:利......
  • Consul简单使用以及集群选举原理
    目录是什么功能有哪些Consul服务搭建下载运行生产者消费者服务搭建生产者&消费者POM生产者Yml消费者Yml消费者java代码ConfigController生产者java代码Controller启动类测......
  • SecureCRT 屏幕输出行数设置
    第一步:打开设置第二步:设置历史展示行数第三步:保存后重启软件即可 ......
  • go语言简单播放音频
    代码来自github官网上的api使用案例,编写过程中外部包无法导入,爆红,在终端开启代理导入即可。你可能会遇到os.open文件无法找到的问题,放入项目根目录即可,或者放入你新建的......