• 追加された行はこの色です。
  • 削除された行はこの色です。
*エフェクト-色調補正 [#u511f066]
画面の色味を補正するもの。
計算式や実装など本来の物と違ったらごめんなさい。
----

#contents


** モノクロ [#m788e47c]
 &ref(effect-colorcontrol-mono.jpg,,40%);
 &ref(effect-color_control-mono.JPG,,40%);

RGB色空間をYCbCr色空間に変換。
輝度Yだけ取り出す。

 const float3 RGBtoY = {0.299, 0.587, 0.114};
 float4 color = tex2D(TextureSampler, tex_coord0);
 color.rgb = dot(color, RGBtoY);
 return color;
 
 // RGBから輝度Yに変換
 float y = dot(hrgb, RGBtoY);
 
 // 輝度YをRGBカラーに適用し、モノクロ化
 return float4((float3)y, hrgb.a);

サンプル:&ref(mono.fx);

** セピア [#c3f417b7]
 &ref(effect-colorcontrol-sepia.jpg,,40%);
 &ref(effect-color_control-sepia.JPG,,40%);

モノクロ化した後に、Cb, Cr に適当な数値をいれて、再度RGBに戻す。

 const float3 RGBtoY = { 0.299, 0.587, 0.114};
 const float3 RGBtoY = {0.299, 0.587, 0.114};
 float3x3 YCbCrtoRGB = {
     {1.0,  0.00000,  1.40200},
     {1.0, -0.34414, -0.71414},
     {1.0,  1.77200,  0.00000},
 };
 float4 color = tex2D(TextureSampler, tex_coord0);
 
 // RGBからYCbCrへ変換
 // RGBから輝度Yに変換
 // Cb Crには適当な値を入れる
 float3 YCbCr;
 YCbCr.x = dot(color, RGBtoY);
 YCbCr.x = dot(hrgb, RGBtoY);
 YCbCr.y = -0.091;
 YCbCr.z = 0.056;
 
 // YCbCr -> rgb
 color.rgb = mul(YCbCrtoRGB, YCbCr);
 return color;
 // YCbCrからRGBへ復元
 return float4(mul(YCbCrtoRGB, YCbCr), hrgb.a);

サンプル:&ref(sepia.fx);


** ネガポジ反転 [#da92d2f3]
 &ref(effect-color_control-nega.JPG,,40%);

色を反転。

 float4 ret;
 ret.r = 1.0 - hrgb.r;
 ret.g = 1.0 - hrgb.g;
 ret.b = 1.0 - hrgb.b;
 ret.a = hrgb.a;
 return ret;

サンプル:&ref(nega.fx);


** ガンマ補正 [#vd76a1c1]
 &ref(effect-color_control-gamma.JPG,,40%);

ガンマ補正の式:out = color ^ (1.0f / gamma)
より

 return float4(pow(abs(hrgb.rgb), (float3)(1.0 / gamma)), hrgb.a);

サンプル:&ref(gamma.fx);


** コントラスト調整 [#b77541b0]
 &ref(effect-colorcontrol-contrast.jpg,,40%);
 &ref(effect-color_control-contrast.JPG,,40%);

明るい所は明るく、暗い所は暗く強調する。
色は0.0~1.0なので、中間の0.5を基準に上下に引っ張ってます。

 float4 color = tex2D(TextureSampler, tex_coord0);
 
 // -0.5~0.5の範囲
 color.rgb = ((color.rgb - 0.5) * Rate) + 0.5;
 return color;
 return float4(hrgb.rgb * (1.0 + contrast) / 1.0 - contrast * 0.5, hrgb.a);

サンプル:&ref(contrast.fx);

** ガンマ補正 [#vd76a1c1]



    ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS