UNPKG

@jscad/regl-renderer

Version:

Renderer for JSCAD Geometries

77 lines (57 loc) 2.31 kB
const vColorVert = ` precision mediump float; uniform float camNear, camFar; uniform mat4 model, view, projection, unormal; attribute vec3 position, normal; attribute vec4 color; attribute float ao; varying float ambientAo; varying vec3 surfaceNormal, surfacePosition; varying vec4 _worldSpacePosition; varying vec4 vColor; void main() { surfacePosition = (unormal * vec4(position, 1.0)).xyz; surfaceNormal = normalize((unormal * vec4(normal, 1.0)).xyz); //vec4 transformedNormal = uNormalMatrix * vec4(aVertexNormal, 1.0); vec4 worldSpacePosition = model * vec4(position, 1); _worldSpacePosition = worldSpacePosition; //gl_Position = projection * view * worldSpacePosition; vColor = color; //ambientAo = (1. - ao) * (0.5 * max(normal.x, 0.) + 0.5); vec4 glPosition = projection * view * model * vec4(position, 1); gl_Position = glPosition; //gl_Position = zBufferAdjust(glPosition, camNear, camFar); } ` const vColorFrag = ` precision mediump float; varying vec3 surfaceNormal, surfacePosition; uniform float ambientLightAmount; uniform float diffuseLightAmount; uniform float specularLightAmount; uniform vec3 lightDirection; uniform vec4 lightColor; uniform vec3 opacity; uniform float uMaterialShininess; varying vec4 vColor; uniform vec4 ucolor; uniform float vColorToggler; uniform vec2 printableArea; vec4 errorColor = vec4(0.15, 0.15, 0.15, 0.3);//vec4(0.15, 0.15, 0.15, 0.3); varying vec4 _worldSpacePosition; varying float ambientAo; void main () { vec4 depth = gl_FragCoord; vec4 endColor = vColor * vColorToggler + ucolor * (1.0 - vColorToggler); vec3 ambient = ambientLightAmount * endColor.rgb ; //ambientAo * float diffuseWeight = dot(surfaceNormal, lightDirection); vec3 diffuse = diffuseLightAmount * endColor.rgb * clamp(diffuseWeight , 0.0, 1.0 ); //specular vec4 specularColor = vec4(lightColor); vec3 eyeDirection = normalize(surfacePosition.xyz); vec3 reflectionDirection = reflect(-lightDirection, -surfaceNormal); float specularLightWeight = pow(max(dot(reflectionDirection, eyeDirection), 0.0), uMaterialShininess); vec3 specular = specularColor.rgb * specularLightWeight * specularLightAmount; gl_FragColor = vec4((ambient + diffuse + specular), endColor.a); } ` module.exports = { frag: vColorFrag, vert: vColorVert }