[UnityShader3]去色效果

参考链接:http://www.xiaobao1993.com/373.html


去色shader:

Shader "Custom/Gray" {
	Properties 
	{
		_MainTex ("Base (RGB)", 2D) = "white" {}
	}    
    SubShader     
    {    
        Pass{  
        CGPROGRAM    
        #pragma vertex vert    
        #pragma fragment frag    
        #include "UnityCG.cginc" 
		
		sampler2D _MainTex;

        struct vertexOutput {    
        float4 pos : SV_POSITION;    
        float4 tex : TEXCOORD0;    
        };    
        vertexOutput vert(appdata_full input)    
        {    
            vertexOutput output;    
            output.pos = mul(UNITY_MATRIX_MVP, input.vertex);
			output.tex = input.texcoord;        
            return output;    
        }    
        float4 frag(vertexOutput input) : COLOR    
        {
			float4 col = tex2D(_MainTex, input.tex);
			//参考UnityCG.cginc中的Luminance
			float grey = dot(col.rgb, fixed3(0.22, 0.707, 0.071));
			col.rgb = float3(grey, grey, grey);     
            return col;    
        }    
        ENDCG}     
    }    
    //如果以上SubShader渲染失败则回滚采用Diffuse    
    FallBack "Diffuse"    
} 

前后对比图:



### 实现灰度或效果的方法 在 Unity 的 Shader Graph 中实现灰度或效果可以通过创建自定义着器并调整其属性来完成。具体来说,可以按照如下方法: #### 创建新的 Shader Graph 资源文件 首先,在项目资源中新建一个 Shader Graph 文件。 #### 添加必要的节点 进入编辑模式后,向图中添加以下重要节点: - **Sample Texture 2D**:用于获取输入图像的颜色数据[^1]。 ```csharp // 示例代码展示如何配置材质属性 material.SetTexture("_MainTex", texture); ``` - **Luminance (亮度)** 或者手动计算亮度:此节点会基于 RGB 值计算出单通道的亮度值,这是转换成灰的关键步骤之一[^2]。 - **Color Adjustments (彩调节)** 和其他可能需要的支持组件中的调工具。 - **Screen Position Masking (屏幕位置遮罩)** 如果涉及到特定区域的应用,则还需要考虑加入这一部分逻辑。 #### 构建输出路径 连接上述提到的所有处理过程到最终的 Color 输出端口上,确保整个流程能够顺利执行并将结果呈现出来。 对于简单的全屏范围内的操作而言,可以直接将 Luminance 计算的结果作为新颜色传递给 Output Node;而对于更复杂的场景比如带有透明度或者其他特效的情况,则可以根据实际需求进一步扩展该图形结构。 #### 设置材质参数 最后一步是在关联使用的 Material 上设置好对应的纹理贴图以及其他必要选项,并通过脚本等方式动态更改这些设定以适应同场合下的应用需求[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值