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 // 色指定
にしてみると

いろんなてすとすると、いろいろ質感が楽しめます