UnityShader 实现 PhotoShop中的正片叠底
2017-08-02 13:10
190 查看
项目中有拍摄图片并以拍摄到的图片为贴图。
实际使用中发现可能手机拍摄到的照片会发灰。
通过PhotoShop中的正片叠底可以强化图片效果,下面一个简单的shader实现了对贴图进行正片叠底的修正
实际使用中发现可能手机拍摄到的照片会发灰。
通过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 } } }
相关文章推荐
- 【Unity Shader】结合Projector和Rendertexture实现实时阴影
- 使用透明度实现Mask遮罩的Unity Shader
- Unity Shader 学习笔记(十四)使用屏幕特效实现亮度饱和度和对比度
- [Unity]用shader实现画面呈圆形缩放的效果。
- 【Unity Shaders】使用Unity Render Textures实现画面特效——画面特效中的相似Photoshop的基本混合模式
- Unity里vertexShader里压扁模型来实现比较low的阴影
- unity shader 实现自由放大缩小效果
- Unity Shaders and Effects Cookbook (2-7)实现 Photoshop 色阶效果
- 【Unity&Shader】NGUI实现图集变灰功能
- Unity 使用 Vertex/Fragment Shader 完整实现 BumpMapping(NormalMapping)
- 【unity】【shader】基于MatCap实现适于移动平台的“次时代”车漆Shader
- Unity之通过Shader实现雪景
- unity用shader实现物体的忽隐忽现效果
- Unity喷墨效果Shader实现
- UnityShader初级篇——实现逐顶点高光反射光照模型
- Unity实现标准光照模型的Shader代码
- unity shader 实现常见的混合效果
- unity后期特效shader之photoshop混合模式公式的应用
- Unity Shaders and Effects Cookbook (7-2) Surface Shader 中实现 顶点动画