123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- import defaultValue from "../Core/defaultValue.js";
- import Pass from "./Pass.js";
- /**
- * Represents a command to the renderer for GPU Compute (using old-school GPGPU).
- *
- * @private
- * @constructor
- */
- function ComputeCommand(options) {
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
- /**
- * The vertex array. If none is provided, a viewport quad will be used.
- *
- * @type {VertexArray}
- * @default undefined
- */
- this.vertexArray = options.vertexArray;
- /**
- * The fragment shader source. The default vertex shader is ViewportQuadVS.
- *
- * @type {ShaderSource}
- * @default undefined
- */
- this.fragmentShaderSource = options.fragmentShaderSource;
- /**
- * The shader program to apply.
- *
- * @type {ShaderProgram}
- * @default undefined
- */
- this.shaderProgram = options.shaderProgram;
- /**
- * An object with functions whose names match the uniforms in the shader program
- * and return values to set those uniforms.
- *
- * @type {Object}
- * @default undefined
- */
- this.uniformMap = options.uniformMap;
- /**
- * Texture to use for offscreen rendering.
- *
- * @type {Texture}
- * @default undefined
- */
- this.outputTexture = options.outputTexture;
- /**
- * Function that is called immediately before the ComputeCommand is executed. Used to
- * update any renderer resources. Takes the ComputeCommand as its single argument.
- *
- * @type {Function}
- * @default undefined
- */
- this.preExecute = options.preExecute;
- /**
- * Function that is called after the ComputeCommand is executed. Takes the output
- * texture as its single argument.
- *
- * @type {Function}
- * @default undefined
- */
- this.postExecute = options.postExecute;
- /**
- * Function that is called when the command is canceled
- *
- * @type {Function}
- * @default undefined
- */
- this.canceled = options.canceled;
- /**
- * Whether the renderer resources will persist beyond this call. If not, they
- * will be destroyed after completion.
- *
- * @type {Boolean}
- * @default false
- */
- this.persists = defaultValue(options.persists, false);
- /**
- * The pass when to render. Always compute pass.
- *
- * @type {Pass}
- * @default Pass.COMPUTE;
- */
- this.pass = Pass.COMPUTE;
- /**
- * The object who created this command. This is useful for debugging command
- * execution; it allows us to see who created a command when we only have a
- * reference to the command, and can be used to selectively execute commands
- * with {@link Scene#debugCommandFilter}.
- *
- * @type {Object}
- * @default undefined
- *
- * @see Scene#debugCommandFilter
- */
- this.owner = options.owner;
- }
- /**
- * Executes the compute command.
- *
- * @param {ComputeEngine} computeEngine The context that processes the compute command.
- */
- ComputeCommand.prototype.execute = function (computeEngine) {
- computeEngine.execute(this);
- };
- export default ComputeCommand;
|