0001: ; 0002: ; 平行光源半球ライティング 0003: ; 0004: ; c0-3 -- world + ビュー + 透視変換行列 0005: ; c12 -- {0.0, 0.5, 1.0, 2.0} 0006: ; c13 -- ライトのベクトル (w成分は環境光の強さ) 0007: ; c14 -- 視点の位置 0008: ; c15 -- ライトの色(平行光源の色*メッシュの色) 0009: ; c18 -- ライトの色(上半球の色) 0010: ; c19 -- ライトの色(下半球の色) 0011: ; c20 -- 半球の軸 0012: ; 0013: ; v0 頂点の座標値 0014: ; v3 法線ベクトル (w成分は1.0f) 0015: ; v7 テクスチャ座標0 0016: 0017: vs.1.0 0018: 0019: ;座標変換 0020: dp4 oPos.x, v0, c0 0021: dp4 oPos.y, v0, c1 0022: dp4 oPos.z, v0, c2 0023: dp4 oPos.w, v0, c3 0024: 0025: 0026: ;半球ライティング 0027: dp3 r0, v3, c13 ; (N・A) 0028: mov r1, c12.y ; r1 = 0.5 0029: mad r0, r0, r1, r1 ; r0 = (1+N・A)/2 = α 0030: 0031: mov r1, c19 ; r1 = Ld 0032: add r1, c18, -r1 ; r1 = Lu-Ld 0033: mad r0, r1, r0, c19 ; r0 = α(Lu-Ld)+Ld = αLu + (1-α)Ld 0034: 0035: ; N・L (平行光源) 0036: mul r0, r0, c12.w ; 暗めなので、2倍の明るさにする 0037: mul oD0, r0, c15 0038: 0039: ; テクスチャー 0040: mov oT0, v7