次のように、ブランチの Cg で深さを出力しています。
ZWrite On
..
void frag(v2f IN, out color : COLOR, out depth : DEPTH) {
if (statement) {
color = float4(1);
} else {
color = float4(0);
depth = 0;
}
}
ただし、ご覧のとおり、最初の条件で深さを書くことを省略しています。これにより未定義の動作が発生しますが、これは GLSL では一般的な方法だと思います (glFragDepth への書き込みを省略すると元の深度になります)。
出力に深度値がある場合、Cg の最初の条件で元の深度を取得するにはどうすればよいですか?