UNPKG

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
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 };