1 line
9.3 KiB
Plaintext
1 line
9.3 KiB
Plaintext
{"version":3,"file":"WebGLRenderer.mjs","sources":["../../../../src/rendering/renderers/gl/WebGLRenderer.ts"],"sourcesContent":["import { extensions, ExtensionType } from '../../../extensions/Extensions';\nimport { GlGraphicsAdaptor } from '../../../scene/graphics/gl/GlGraphicsAdaptor';\nimport { GlMeshAdaptor } from '../../../scene/mesh/gl/GlMeshAdaptor';\nimport { GlBatchAdaptor } from '../../batcher/gl/GlBatchAdaptor';\nimport { AbstractRenderer } from '../shared/system/AbstractRenderer';\nimport { SharedRenderPipes, SharedSystems } from '../shared/system/SharedSystems';\nimport { RendererType } from '../types';\nimport { GlBufferSystem } from './buffer/GlBufferSystem';\nimport { GlContextSystem } from './context/GlContextSystem';\nimport { GlGeometrySystem } from './geometry/GlGeometrySystem';\nimport { GlBackBufferSystem } from './GlBackBufferSystem';\nimport { GlColorMaskSystem } from './GlColorMaskSystem';\nimport { GlEncoderSystem } from './GlEncoderSystem';\nimport { GlStencilSystem } from './GlStencilSystem';\nimport { GlUboSystem } from './GlUboSystem';\nimport { GlRenderTargetSystem } from './renderTarget/GlRenderTargetSystem';\nimport { GlShaderSystem } from './shader/GlShaderSystem';\nimport { GlUniformGroupSystem } from './shader/GlUniformGroupSystem';\nimport { GlStateSystem } from './state/GlStateSystem';\nimport { GlTextureSystem } from './texture/GlTextureSystem';\n\nimport type { ICanvas } from '../../../environment/canvas/ICanvas';\nimport type { PipeConstructor } from '../shared/instructions/RenderPipe';\nimport type { SharedRendererOptions } from '../shared/system/SharedSystems';\nimport type { SystemConstructor } from '../shared/system/System';\nimport type { ExtractRendererOptions, ExtractSystemTypes } from '../shared/system/utils/typeUtils';\nimport type { GlRenderingContext } from './context/GlRenderingContext';\n\nconst DefaultWebGLSystems = [\n ...SharedSystems,\n GlUboSystem,\n GlBackBufferSystem,\n GlContextSystem,\n GlBufferSystem,\n GlTextureSystem,\n GlRenderTargetSystem,\n GlGeometrySystem,\n GlUniformGroupSystem,\n GlShaderSystem,\n GlEncoderSystem,\n GlStateSystem,\n GlStencilSystem,\n GlColorMaskSystem,\n];\nconst DefaultWebGLPipes = [...SharedRenderPipes];\nconst DefaultWebGLAdapters = [GlBatchAdaptor, GlMeshAdaptor, GlGraphicsAdaptor];\n\n// installed systems will bbe added to this array by the extensions manager..\nconst systems: { name: string; value: SystemConstructor }[] = [];\nconst renderPipes: { name: string; value: PipeConstructor }[] = [];\nconst renderPipeAdaptors: { name: string; value: any }[] = [];\n\nextensions.handleByNamedList(ExtensionType.WebGLSystem, systems);\nextensions.handleByNamedList(ExtensionType.WebGLPipes, renderPipes);\nextensions.handleByNamedList(ExtensionType.WebGLPipesAdaptor, renderPipeAdaptors);\n\n// add all the default systems as well as any user defined ones from the extensions\nextensions.add(...DefaultWebGLSystems, ...DefaultWebGLPipes, ...DefaultWebGLAdapters);\n\n/** The default WebGL renderer, uses WebGL2 contexts. */\ntype WebGLSystems = ExtractSystemTypes<typeof DefaultWebGLSystems> & PixiMixins.RendererSystems & PixiMixins.WebGLSystems;\n\n/** The default WebGL renderer, uses WebGL2 contexts. */\nexport type WebGLPipes = ExtractSystemTypes<typeof DefaultWebGLPipes> & PixiMixins.RendererPipes & PixiMixins.WebGLPipes;\n\n/**\n * Options for WebGLRenderer.\n * @memberof rendering\n */\nexport interface WebGLOptions\n extends\n SharedRendererOptions,\n ExtractRendererOptions<typeof DefaultWebGLSystems>,\n PixiMixins.WebGLOptions {}\n\n/**\n * The default WebGL renderer, uses WebGL2 contexts.\n * @memberof rendering\n */\nexport interface WebGLRenderer<T extends ICanvas = HTMLCanvasElement>\n extends AbstractRenderer<WebGLPipes, WebGLOptions, T>,\n WebGLSystems {}\n\n/* eslint-disable max-len */\n/**\n * The WebGL PixiJS Renderer. This renderer allows you to use the most common graphics API, WebGL (and WebGL2).\n *\n * ```ts\n * // Create a new renderer\n * const renderer = new WebGLRenderer();\n * await renderer.init();\n *\n * // Add the renderer to the stage\n * document.body.appendChild(renderer.canvas);\n *\n * // Create a new stage\n * const stage = new Container();\n *\n * // Render the stage\n * renderer.render(stage);\n * ```\n *\n * You can use {@link rendering.autoDetectRenderer} to create a renderer that will automatically detect the best\n * renderer for the environment.\n *\n *\n * ```ts\n * // Create a new renderer\n * const renderer = await rendering.autoDetectRenderer({\n * preference:'webgl',\n * });\n * ```\n *\n * The renderer is composed of systems that manage specific tasks. The following systems are added by default\n * whenever you create a WebGL renderer:\n *\n * | WebGL Core Systems | Systems that are specific to the WebGL renderer |\n * | ------------------------------------------- | ----------------------------------------------------------------------------- |\n * | {@link rendering.GlUboSystem} | This manages WebGL2 uniform buffer objects feature for shaders |\n * | {@link rendering.GlBackBufferSystem} | manages the back buffer, used so that we can pixi can pixels from the screen |\n * | {@link rendering.GlContextSystem} | This manages the WebGL context and its extensions |\n * | {@link rendering.GlBufferSystem} | This manages buffers and their GPU resources, keeps everything in sync |\n * | {@link rendering.GlTextureSystem} | This manages textures and their GPU resources, keeps everything in sync |\n * | {@link rendering.GlRenderTargetSystem} | This manages what we render too. For example the screen, or another texture |\n * | {@link rendering.GlGeometrySystem} | This manages geometry, used for drawing meshes via the GPU |\n * | {@link rendering.GlUniformGroupSystem} | This manages uniform groups. Syncing shader properties with the GPU |\n * | {@link rendering.GlShaderSystem} | This manages shaders, programs that run on the GPU to output lovely pixels |\n * | {@link rendering.GlEncoderSystem} | This manages encoders, a WebGPU Paradigm, use it to draw a mesh + shader |\n * | {@link rendering.GlStateSystem} | This manages the state of the WebGL context. eg the various flags that can be set blend modes / depthTesting etc |\n * | {@link rendering.GlStencilSystem} | This manages the stencil buffer. Used primarily for masking |\n * | {@link rendering.GlColorMaskSystem} | This manages the color mask. Used for color masking |\n *\n * The breadth of the API surface provided by the renderer is contained within these systems.\n * @memberof rendering\n * @property {rendering.GlUboSystem} ubo - UboSystem instance.\n * @property {rendering.GlBackBufferSystem} backBuffer - BackBufferSystem instance.\n * @property {rendering.GlContextSystem} context - ContextSystem instance.\n * @property {rendering.GlBufferSystem} buffer - BufferSystem instance.\n * @property {rendering.GlTextureSystem} texture - TextureSystem instance.\n * @property {rendering.GlRenderTargetSystem} renderTarget - RenderTargetSystem instance.\n * @property {rendering.GlGeometrySystem} geometry - GeometrySystem instance.\n * @property {rendering.GlUniformGroupSystem} uniformGroup - UniformGroupSystem instance.\n * @property {rendering.GlShaderSystem} shader - ShaderSystem instance.\n * @property {rendering.GlEncoderSystem} encoder - EncoderSystem instance.\n * @property {rendering.GlStateSystem} state - StateSystem instance.\n * @property {rendering.GlStencilSystem} stencil - StencilSystem instance.\n * @property {rendering.GlColorMaskSystem} colorMask - ColorMaskSystem instance.\n * @extends rendering.AbstractRenderer\n */\n/* eslint-enable max-len */\nexport class WebGLRenderer<T extends ICanvas = HTMLCanvasElement>\n extends AbstractRenderer<WebGLPipes, WebGLOptions, T>\n implements WebGLSystems\n{\n public gl: GlRenderingContext;\n\n constructor()\n {\n const systemConfig = {\n name: 'webgl',\n type: RendererType.WEBGL,\n systems,\n renderPipes,\n renderPipeAdaptors,\n };\n\n super(systemConfig);\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAM,mBAAsB,GAAA;AAAA,EACxB,GAAG,aAAA;AAAA,EACH,WAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,oBAAA;AAAA,EACA,gBAAA;AAAA,EACA,oBAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AACJ,CAAA,CAAA;AACA,MAAM,iBAAA,GAAoB,CAAC,GAAG,iBAAiB,CAAA,CAAA;AAC/C,MAAM,oBAAuB,GAAA,CAAC,cAAgB,EAAA,aAAA,EAAe,iBAAiB,CAAA,CAAA;AAG9E,MAAM,UAAwD,EAAC,CAAA;AAC/D,MAAM,cAA0D,EAAC,CAAA;AACjE,MAAM,qBAAqD,EAAC,CAAA;AAE5D,UAAW,CAAA,iBAAA,CAAkB,aAAc,CAAA,WAAA,EAAa,OAAO,CAAA,CAAA;AAC/D,UAAW,CAAA,iBAAA,CAAkB,aAAc,CAAA,UAAA,EAAY,WAAW,CAAA,CAAA;AAClE,UAAW,CAAA,iBAAA,CAAkB,aAAc,CAAA,iBAAA,EAAmB,kBAAkB,CAAA,CAAA;AAGhF,UAAA,CAAW,IAAI,GAAG,mBAAA,EAAqB,GAAG,iBAAA,EAAmB,GAAG,oBAAoB,CAAA,CAAA;AA6F7E,MAAM,sBACD,gBAEZ,CAAA;AAAA,EAGI,WACA,GAAA;AACI,IAAA,MAAM,YAAe,GAAA;AAAA,MACjB,IAAM,EAAA,OAAA;AAAA,MACN,MAAM,YAAa,CAAA,KAAA;AAAA,MACnB,OAAA;AAAA,MACA,WAAA;AAAA,MACA,kBAAA;AAAA,KACJ,CAAA;AAEA,IAAA,KAAA,CAAM,YAAY,CAAA,CAAA;AAAA,GACtB;AACJ;;;;"} |