
216
11
章 量子スーパーサンプリング
var qx = qint.new(4, 'qx');
var qy = qint.new(4, 'qy');
var qacc = qint.new(10, 'qacc');
qc.write(0);
qx.hadamard();
qy.hadamard();
// fill if x^2 + y^2 < r^2
x^2 + y^2 < r^2
qacc.addSquared(qx);
qacc.addSquared(qy);
qacc.subtract(radius * radius);
qacc.phase(180, 1 << (acc_bits - 1));
qacc.add(radius * radius);
qacc.subtractSquared(qy);
qacc.subtractSquared(qx);
qacc
レジスタが小さすぎると、実行中の計算がオーバーフローし、曲がった帯(
curved band
)が で
きます。このオーバーフロー効果は、図 11-11で意図的に使われます。
11.4
位相エンコーディングされた画像をサンプリングする
量子レジスタの位相で画像を表現できるようになったので、スーパーサンプリングの問題に戻りま
しょう。スーパーサンプリングでは、コンピュータで生成された(レイトレーシングした複数の光線に
対応する)シーンからは多くの情報が計算されたことを思い出してください。最終的な出力画像の単一
のピクセルの色を決定するために、この情 ...