UNPKG

@cesium/engine

Version:

CesiumJS is a JavaScript library for creating 3D globes and 2D maps in a web browser without a plugin.

120 lines (109 loc) 2.75 kB
import Check from "../../Core/Check.js"; import ModelAlphaOptions from "./ModelAlphaOptions.js"; import RenderState from "../../Renderer/RenderState.js"; import ShaderBuilder from "../../Renderer/ShaderBuilder.js"; import DepthFunction from "../DepthFunction.js"; /** * Model render resources are for setting details that are consistent across * the entire model. * * @constructor * @param {Model} model The model that will be rendered * * @private */ function ModelRenderResources(model) { //>>includeStart('debug', pragmas.debug); Check.typeOf.object("model", model); //>>includeEnd('debug'); /** * An object used to build a shader incrementally. Each pipeline stage * may add lines of shader code to this object. * * @type {ShaderBuilder} * @readonly * * @private */ this.shaderBuilder = new ShaderBuilder(); /** * A reference to the model. * * @type {Model} * @readonly * * @private */ this.model = model; /** * A dictionary mapping uniform name to functions that return the uniform * values. * * @type {Object<string, Function>} * @readonly * * @private */ this.uniformMap = {}; /** * Options for configuring the alpha stage such as pass and alpha cutoff. * * @type {ModelAlphaOptions} * @readonly * * @private */ this.alphaOptions = new ModelAlphaOptions(); /** * An object storing options for creating a {@link RenderState}. * The pipeline stages simply set the options, the render state is created * when the {@link DrawCommand} is constructed. * * @type {object} * @readonly * * @private */ this.renderStateOptions = RenderState.getState( RenderState.fromCache({ depthTest: { enabled: true, func: DepthFunction.LESS_OR_EQUAL, }, }), ); /** * Whether the model has a silhouette. This value indicates what draw commands * are needed and is set by ModelSilhouettePipelineStage. * * @type {boolean} * @default false * * @private */ this.hasSilhouette = false; /** * Whether the model is part of a tileset that uses the skipLevelOfDetail * optimization. This value indicates what draw commands are needed and * is set by TilesetPipelineStage. * * @type {boolean} * @default false * * @private */ this.hasSkipLevelOfDetail = false; /** * The NodeRenderResources for the nodes of the scene graph. * * Note that elements of this array may be <code>undefined</code> when * there was no runtime node for a certain node. * * @type {NodeRenderResources[]} * @default [] * * @private */ this.nodeRenderResources = []; } export default ModelRenderResources;