123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268 |
- import { BindBonesParameters, BindFogParameters, BindLight, BindLightProperties, BindLights, BindLogDepth, BindMorphTargetParameters, BindSceneUniformBuffer, BindTextureMatrix, GetFogState, HandleFallbacksForShadows, PrepareAttributesForBakedVertexAnimation, PrepareAttributesForBones, PrepareAttributesForInstances, PrepareAttributesForMorphTargets, PrepareAttributesForMorphTargetsInfluencers, PrepareDefinesForAttributes, PrepareDefinesForBakedVertexAnimation, PrepareDefinesForBones, PrepareDefinesForCamera, PrepareDefinesForFrameBoundValues, PrepareDefinesForLight, PrepareDefinesForLights, PrepareDefinesForMergedUV, PrepareDefinesForMisc, PrepareDefinesForMorphTargets, PrepareDefinesForMultiview, PrepareDefinesForOIT, PrepareDefinesForPrePass, PrepareUniformsAndSamplersForLight, PrepareUniformsAndSamplersList, PushAttributesForInstances, } from "./materialHelper.functions.js";
- /**
- * "Static Class" containing the most commonly used helper while dealing with material for rendering purpose.
- *
- * It contains the basic tools to help defining defines, binding uniform for the common part of the materials.
- *
- * This works by convention in BabylonJS but is meant to be use only with shader following the in place naming rules and conventions.
- */
- export class MaterialHelper {
- }
- /**
- * Binds the scene's uniform buffer to the effect.
- * @param effect defines the effect to bind to the scene uniform buffer
- * @param sceneUbo defines the uniform buffer storing scene data
- */
- MaterialHelper.BindSceneUniformBuffer = BindSceneUniformBuffer;
- /**
- * Helps preparing the defines values about the UVs in used in the effect.
- * UVs are shared as much as we can across channels in the shaders.
- * @param texture The texture we are preparing the UVs for
- * @param defines The defines to update
- * @param key The channel key "diffuse", "specular"... used in the shader
- */
- MaterialHelper.PrepareDefinesForMergedUV = PrepareDefinesForMergedUV;
- /**
- * Binds a texture matrix value to its corresponding uniform
- * @param texture The texture to bind the matrix for
- * @param uniformBuffer The uniform buffer receiving the data
- * @param key The channel key "diffuse", "specular"... used in the shader
- */
- MaterialHelper.BindTextureMatrix = BindTextureMatrix;
- /**
- * Gets the current status of the fog (should it be enabled?)
- * @param mesh defines the mesh to evaluate for fog support
- * @param scene defines the hosting scene
- * @returns true if fog must be enabled
- */
- MaterialHelper.GetFogState = GetFogState;
- /**
- * Helper used to prepare the list of defines associated with misc. values for shader compilation
- * @param mesh defines the current mesh
- * @param scene defines the current scene
- * @param useLogarithmicDepth defines if logarithmic depth has to be turned on
- * @param pointsCloud defines if point cloud rendering has to be turned on
- * @param fogEnabled defines if fog has to be turned on
- * @param alphaTest defines if alpha testing has to be turned on
- * @param defines defines the current list of defines
- * @param applyDecalAfterDetail Defines if the decal is applied after or before the detail
- */
- MaterialHelper.PrepareDefinesForMisc = PrepareDefinesForMisc;
- /**
- * Helper used to prepare the defines relative to the active camera
- * @param scene defines the current scene
- * @param defines specifies the list of active defines
- * @returns true if the defines have been updated, else false
- */
- MaterialHelper.PrepareDefinesForCamera = PrepareDefinesForCamera;
- /**
- * Helper used to prepare the list of defines associated with frame values for shader compilation
- * @param scene defines the current scene
- * @param engine defines the current engine
- * @param material defines the material we are compiling the shader for
- * @param defines specifies the list of active defines
- * @param useInstances defines if instances have to be turned on
- * @param useClipPlane defines if clip plane have to be turned on
- * @param useThinInstances defines if thin instances have to be turned on
- */
- MaterialHelper.PrepareDefinesForFrameBoundValues = PrepareDefinesForFrameBoundValues;
- /**
- * Prepares the defines for bones
- * @param mesh The mesh containing the geometry data we will draw
- * @param defines The defines to update
- */
- MaterialHelper.PrepareDefinesForBones = PrepareDefinesForBones;
- /**
- * Prepares the defines for morph targets
- * @param mesh The mesh containing the geometry data we will draw
- * @param defines The defines to update
- */
- MaterialHelper.PrepareDefinesForMorphTargets = PrepareDefinesForMorphTargets;
- /**
- * Prepares the defines for baked vertex animation
- * @param mesh The mesh containing the geometry data we will draw
- * @param defines The defines to update
- */
- MaterialHelper.PrepareDefinesForBakedVertexAnimation = PrepareDefinesForBakedVertexAnimation;
- /**
- * Prepares the defines used in the shader depending on the attributes data available in the mesh
- * @param mesh The mesh containing the geometry data we will draw
- * @param defines The defines to update
- * @param useVertexColor Precise whether vertex colors should be used or not (override mesh info)
- * @param useBones Precise whether bones should be used or not (override mesh info)
- * @param useMorphTargets Precise whether morph targets should be used or not (override mesh info)
- * @param useVertexAlpha Precise whether vertex alpha should be used or not (override mesh info)
- * @param useBakedVertexAnimation Precise whether baked vertex animation should be used or not (override mesh info)
- * @returns false if defines are considered not dirty and have not been checked
- */
- MaterialHelper.PrepareDefinesForAttributes = PrepareDefinesForAttributes;
- /**
- * Prepares the defines related to multiview
- * @param scene The scene we are intending to draw
- * @param defines The defines to update
- */
- MaterialHelper.PrepareDefinesForMultiview = PrepareDefinesForMultiview;
- /**
- * Prepares the defines related to order independant transparency
- * @param scene The scene we are intending to draw
- * @param defines The defines to update
- * @param needAlphaBlending Determines if the material needs alpha blending
- */
- MaterialHelper.PrepareDefinesForOIT = PrepareDefinesForOIT;
- /**
- * Prepares the defines related to the prepass
- * @param scene The scene we are intending to draw
- * @param defines The defines to update
- * @param canRenderToMRT Indicates if this material renders to several textures in the prepass
- */
- MaterialHelper.PrepareDefinesForPrePass = PrepareDefinesForPrePass;
- /**
- * Prepares the defines related to the light information passed in parameter
- * @param scene The scene we are intending to draw
- * @param mesh The mesh the effect is compiling for
- * @param light The light the effect is compiling for
- * @param lightIndex The index of the light
- * @param defines The defines to update
- * @param specularSupported Specifies whether specular is supported or not (override lights data)
- * @param state Defines the current state regarding what is needed (normals, etc...)
- * @param state.needNormals
- * @param state.needRebuild
- * @param state.shadowEnabled
- * @param state.specularEnabled
- * @param state.lightmapMode
- */
- MaterialHelper.PrepareDefinesForLight = PrepareDefinesForLight;
- /**
- * Prepares the defines related to the light information passed in parameter
- * @param scene The scene we are intending to draw
- * @param mesh The mesh the effect is compiling for
- * @param defines The defines to update
- * @param specularSupported Specifies whether specular is supported or not (override lights data)
- * @param maxSimultaneousLights Specifies how manuy lights can be added to the effect at max
- * @param disableLighting Specifies whether the lighting is disabled (override scene and light)
- * @returns true if normals will be required for the rest of the effect
- */
- MaterialHelper.PrepareDefinesForLights = PrepareDefinesForLights;
- /**
- * Prepares the uniforms and samplers list to be used in the effect (for a specific light)
- * @param lightIndex defines the light index
- * @param uniformsList The uniform list
- * @param samplersList The sampler list
- * @param projectedLightTexture defines if projected texture must be used
- * @param uniformBuffersList defines an optional list of uniform buffers
- * @param updateOnlyBuffersList True to only update the uniformBuffersList array
- */
- MaterialHelper.PrepareUniformsAndSamplersForLight = PrepareUniformsAndSamplersForLight;
- /**
- * Prepares the uniforms and samplers list to be used in the effect
- * @param uniformsListOrOptions The uniform names to prepare or an EffectCreationOptions containing the list and extra information
- * @param samplersList The sampler list
- * @param defines The defines helping in the list generation
- * @param maxSimultaneousLights The maximum number of simultaneous light allowed in the effect
- */
- MaterialHelper.PrepareUniformsAndSamplersList = PrepareUniformsAndSamplersList;
- /**
- * This helps decreasing rank by rank the shadow quality (0 being the highest rank and quality)
- * @param defines The defines to update while falling back
- * @param fallbacks The authorized effect fallbacks
- * @param maxSimultaneousLights The maximum number of lights allowed
- * @param rank the current rank of the Effect
- * @returns The newly affected rank
- */
- MaterialHelper.HandleFallbacksForShadows = HandleFallbacksForShadows;
- /**
- * Prepares the list of attributes required for morph targets according to the effect defines.
- * @param attribs The current list of supported attribs
- * @param mesh The mesh to prepare the morph targets attributes for
- * @param influencers The number of influencers
- */
- MaterialHelper.PrepareAttributesForMorphTargetsInfluencers = PrepareAttributesForMorphTargetsInfluencers;
- /**
- * Prepares the list of attributes required for morph targets according to the effect defines.
- * @param attribs The current list of supported attribs
- * @param mesh The mesh to prepare the morph targets attributes for
- * @param defines The current Defines of the effect
- */
- MaterialHelper.PrepareAttributesForMorphTargets = PrepareAttributesForMorphTargets;
- /**
- * Prepares the list of attributes required for baked vertex animations according to the effect defines.
- * @param attribs The current list of supported attribs
- * @param mesh The mesh to prepare for baked vertex animations
- * @param defines The current Defines of the effect
- */
- MaterialHelper.PrepareAttributesForBakedVertexAnimation = PrepareAttributesForBakedVertexAnimation;
- /**
- * Prepares the list of attributes required for bones according to the effect defines.
- * @param attribs The current list of supported attribs
- * @param mesh The mesh to prepare the bones attributes for
- * @param defines The current Defines of the effect
- * @param fallbacks The current effect fallback strategy
- */
- MaterialHelper.PrepareAttributesForBones = PrepareAttributesForBones;
- /**
- * Check and prepare the list of attributes required for instances according to the effect defines.
- * @param attribs The current list of supported attribs
- * @param defines The current MaterialDefines of the effect
- */
- MaterialHelper.PrepareAttributesForInstances = PrepareAttributesForInstances;
- /**
- * Add the list of attributes required for instances to the attribs array.
- * @param attribs The current list of supported attribs
- * @param needsPreviousMatrices If the shader needs previous matrices
- */
- MaterialHelper.PushAttributesForInstances = PushAttributesForInstances;
- /**
- * Binds the light information to the effect.
- * @param light The light containing the generator
- * @param effect The effect we are binding the data to
- * @param lightIndex The light index in the effect used to render
- */
- MaterialHelper.BindLightProperties = BindLightProperties;
- /**
- * Binds the lights information from the scene to the effect for the given mesh.
- * @param light Light to bind
- * @param lightIndex Light index
- * @param scene The scene where the light belongs to
- * @param effect The effect we are binding the data to
- * @param useSpecular Defines if specular is supported
- * @param receiveShadows Defines if the effect (mesh) we bind the light for receives shadows
- */
- MaterialHelper.BindLight = BindLight;
- /**
- * Binds the lights information from the scene to the effect for the given mesh.
- * @param scene The scene the lights belongs to
- * @param mesh The mesh we are binding the information to render
- * @param effect The effect we are binding the data to
- * @param defines The generated defines for the effect
- * @param maxSimultaneousLights The maximum number of light that can be bound to the effect
- */
- MaterialHelper.BindLights = BindLights;
- /**
- * Binds the fog information from the scene to the effect for the given mesh.
- * @param scene The scene the lights belongs to
- * @param mesh The mesh we are binding the information to render
- * @param effect The effect we are binding the data to
- * @param linearSpace Defines if the fog effect is applied in linear space
- */
- MaterialHelper.BindFogParameters = BindFogParameters;
- /**
- * Binds the bones information from the mesh to the effect.
- * @param mesh The mesh we are binding the information to render
- * @param effect The effect we are binding the data to
- * @param prePassConfiguration Configuration for the prepass, in case prepass is activated
- */
- MaterialHelper.BindBonesParameters = BindBonesParameters;
- /**
- * Binds the morph targets information from the mesh to the effect.
- * @param abstractMesh The mesh we are binding the information to render
- * @param effect The effect we are binding the data to
- */
- MaterialHelper.BindMorphTargetParameters = BindMorphTargetParameters;
- /**
- * Binds the logarithmic depth information from the scene to the effect for the given defines.
- * @param defines The generated defines used in the effect
- * @param effect The effect we are binding the data to
- * @param scene The scene we are willing to render with logarithmic scale for
- */
- MaterialHelper.BindLogDepth = BindLogDepth;
- //# sourceMappingURL=materialHelper.js.map
|