Unity为图片添加噪点图
时间: 2025-06-22 10:38:20 浏览: 8
### 在 Unity 中实现图像噪声效果
为了在 Unity 中为图像添加噪声效果,通常会采用后期处理技术。一种常见的方式是通过编写自定义的 Shader 来实现这一功能。下面是一个简单的例子,展示了如何创建一个带有噪声效果的着色器。
#### 创建 NoiseShader
首先,在项目中新建一个 Unlit 类型的 Shader 文件 `NoiseEffect.shader`:
```csharp
Shader "Custom/NoiseEffect"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_Strength ("Noise Strength", Range(0,1)) = 0.5
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata_t
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 pos : SV_POSITION;
};
sampler2D _MainTex;
float _Strength;
v2f vert (appdata_t v)
{
v2f o;
o.pos = UnityObjectToClipPos(v.vertex);
o.uv = v.uv;
return o;
}
fixed4 frag (v2f i) : SV_Target
{
// 获取原始像素颜色
fixed4 col = tex2D(_MainTex, i.uv);
// 添加随机噪声
float noiseValue = frac(sin(dot(i.uv * _ScreenParams.xy, float2(12.9898,78.233))) * 43758.5453);
// 将噪声应用到最终颜色上
col.rgb += lerp(float3(0,0,0),noiseValue,col.a)*_Strength;
return col;
}
ENDCG
}
}
}
```
此代码片段实现了基本的屏幕空间噪声效果[^1]。其中 `_Strength` 参数用于调整噪声强度,允许开发者根据需求调节视觉表现力。
接着,需要创建一个新的 Material 并将其 Shader 设置为我们刚刚编写的 `Custom/NoiseEffect` 。之后可以在场景中的 Camera 上挂载 Post Processing Stack V2 插件,并将该材质应用于堆栈内的 Custom Effect 节点下。
此外,还可以进一步优化这个基础版本,比如引入时间变量让噪声随帧变化;或是利用 Perlin 噪声算法生成更加自然连贯的效果[^2]。
阅读全文
相关推荐







