KITASENJU DESIGN BLOG

memo, html, javascript, unity

highlight on shader

自作でhighlightをつけたいと思い勉強

wgld.org | WebGL: 反射光によるライティング |

抜粋

void main(void){
//光源ベクトル
vec3  invLight = normalize(invMatrix * vec4(lightDirection, 0.0)).xyz;
//視点ベクトル
vec3  invEye   = normalize(invMatrix * vec4(eyeDirection, 0.0)).xyz;
//ふたつのハーフベクトル(よくわからんが計算がラクになる、擬似的に使う)
vec3  halfLE   = normalize(invLight + invEye);

//マテリアルの色の度合い=法線と光源の内積
float diffuse  = clamp(dot(normal, invLight), 0.0, 1.0);

//specular=鏡面反射の意味 法線とハーフベクトルの内積
float specular = pow(clamp(dot(normal, halfLE), 0.0, 1.0), 50.0);

//最終的な色
vec4  light    = color * vec4(vec3(diffuse), 1.0) + vec4(vec3(specular), 1.0);
vColor         = light + ambientColor;
gl_Position    = mvpMatrix * vec4(position, 1.0);
}
"FOOTER"