Ich habe in dem Fragment Shader mal Offset Bumpmapping ergänzt, weil es ja jetzt dazugehört:
Der Effekt kommt allerding bei einem festen Torus nicht so schön raus.
Code: uniform sampler2D Base; uniform sampler2D Bump; uniform float invRadius; uniform float ambient; varying vec2 texCoord; varying vec3 lightVec; varying vec3 viewVec; void main() { vec4 base = texture2D(Base, texCoord); vec3 nviewvec=normalize(viewVec); float height=dot(base.xyz,vec3(0.3,0.3,0.4))*2.0-1.0; vec2 newtexcoord = height *0.02*nviewvec.xy+texCoord; base = texture2D(Base, newtexcoord); vec3 bump = normalize(vec3(texture2D(Bump, newtexcoord)* 2.0 - 1.0)); float distSqr = dot(lightVec, lightVec); vec3 lVec = lightVec * inversesqrt(distSqr); float atten = clamp(1.0 - invRadius * sqrt(distSqr), 0.0, 1.0); float diffuse = clamp(dot(lVec, bump), 0.0, 1.0); float specular = pow(clamp(dot(reflect(-nviewvec, bump), lVec), 0.0, 1.0), 8.0); gl_FragColor = ambient * base + (diffuse * base + 0.4 * specular) * atten; }
|