UNPKG

@jscad/regl-renderer

Version:

Renderer for JSCAD Geometries

59 lines (39 loc) 1.44 kB
const meshVert = ` precision mediump float; uniform float camNear, camFar; uniform mat4 model, view, projection; attribute vec3 position, normal; varying vec3 surfaceNormal, surfacePosition; varying vec4 _worldSpacePosition; void main() { surfacePosition = position; surfaceNormal = normal; vec4 worldSpacePosition = model * vec4(position, 1); _worldSpacePosition = worldSpacePosition; vec4 glPosition = projection * view * model * vec4(position, 1); gl_Position = glPosition; } ` const meshFrag = ` precision mediump float; varying vec3 surfaceNormal; uniform float ambientLightAmount; uniform float diffuseLightAmount; uniform vec4 ucolor; uniform vec3 lightDirection; uniform vec3 opacity; varying vec4 _worldSpacePosition; uniform vec2 printableArea; vec4 errorColor = vec4(0.15, 0.15, 0.15, 0.3); void main () { vec4 depth = gl_FragCoord; float v = 0.8; // shadow value vec4 endColor = ucolor; vec3 ambient = ambientLightAmount * endColor.rgb; float cosTheta = dot(surfaceNormal, lightDirection); vec3 diffuse = diffuseLightAmount * endColor.rgb * clamp(cosTheta , 0.0, 1.0 ); float cosTheta2 = dot(surfaceNormal, vec3(-lightDirection.x, -lightDirection.y, lightDirection.z)); vec3 diffuse2 = diffuseLightAmount * endColor.rgb * clamp(cosTheta2 , 0.0, 1.0 ); gl_FragColor = vec4((ambient + diffuse + diffuse2 * v), endColor.a); }` module.exports = { vert: meshVert, frag: meshFrag }