@jscad/regl-renderer
Version:
Renderer for JSCAD Geometries
59 lines (39 loc) • 1.44 kB
JavaScript
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 }