admin管理员组文章数量:1586542
项目中有拍摄图片并以拍摄到的图片为贴图。
实际使用中发现可能手机拍摄到的照片会发灰。
通过PhotoShop中的正片叠底可以强化图片效果,下面一个简单的shader实现了对贴图进行正片叠底的修正
Shader "Unlit/FixImageShader"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_Percent("Percent",range(0,1)) = 0
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_fog
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
sampler2D _MainTex;
float4 _MainTex_ST;
float _Percent;
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
{
// sample the texture
fixed4 col = tex2D(_MainTex, i.uv);
col.r =lerp (col.r,(col.r * col.r / 0.5 ) * step(col.r, 0.5) + ( 1 - (1-col.r)* (1-col.r) /0.5 ) * step(0.5, col.r),_Percent);
col.g =lerp (col.g,(col.g * col.g / 0.5 ) * step(col.g, 0.5) + ( 1 - (1-col.g)* (1-col.g) /0.5 ) * step(0.5, col.g),_Percent);
col.b =lerp (col.b,(col.b * col.b / 0.5 ) * step(col.b, 0.5) + ( 1 - (1-col.b)* (1-col.b) /0.5 ) * step(0.5, col.b),_Percent);
return col;
}
ENDCG
}
}
}
本文标签: 正片UnityShaderphotoshop
版权声明:本文标题:UnityShader 实现 PhotoShop中的正片叠底 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1727979161a1140906.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论