VertexShader インチキ環境マッピング+いろいろ
「VertexShader インチキ環境マッピング 」を参考に、これにダークカラーを加えて
vsample01.vsh
//c0-c3 ビュー+透視変換マトリックス //c4 汎用固定値 //c5 平行光源向き //c6 光源色 //c7 ダークカラー // //v0 頂点の座標値 //v1 法線情報 vs_1_1 // バージョン命令 def c4, 0.0f, 0.5f, 1.0f, 0.20f // 光向き def c5, 0.566f, 0.566f, 0.566f, 0.0f // 光向き def c6, 1.0f, 0.5f, 0.0f, 0.0f // 色指定 def c7, 0.0f, 0.0f, 0.5f, 0.0f // ダーク色指定 dcl_position v0 // 座標頂点宣言 dcl_normal v1 // 法線 m4x4 oPos, v0, c0 m3x3 r0, v1, c0 dp3 r0.w, r0, r0 rsq r1, r0.w mul r0, r0, r1 mad oT0.xy,r0.xy,c4.yy,c4.yy dp3 r0.w, r0, c5 mad r0.x, r0.w, c4.y, c4.y sub r0.y, c4.z, r0.x // r1.z = 1.0 - r1.y mul r1, r0.x, c6 mad oD0, r0.y, c7, r1
■ダークカラーにスペキュラを追加して
vsample01.vsh
//c0-c3 ビュー+透視変換マトリックス //c4 汎用固定値 //c5 平行光源向き //c6 光源色 //c7 ダークカラー // //v0 頂点の座標値 //v1 法線情報 vs_1_1 // バージョン命令 def c4, 0.0f, 0.5f, 1.0f, 0.20f // 光向き def c5, 0.566f, 0.566f, 0.566f, 0.0f // 光向き def c6, 1.0f, 0.5f, 0.0f, 0.0f // 色指定 def c7, 0.0f, 0.0f, 0.5f, 0.0f // ダーク色指定 dcl_position v0 // 座標頂点宣言 dcl_normal v1 // 法線 m4x4 oPos, v0, c0 m3x3 r0, v1, c0 dp3 r0.w, r0, r0 rsq r1, r0.w mul r0, r0, r1 mad oT0.xy,r0.xy,c4.yy,c4.yy dp3 r0.w, r0, c5 mad r0.x, r0.w, c4.y, c4.y sub r0.y, c4.z, r0.x // r1.z = 1.0 - r1.y mul r1, r0.x, c6 mad oD0, r0.y, c7, r1 mul r0.x, r0.x, r0.x mul r0.x, r0.x, r0.x mul oD1, r0.x, r0.x
def c6, 1.0f, 1.0f, 1.0f, 0.0f // 色指定
にしてみると
いろんなてすとすると、いろいろ質感が楽しめます