test
code:hlsl
float3 result;
// チャンネルごとに処理
for(int i = 0; i < 3; i++)
{
float b = Basei;
float s = Blendi;
if(s <= 0.5f)
{
// カラーバーン (Color Burn) の適用
// 0除算を防ぐため、sが0のときは0にする
resulti = (s == 0.0f) ? 0.0f : max(1.0f - ((1.0f - b) / (2.0f * s)), 0.0f);
}
else
{
// カラードッジ (Color Dodge) の適用
// 0除算を防ぐため、sが1のときは1にする
resulti = (s == 1.0f) ? 1.0f : min(b / (2.0f * (1.0f - s)), 1.0f);
}
}
return result;