統一シェーダー相乗効果

混色部方程式モデルは以下の通りであります:

 
非常に実用的なフェルト、効果を確認しようとするシェーダを書きます。
 
混合モードがあるので、次の2枚の画像を必要とするが、私たちはカメラの内容に対処した後、一層のみ、ので、私はAとBに対処するために同じコンテンツを使用し、両方置きます。
 
明らかに同じ内容AとB層は、その後、最初の2つの式と確かに暗く変数が有効でない、のは、第三式を試してみましょう。
 
まず、このようなシェーダ、への式:
     //乗算
fixed4 Muitiply(fixed4 _color) {
   固定されたR = POW(。_color R、2)。
   固定G = POW(_color。G、2)。
      固定されたB = POW(_color。B、2)。
   戻りfixed4(R、G、B、1.0 F)。
  }
カラー値における当社のシェーダが0-1である一方で、我々は0-1の色の値の範囲を取得するために255で割った式中のすべての色の値をしたいので、式の画像のカラー値は、0〜255に基づいて算出されています。変換後、上記式中のコードは、ルックなります。
 
_colorピクセルは、各ピクセルのRGB値が算出され、透明性がここで考慮されていない、直接1.0を充填することができます。
 
結果を見てください:
 
第一は、元である、第二の乗算でPhotoshopの効果であり、第三は、我々はの結束で効果を確認することです。
 
あなたがPhotoshopや基本的には同じで得られた結果で団結を見ることができる、のは、再び別の式を試してみましょう。
 
次のように私たちは色を見て、この時間は、対応するシェーダコードは次のようになります。
 
  //色
fixed4 画面(fixed4 _color) {
固定されたR = 1 - (POW((1 - _color。R)、2))。
固定G = 1 - (POW((1 - _color。G)、2))。
固定されたB = 1 - (POW((1 - _color。B)、2))。
戻りfixed4(R、G、B、1.0 F)。
}
效果图:
 
效果也基本一致,看来我们的思路是正确的,这样看来上面图片中给出的那些公式我们都可以正常使用。
 
这里我们只是对一张图片做了处理,我们看一下应用在场景里的效果:
 
经过处理后场景感觉更明亮一些,除了上面图片中的公式,其实还有一个比较常用的,就是去色,像王者荣耀里面玩家死亡后的效果,只要知道了公式实现起来也是非常简单的,我们只要让rgb各自都取它们的平均值就可以了,像这样:
fixed4 DelColor(fixed4 _color)
fixed c = _color.r + _color.g + _color.b;
c /= 3;
return fixed4(c,c,c,1.0f);
效果:
 
好了,按照惯例上完整代码
 
shader内容:
Shader "Custom/ColorCompute"
Properties
_MainTex ("Albedo (RGB)", 2D) = "white" {}
SubShader
Tags "RenderType"="Opaque"
LOD 200
Pass{  
CGPROGRAM  
#include "UnityCG.cginc"  
#pragma vertex vert_img  
#pragma fragment frag  
uniform sampler2D _MainTex;  
//去色
fixed4 DelColor(fixed4 _color)
fixed c = _color.r + _color.g + _color.b;
c /= 3;
return fixed4(c,c,c,1.0f);
//曝光
21
            fixed4 Exposure(fixed4 _color,fixed force)
22
                fixed r = min(1,max(0,_color.r * pow(2,force)));
23
                fixed g = min(1,max(0,_color.g * pow(2,force)));
24
                fixed b = min(1,max(0,_color.b * pow(2,force)));
25
                return fixed4(r,g,b,1.0f);
26
            
27
            //颜色加深
28
            fixed4 ColorPlus(fixed4 _color)
29
                fixed r = 1-(1-_color.r)/_color.r;
30
                fixed g = 1-(1-_color.g)/_color.g;
31
                fixed b = 1-(1-_color.b)/_color.b;
32
                return fixed4(r,g,b,1.0f);
33
            
34
            //颜色减淡
35
            fixed4 ColorMinus(fixed4 _color)
36
                fixed r = _color.r + pow(_color.r,2)/(1-_color.r);
37
                fixed g = _color.g + pow(_color.g,2)/(1-_color.g);
38
                fixed b = _color.b + pow(_color.b,2)/(1-_color.b);
39
                return fixed4(r,g,b,1.0f);
40
            
41
            //滤色
42
            fixed4 Screen(fixed4 _color)
43
                fixed r = 1-(pow((1-_color.r),2));
44
                fixed g = 1-(pow((1-_color.g),2));
45
                fixed b = 1-(pow((1-_color.b),2));
46
                return fixed4(r,g,b,1.0f);
47
            
48
            //正片叠底
49
            fixed4 Muitiply(fixed4 _color)
50
                fixed r = pow(_color.r,2);
51
                fixed g = pow(_color.g,2);
52
                fixed b = pow(_color.b,2);
53
                return fixed4(r,g,b,1.0f);
54
            
55
            //强光
56
            fixed4 ForceLight(fixed4 _color)
57
                fixed r = 1-pow((1-_color.r),2) / 0.5f;
58
                fixed g = 1-pow((1-_color.g),2) / 0.5f;
59
                fixed b = 1-pow((1-_color.b),2) / 0.5f;
60
                if(_color.r < 0.5f) r = pow(_color.r,2)/0.5f;
61
                if(_color.g < 0.5f) g = pow(_color.g,2)/0.5f;
62
                if(_color.b < 0.5f) b = pow(_color.b,2)/0.5f;
63
                return fixed4(r,g,b,1.0f);
64
            
65
            float4 frag( v2f_img o ) : COLOR  
66
            
67
                fixed4 _color = tex2D(_MainTex, o.uv); 
68
                _color = DelColor(_color);
69
                return _color;
70
            
71
            ENDCG  
72
        
73
    
74
    FallBack "Diffuse"
75
 
 
 
摄像机脚本:
 
 
 
 
 
1
[ExecuteInEditMode] 
2
public class ColorCompute : MonoBehaviour 
3
    public Material m;
4
    OnRenderImage(テクスチャレンダリング、SRCをテクスチャレンダリングDESTを)
5
    {
6
        グラフィックス。ブリット(SRC、DEST、M)。
7
    }
8
}

おすすめ

転載: www.cnblogs.com/huwenya/p/12146178.html