unity 黑白shader

unity导入3Dmax模型时。很多时候模型中都带黑白透明的材质,然而unity自带的shader没有这样的功能,自能自己写:

shader代码如下“

Shader "Esfog/FilterBlack" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader 
{
Tags { "RenderType"="Opaque" }
//LOD 200
Cull Off
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
uniform sampler2D _MainTex;
struct VertexOutput
{
float4 pos:SV_POSITION;
float4 uv:TEXCOORD0;
};


VertexOutput vert(float4 vertex:POSITION,float4 uv:TEXCOORD0)
{
VertexOutput o;
o.pos = mul(UNITY_MATRIX_MVP,vertex);
o.uv = uv;
return o;
}


float4 frag(VertexOutput i):COLOR
{
float4 col;
col.rgba = tex2D(_MainTex,i.uv.xy);
col.a = 1;
if(col.r + col.g + col.b == 0)
{
col.a = 0;
}
return col;
}


ENDCG
}


FallBack "Diffuse"
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity中的全屏Shader是一种特殊类型的Shader,它可以完全覆盖屏幕并对屏幕上的每个像素进行自定义处理。全屏Shader通常用于实现各种特效和图像处理技术,如模糊、扭曲、光线效果、色彩调整等。 要实现全屏Shader,首先需要在Unity中创建一个特殊类型的Shader,称为Screen Shader。然后,在Shader中编写对整个屏幕进行处理的代码。全屏Shader的编写使用的主要特殊变量是`i.uv`,它代表了当前像素在屏幕空间中的位置。通过操作`i.uv`可以实现对每个像素的自定义处理。 全屏Shader通常结合着UnityShader图形管线中的某个RenderTexture,用于在屏幕上渲染Shader的输出结果。可以使用一个屏幕大小的RenderTexture作为RenderTarget,将全屏Shader的输出结果渲染到该RenderTexture上。然后,将该RenderTexture或它的内容应用到屏幕上,实现全屏的效果。 全屏Shader的具体实现可以根据特定需求进行定制。例如,要实现一个简单的黑白效果,可以在Shader中将每个像素的R、G、B三个通道的值进行平均,从而将彩色图像转换为灰度图像。又例如,要实现一种扩散模糊效果,可以通过对像素周围的多个像素进行采样和平均来实现模糊效果。 总结来说,Unity中的全屏Shader是一种强大的图像处理工具,通过对屏幕上的每个像素进行自定义处理,可以实现各种特效和图像处理效果。在实现全屏Shader时,需要创建一个Screen Shader,并通过操作`i.uv`来实现对每个像素的处理。最后,将Shader的输出结果应用到屏幕上,完成全屏的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值