Shader "PhotoshopLevels"
{
Properties
{
_MainTex("MainTex", 2D) = "" {}
_InBlack("InBlack", Range(0, 255)) = 0
_InGamma("InGamma", Range(0, 255)) = 1.61
_InWhite("InWhite", Range(0, 255)) = 255
_OutBalck("OutBlack", Range(0, 255)) = 0
_OutWhite("OutWhite", Range(0, 255)) = 255
}
SubShader
{
Tags
{
"RenderType" = "Opaque"
}
LOD 200
CGPROGRAM
#pragma surface surf Lambert
sampler2D _MainTex;
float _InBlack;
float _InGamma;
float _InWhite;
float _OutBlack;
float _OutWhite;
float outRPixel;
struct Input
{
float2 uv_MainTex;
};
void surf(Input IN, inout SurfaceOutput o)
{
float4 c = tex2D(_MainTex, IN.uv_MainTex);
outRPixel = c.r * 255.0;
outRPixel = max(0, outRPixel - _InBlack);
outRPixel = saturate(pow(outRPixel / (_InWhite - _InBlack), _InGamma));
outRPixel = (outRPixel * (_OutWhite - _OutBlack) + _OutBlack) / 255.0;
c.r = outRPixel;
o.Albedo = c.rgb;
o.Alpha = c.a;
}
ENDCG
}
}
使用纹理制作特效 - Photoshop色阶效果
最新推荐文章于 2025-11-14 17:57:15 发布
本文介绍了一种使用Unity Shader来模拟Photoshop级别调整效果的方法。通过定义输入和输出黑白点、伽玛值等参数,该Shader可以在实时渲染中调整纹理的亮度和对比度。这种技术适用于希望在游戏中实现高质量图像后期处理效果的开发者。
1379

被折叠的 条评论
为什么被折叠?



