自作で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); }