首页 > 其他分享 >后处理 - 亮度,饱和度,对比度

后处理 - 亮度,饱和度,对比度

时间:2024-03-27 22:33:58浏览次数:27  
标签:Material Shader finalColor 饱和度 对比度 renderTex 后处理 public

效果

 

c#代码

using UnityEngine;

public class MyBrightnessSaturationAndContrast : MonoBehaviour
{

    public Shader m_Shader;
    public Material m_Material;

    [Range(0.0f, 3.0f)]
    public float m_brightness = 1.0f;

    [Range(0.0f, 3.0f)]
    public float m_saturation = 1.0f;

    [Range(0.0f, 3.0f)]
    public float m_contrast = 1.0f;

    void Start()
    {
        if (false == SystemInfo.supportsImageEffects)
        {
            Debug.LogWarning("This platform does not support image effects or render textures.");
            this.enabled = false;
            return;
        }

        if (null == m_Material)
        {
            if (null != m_Shader && m_Shader.isSupported)
            {
                m_Material = new Material(m_Shader);
                m_Material.hideFlags = HideFlags.DontSave;
            }
        }
        else if (m_Material.shader != m_Shader)
        {
            if (m_Shader.isSupported) //优先shader
            {
                m_Material = new Material(m_Shader);
                m_Material.hideFlags = HideFlags.DontSave;
            }
        }
    }

    void OnRenderImage(RenderTexture src, RenderTexture dest)
    {
        if (null != m_Material)
        {
            m_Material.SetFloat("_Brightness", m_brightness);
            m_Material.SetFloat("_Saturation", m_saturation);
            m_Material.SetFloat("_Contrast", m_contrast);

            Graphics.Blit(src, dest, m_Material);
        }
        else
        {
            Graphics.Blit(src, dest);
        }
    }

}

 

shader

Shader "My/PostEff/BrightnessSaturationAndContrast"
{
	Properties
	{
		_MainTex("Base (RGB)", 2D) = "white" {}
		_Brightness("Brightness", Float) = 1
		_Saturation("Saturation", Float) = 1
		_Contrast("Contrast", Float) = 1
	}

	SubShader
	{
		Tags { "RenderType" = "Opaque" }
		LOD 100

		Pass
		{
			ZTest Always
			Cull Off
			ZWrite Off

			CGPROGRAM
			#pragma vertex vert
			#pragma fragment frag

			#include "UnityCG.cginc"

			sampler2D _MainTex;
			float4 _MainTex_ST;

			half _Brightness;
			half _Saturation;
			half _Contrast;

			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 = TRANSFORM_TEX(v.uv, _MainTex);
				return o;
			}

			fixed4 frag(v2f i) : SV_Target
			{
				fixed4 renderTex = tex2D(_MainTex, i.uv);

				//亮度
				fixed3 finalColor = renderTex.rgb * _Brightness;

				//饱和度
				fixed luminance = 0.2125 * renderTex.r + 0.7154 * renderTex.g + 0.0721 * renderTex.b;
				fixed3 luminanceColor = fixed3(luminance, luminance, luminance); //饱和度为0的颜色值
				finalColor = lerp(luminanceColor, finalColor, _Saturation); //饱和度为0~某个饱和度

				//对比度
				fixed3 avgColor = fixed3(0.5, 0.5, 0.5); //对比度为0的颜色值
				finalColor = lerp(avgColor, finalColor, _Contrast);

				return fixed4(finalColor, renderTex.a);
			}
			ENDCG
		}
	}

	Fallback Off
}

 

标签:Material,Shader,finalColor,饱和度,对比度,renderTex,后处理,public
From: https://www.cnblogs.com/sailJs/p/18098458

相关文章

  • 使用纹理对比度检测检测AI生成的图像
    在本篇文章中我们将介绍如何开发一个深度学习模型来检测人工智能生成的图像大多数用于检测人工智能生成图像的深度学习方法取决于生成图像的方法,或者取决于图像的性质/语义,其中模型只能检测人工智能生成的人、脸、汽车等特定对象。但是这篇论文“RichandPoorTextureContrast......
  • [解决办法]笔记本win11 win10系统亮度自动降低 关闭自动对比度自动亮度自适应
    https://www.bilibili.com/video/BV18K411k7AJ解决办法整理:控制面板:控制面板\所有控制面板项\电源选项\编辑计划设置这里的显示里面有的电脑有自动降低亮度相关设置英特尔显卡管理面板-功率菜单,节能功能关闭。(微软商店可以装这个软件)首先,他节约不少多少点能服务-......
  • 关于URP14绘制全屏Blit后处理的改动
    最近用回URP,发现RendererFeature这部分改动很大,启用了之前HDRP的RTHandle,RTHandle的设计类似于优化版本的RenderTexture,可以统一控制缩放或者并非一对一的RT内存申请。并且Blit的方式变成了先SetTarget后做一次绘制,也是和HDRP对齐。 在新的URP中实现全屏后处理效果可以走Stac......
  • 【阅读笔记】对比度增强-《Efficientcontrast enhancement using adaptive gamma corr
    2013年发表在TIP上的对比度增强算法AGCWD(Efficientcontrastenhancementusingadaptivegammacorrectionwithweightingdistribution)提出了一种自动映射技术,通过亮度像素的伽马校正和概率分布来提高调暗图像的亮度。为了增强视频,所提出的图像增强方法使用关于每帧之间差异的......
  • 【阅读笔记】对比度增强-《Efficientcontrast enhancement using adaptive gamma corr
    2013年发表在TIP上的对比度增强算法AGCWD(Efficientcontrastenhancementusingadaptivegammacorrectionwithweightingdistribution)提出了一种自动映射技术,通过亮度像素的伽马校正和概率分布来提高调暗图像的亮度。为了增强视频,所提出的图像增强方法使用关于每帧之间差异的......
  • 【ABAQUS脚本】后处理快速出图
    效果图:#-*-coding:utf-8-*-#Donotdeletethefollowingimportlinesfromabaqusimport*fromabaqusConstantsimport*import__main__fromodbAccessimport*#odbnameodbName='Job-case1.odb'myodb=session.odbs[odbName]stepName='S......
  • PACS医学影像系统源码,支持Worklist服务,三维影像后处理和分析功能
    PACS/RIS医学影像存储和传输系统,实现从预约、登记、分诊、排队叫号、检查、诊断阅片、报告发布、自助胶片打印等流程化管理。PACS系统应用在医院影像科时,它直接与CT、MR、ECT、DSA和DR等提供DICOM标准图像的医学设备进行软硬对接。该系统应用在超声、内窥镜、病理等科室时,提供视频......
  • ASR项目实战-后处理
    本文深入探讨后处理环节。在本环节要处理的重要特性有分词、断句、标点符号、大小写、数字等的格式归一等。分词和NLP、搜索等场景下的分词含义不同。对于拼音类的语言,比如英语、法语等,句子由多个单词组成,语音输出的结果,需要按需在各个单词之间补充或者去掉空格。对于中文来说,......
  • JS把base64压缩后处理为base64
    重点参考了这篇文章:前端JS利用canvas的drawImage()对图片进行压缩 :https://www.cnblogs.com/goloving/p/8260206.html其实是AIChatGPT帮忙整理的,我用过觉得好,现在记录下来://把base64压缩后处理为base64functioncompressBase64Image(base64Data,maxWidth,maxHei......
  • PACS医学影像报告管理系统源码带CT三维后处理技术
    从各种医学影像检查设备中获取、存储、处理影像数据,传输到体检信息系统中,生成图文并茂的体检报告,满足体检中心高水准、高效率影像处理的需要。自主知识产权:拥有完整知识产权,能够同其他模块无缝对接国际标准:按照国际规范DICON3.0标准处理医学影像数据无缝对接:无缝对接各种体检影......