gpu-curtains
Version:
gpu-curtains is a 3D WebGPU rendering engine. It can be used as a standalone 3D engine, but also includes extra classes focused on mapping 3d objects to DOM elements; It allows users to synchronize values such as position, sizing, or scale between them.
52 lines (42 loc) • 1.73 kB
JavaScript
import { constants } from '../../chunks/utils/constants.mjs';
import { common } from '../../chunks/utils/common.mjs';
import { toneMappingUtils } from '../../chunks/utils/tone-mapping-utils.mjs';
import { getFragmentInputStruct } from '../../chunks/fragment/head/get-fragment-input-struct.mjs';
import { declareAttributesVars } from '../../chunks/fragment/body/declare-attributes-vars.mjs';
import { declareMaterialVars } from '../../chunks/fragment/body/declare-material-vars.mjs';
import { getBaseColor } from '../../chunks/fragment/body/get-base-color.mjs';
import { applyToneMapping } from '../../chunks/fragment/body/apply-tone-mapping.mjs';
import { patchAdditionalChunks } from '../../default-material-helpers.mjs';
const getUnlitFragmentShaderCode = ({
chunks = null,
toneMapping = "Khronos",
geometry,
additionalVaryings = [],
materialUniform = null,
materialUniformName = "material",
baseColorTexture = null
}) => {
chunks = patchAdditionalChunks(chunks);
return (
/* wgsl */
`
${chunks.additionalHead}
${constants}
${common}
${toneMappingUtils}
${getFragmentInputStruct({ geometry, additionalVaryings })}
@fragment fn main(fsInput: FSInput) -> @location(0) vec4f {
var outputColor: vec4f = vec4();
${declareAttributesVars({ geometry, additionalVaryings })}
${declareMaterialVars({ materialUniform, materialUniformName, shadingModel: "Unlit" })}
${getBaseColor({ geometry, baseColorTexture })}
// user defined preliminary contribution
${chunks.preliminaryContribution}
// user defined additional contribution
${chunks.additionalContribution}
${applyToneMapping({ toneMapping })}
return outputColor;
}`
);
};
export { getUnlitFragmentShaderCode };