three 基础库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

147 lines
2.0 KiB

const ShaderLib = {
common: {
vertexShader:
`#version 450
NODE_HEADER_ATTRIBUTES
NODE_HEADER_UNIFORMS
NODE_HEADER_VARYS
void main(){
NODE_BODY_VARYS
NODE_BODY_VARS
gl_Position = NODE_MVP;
}`,
fragmentShader:
`#version 450
NODE_HEADER_ATTRIBUTES
NODE_HEADER_UNIFORMS
NODE_HEADER_VARYS
layout(location = 0) out vec4 outColor;
void main() {
NODE_BODY_VARS
MaterialDiffuseColor = vec4( 1.0 );
#ifdef NODE_COLOR
NODE_CODE_COLOR
MaterialDiffuseColor = NODE_COLOR;
#endif
#ifdef NODE_OPACITY
NODE_CODE_OPACITY
MaterialDiffuseColor.a *= NODE_OPACITY;
#endif
#ifdef NODE_ALPHA_TEST
if ( MaterialDiffuseColor.a < NODE_ALPHA_TEST ) discard;
#endif
#ifdef NODE_LIGHT
NODE_CODE_LIGHT
outColor.rgb = NODE_LIGHT;
outColor.a = MaterialDiffuseColor.a;
#else
outColor = MaterialDiffuseColor;
#endif
}`
},
phong: {
vertexShader:
`#version 450
NODE_HEADER_ATTRIBUTES
NODE_HEADER_UNIFORMS
NODE_HEADER_VARYS
void main(){
NODE_BODY_VARYS
NODE_BODY_VARS
gl_Position = NODE_MVP;
}`,
fragmentShader:
`#version 450
NODE_HEADER_ATTRIBUTES
NODE_HEADER_UNIFORMS
NODE_HEADER_VARYS
layout(location = 0) out vec4 outColor;
void main() {
NODE_BODY_VARS
MaterialDiffuseColor = vec4( 1.0 );
MaterialSpecularColor = vec3( 1.0 );
MaterialSpecularShininess = 30.0;
NODE_CODE_COLOR
MaterialDiffuseColor = NODE_COLOR;
NODE_CODE_OPACITY
MaterialDiffuseColor.a *= NODE_OPACITY;
#ifdef NODE_ALPHA_TEST
if ( MaterialDiffuseColor.a < NODE_ALPHA_TEST ) discard;
#endif
NODE_CODE_SPECULAR
MaterialSpecularColor = NODE_SPECULAR;
NODE_CODE_SHININESS
MaterialSpecularShininess = NODE_SHININESS;
#ifdef NODE_LIGHT
NODE_CODE_LIGHT
outColor.rgb = NODE_LIGHT;
outColor.a = MaterialDiffuseColor.a;
#else
outColor = MaterialDiffuseColor;
#endif
}`
}
};
export default ShaderLib;