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: