playcanvas
Version:
Open-source WebGL/WebGPU 3D engine for the web
120 lines (119 loc) • 2.88 kB
JavaScript
import {
DEVICETYPE_NULL
} from "../constants.js";
import { GraphicsDevice } from "../graphics-device.js";
import { RenderTarget } from "../render-target.js";
import { NullIndexBuffer } from "./null-index-buffer.js";
import { NullRenderTarget } from "./null-render-target.js";
import { NullShader } from "./null-shader.js";
import { NullTexture } from "./null-texture.js";
import { NullVertexBuffer } from "./null-vertex-buffer.js";
import { NullDrawCommands } from "./null-draw-commands.js";
class NullGraphicsDevice extends GraphicsDevice {
constructor(canvas, options = {}) {
super(canvas, options);
options = this.initOptions;
this.isNull = true;
this._deviceType = DEVICETYPE_NULL;
this.samples = 1;
this.backBuffer = new RenderTarget({
name: "Framebuffer",
graphicsDevice: this,
depth: this.initOptions.depth,
stencil: this.supportsStencil,
samples: this.samples
});
this.initDeviceCaps();
}
destroy() {
super.destroy();
}
initDeviceCaps() {
this.disableParticleSystem = true;
this.precision = "highp";
this.maxPrecision = "highp";
this.maxSamples = 4;
this.maxTextures = 16;
this.maxTextureSize = 4096;
this.maxCubeMapSize = 4096;
this.maxVolumeSize = 4096;
this.maxColorAttachments = 8;
this.maxPixelRatio = 1;
this.maxAnisotropy = 16;
this.supportsUniformBuffers = false;
this.supportsAreaLights = true;
this.supportsGpuParticles = false;
this.textureFloatRenderable = true;
this.textureHalfFloatRenderable = true;
this.supportsImageBitmap = false;
}
postInit() {
super.postInit();
}
frameStart() {
super.frameStart();
}
frameEnd() {
super.frameEnd();
}
updateBegin() {
}
updateEnd() {
}
readPixels(x, y, w, h, pixels) {
}
createVertexBufferImpl(vertexBuffer, format) {
return new NullVertexBuffer(vertexBuffer, format);
}
createIndexBufferImpl(indexBuffer) {
return new NullIndexBuffer(indexBuffer);
}
createShaderImpl(shader) {
return new NullShader(shader);
}
createTextureImpl(texture) {
return new NullTexture(texture);
}
createRenderTargetImpl(renderTarget) {
return new NullRenderTarget(renderTarget);
}
createDrawCommandImpl(drawCommands) {
return new NullDrawCommands();
}
createUploadStreamImpl(uploadStream) {
return null;
}
draw(primitive, indexBuffer, numInstances, drawCommands, first = true, last = true) {
}
setShader(shader, asyncCompile = false) {
}
setBlendState(blendState) {
}
setDepthState(depthState) {
}
setStencilState(stencilFront, stencilBack) {
}
setBlendColor(r, g, b, a) {
}
setCullMode(cullMode) {
}
setFrontFace(frontFace) {
}
setAlphaToCoverage(state) {
}
initializeContextCaches() {
super.initializeContextCaches();
}
clear(options) {
}
setViewport(x, y, w, h) {
}
setScissor(x, y, w, h) {
}
copyRenderTarget(source, dest, color, depth) {
return true;
}
}
export {
NullGraphicsDevice
};