0001: ; focus.psh 0002: ; 0003: 0004: ps.1.1 0005: 0006: def c0, 0.0f, 0.0f, 0.0f, 0.5f 0007: 0008: ; テクスチャーの色を引っ張ってくる 0009: tex t0 ; 元テクスチャー 0010: tex t1 ; ボケテクスチャー 0011: tex t2 ; 大ボケテクスチャー 0012: 0013: ; いい感じの深度を引っ張る 0014: lrp r0.a, c0, t0, t2 ; 深度ははっきりしたものと、大ボケのものの平均を取る 0015: cnd_x4_sat r0.a, r0.a, 1-r0.a, r0.a; 0.5 の時にはっきりなるようにする 0016: 0017: ; 0.0→0.5 の成分を作る 0018: mov_x2_sat r1.a, r0.a ; t0.a : 0.0→0.5→1.0 0019: ; r1.a : 0.0→1.0→1.0 (r0.a が 0.0 から 0.5 の下半分が、0.0 から 1.0 になる) 0020: lrp r1.rgb, r1.a, t1, t2 ; t0.a : 0.0→0.5→1.0 0021: ; r1.rgb: t2 →t1 →t1 (r0.a が 0.0 から 0.5 の下半分が、 t2 から t1 になる) 0022: 0023: ; 0.5→1.0 の成分を作る 0024: mov_sat r1.a, r0_bx2.a ; t0.a : 0.0→0.5→1.0 0025: ; r1.a : 0.0→0.0→1.0 (r0.a が 0.5 から 1.0 の上半分が、0.0 から 1.0 になる) 0026: lrp r0.rgb, r1.a, t0, t1 ; t0.a : 0.0→0.5→1.0 0027: ; r0.rgb: t1 →t1 →t0 (r0.a が 0.5 から 1.0 の上半分が、 t1 から t0 になる) 0028: 0029: ; 二つを上手く混ぜる 0030: cnd r0.rgb, r0.a, r0, r1 ; r0.rgb = (0.5 < r0.a) ? r0 : r1 0031: ; t0.a : 0.0→0.5→1.0 0032: ; r0.rgb: t2 →t1 →t0 ( 0.0 から 0.5 は r1、0.5 から 1.0 は r0 を取る) 0033: 0034: 0035: ;mov r0, r0.a ; 深度を見たいときはこちらを有効にする 0036: