From 9337ea66b620248ce7a1af2ad2b69f95caf00888 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Fri, 2 Aug 2024 16:46:05 +0800 Subject: [PATCH 01/47] 1 --- examples/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/package.json b/examples/package.json index 2ae1e9f..5774fae 100644 --- a/examples/package.json +++ b/examples/package.json @@ -1,4 +1,5 @@ { + "name": "webgl-renderer-examples", "private": true, "scripts": { "dev": "vite", @@ -12,6 +13,6 @@ }, "dependencies": { "gl-matrix": "^3.4.3", - "@feng3d/webgl-renderer": "^0.0.1" + "@feng3d/webgl-renderer": "0.0.1" } } \ No newline at end of file -- Gitee From 648dc9022bedf70e08a04b41a3877d94a59f7859 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Wed, 14 Aug 2024 15:34:06 +0800 Subject: [PATCH 02/47] =?UTF-8?q?=E9=99=A4=E5=8E=BB=20WebGL=20=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E9=9D=99=E6=80=81=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/src/WebGL2Samples/buffer_copy.ts | 17 +-- examples/src/WebGL2Samples/buffer_uniform.ts | 3 +- .../src/WebGL2Samples/draw_image_space.ts | 11 +- examples/src/WebGL2Samples/draw_instanced.ts | 17 +-- .../src/WebGL2Samples/draw_instanced_ubo.ts | 13 ++- .../WebGL2Samples/draw_primitive_restart.ts | 17 +-- .../src/WebGL2Samples/draw_range_arrays.ts | 15 +-- examples/src/WebGL2Samples/fbo_blit.ts | 29 ++--- examples/src/WebGL2Samples/fbo_multisample.ts | 31 ++--- .../WebGL2Samples/fbo_new_blend_equation.ts | 15 +-- examples/src/WebGL2Samples/fbo_read_pixels.ts | 31 ++--- .../WebGL2Samples/fbo_rtt_depth_texture.ts | 32 +++--- .../src/WebGL2Samples/fbo_rtt_draw_buffers.ts | 27 ++--- .../WebGL2Samples/fbo_rtt_texture_array.ts | 24 ++-- .../src/WebGL2Samples/geo_vertex_format.ts | 5 +- examples/src/WebGL2Samples/glsl_centroid.ts | 49 ++++---- .../glsl_flat_smooth_interpolators.ts | 5 +- .../WebGL2Samples/glsl_non_square_matrix.ts | 13 ++- examples/src/WebGL2Samples/query_occlusion.ts | 13 ++- examples/src/WebGL2Samples/sampler_filter.ts | 17 +-- examples/src/WebGL2Samples/sampler_object.ts | 21 ++-- examples/src/WebGL2Samples/sampler_wrap.ts | 21 ++-- .../src/WebGL2Samples/texture_2d_array.ts | 3 +- examples/src/WebGL2Samples/texture_3d.ts | 5 +- .../src/WebGL2Samples/texture_derivative.ts | 5 +- examples/src/WebGL2Samples/texture_fetch.ts | 15 +-- examples/src/WebGL2Samples/texture_format.ts | 15 +-- examples/src/WebGL2Samples/texture_grad.ts | 11 +- .../src/WebGL2Samples/texture_immutable.ts | 17 +-- examples/src/WebGL2Samples/texture_integer.ts | 14 +-- examples/src/WebGL2Samples/texture_lod.ts | 3 +- examples/src/WebGL2Samples/texture_offset.ts | 16 +-- .../src/WebGL2Samples/texture_pixel_store.ts | 13 ++- examples/src/WebGL2Samples/texture_srgb.ts | 13 ++- examples/src/WebGL2Samples/texture_vertex.ts | 5 +- .../transform_feedback_instanced.ts | 3 +- .../transform_feedback_interleaved.ts | 17 +-- .../transform_feedback_separated.ts | 3 +- .../transform_feedback_separated_2.ts | 3 +- examples/src/regl-examples/basic.ts | 4 +- examples/src/regl-examples/batch.ts | 102 ++++++++++------- examples/src/regl-examples/blur.ts | 105 +++++++++-------- examples/src/regl-examples/bunny.ts | 6 +- examples/src/regl-examples/camera.ts | 6 +- examples/src/regl-examples/cloth.ts | 7 +- examples/src/regl-examples/cube.ts | 6 +- examples/src/webgl-examples/sample1.ts | 3 +- examples/src/webgl-examples/sample2.ts | 6 +- examples/src/webgl-examples/sample3.ts | 6 +- examples/src/webgl-examples/sample4.ts | 6 +- examples/src/webgl-examples/sample5.ts | 6 +- examples/src/webgl-examples/sample6.ts | 6 +- examples/src/webgl-examples/sample7.ts | 6 +- examples/src/webgl-examples/sample8.ts | 6 +- src/WebGL.ts | 107 ++++++------------ 55 files changed, 511 insertions(+), 464 deletions(-) diff --git a/examples/src/WebGL2Samples/buffer_copy.ts b/examples/src/WebGL2Samples/buffer_copy.ts index 867d063..4599b36 100644 --- a/examples/src/WebGL2Samples/buffer_copy.ts +++ b/examples/src/WebGL2Samples/buffer_copy.ts @@ -1,4 +1,4 @@ -import { IVertexBuffer, IBuffer, ICopyBuffer, IProgram, IRenderPass, IRenderingContext, IVertexArrayObject, WebGL } from "@feng3d/webgl-renderer"; +import { ICopyBuffer, IRenderPass, IRenderPipeline, IRenderingContext, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource } from "./utility"; (function () @@ -12,9 +12,10 @@ import { getShaderSource } from "./utility"; // -- Init WebGL Context const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; + const webgl = new WebGL(rc); // -- Init Program - const program: IProgram = { + const program: IRenderPipeline = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") }, primitive: { topology: "TRIANGLES" }, }; @@ -37,7 +38,7 @@ import { getShaderSource } from "./utility"; write: vertexPosBufferDst, readOffset: 0, writeOffset: 0, size: vertices.length * Float32Array.BYTES_PER_ELEMENT }; - WebGL.runCopyBuffer(rc, cb); + webgl.runCopyBuffer(cb); // -- Init Vertex Array const vertexArray: IVertexArrayObject = { @@ -55,11 +56,11 @@ import { getShaderSource } from "./utility"; drawArrays: { vertexCount: 6 }, }] }; - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); // -- Delete WebGL resources - WebGL.deleteBuffer(rc, vertexPosBufferSrc); - WebGL.deleteBuffer(rc, vertexPosBufferDst); - WebGL.deleteProgram(rc, program); - WebGL.deleteVertexArray(rc, vertexArray); + webgl.deleteBuffer(vertexPosBufferSrc); + webgl.deleteBuffer(vertexPosBufferDst); + webgl.deleteProgram(program); + webgl.deleteVertexArray(vertexArray); })(); diff --git a/examples/src/WebGL2Samples/buffer_uniform.ts b/examples/src/WebGL2Samples/buffer_uniform.ts index 5ced193..2d5f8ca 100644 --- a/examples/src/WebGL2Samples/buffer_uniform.ts +++ b/examples/src/WebGL2Samples/buffer_uniform.ts @@ -12,6 +12,7 @@ import { getShaderSource } from "./utility"; // --Init WebGL Context const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; + const webgl = new WebGL(rc); // -- Init Program const program: IProgram = { @@ -106,7 +107,7 @@ import { getShaderSource } from "./utility"; lightPos[1] = Math.sin(6 * uTime); uniformPerPassBuffer.writeBuffers = [{ bufferOffset: 0, data: lightPos }]; - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); requestAnimationFrame(render); } diff --git a/examples/src/WebGL2Samples/draw_image_space.ts b/examples/src/WebGL2Samples/draw_image_space.ts index 1a2d9e5..dd5b652 100644 --- a/examples/src/WebGL2Samples/draw_image_space.ts +++ b/examples/src/WebGL2Samples/draw_image_space.ts @@ -8,6 +8,9 @@ canvas.width = Math.min(window.innerWidth, window.innerHeight); canvas.height = canvas.width; document.body.appendChild(canvas); +const renderingContext: IRenderingContext = { canvasId: "glcanvas" }; +const webgl = new WebGL(renderingContext); + loadImage("../../assets/img/Di-3d.png", (img) => { const texture: ITexture = { @@ -47,9 +50,7 @@ loadImage("../../assets/img/Di-3d.png", (img) => canvas.width = Math.min(window.innerWidth, window.innerHeight); canvas.height = canvas.width; - const renderingContext: IRenderingContext = { canvasId: "glcanvas" }; - - WebGL.runRenderPass(renderingContext, { + webgl.runRenderPass({ passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], @@ -60,8 +61,8 @@ loadImage("../../assets/img/Di-3d.png", (img) => }); // Delete WebGL resources - WebGL.deleteTexture(renderingContext, texture); - WebGL.deleteProgram(renderingContext, program); + webgl.deleteTexture(texture); + webgl.deleteProgram(program); }); function loadImage(url: string, onload: (img: HTMLImageElement) => void) diff --git a/examples/src/WebGL2Samples/draw_instanced.ts b/examples/src/WebGL2Samples/draw_instanced.ts index 0c41779..97d8ad1 100644 --- a/examples/src/WebGL2Samples/draw_instanced.ts +++ b/examples/src/WebGL2Samples/draw_instanced.ts @@ -1,4 +1,4 @@ -import { IVertexBuffer, IBuffer, IRenderObject, IRenderPipeline, IVertexArrayObject, WebGL } from "@feng3d/webgl-renderer"; +import { IRenderObject, IRenderPipeline, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { IRenderingContext } from "../../../src/data/IRenderingContext"; import { getShaderSource } from "./utility"; @@ -8,6 +8,9 @@ canvas.width = window.innerWidth; canvas.height = window.innerHeight; document.body.appendChild(canvas); +const renderingContext: IRenderingContext = { canvasId: "glcanvas" }; +const webgl = new WebGL(renderingContext); + const vertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: new Float32Array([-0.3, -0.5, @@ -44,9 +47,7 @@ const renderObject: IRenderObject = { canvas.width = window.innerWidth; canvas.height = window.innerHeight; -const renderingContext: IRenderingContext = { canvasId: "glcanvas" }; - -WebGL.runRenderPass(renderingContext, { +webgl.runRenderPass({ passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], @@ -57,7 +58,7 @@ WebGL.runRenderPass(renderingContext, { }); // -- Delete WebGL resources -WebGL.deleteBuffer(renderingContext, vertexPosBuffer); -WebGL.deleteBuffer(renderingContext, vertexColorBuffer); -WebGL.deleteProgram(renderingContext, program); -WebGL.deleteVertexArray(renderingContext, vertexArray); +webgl.deleteBuffer(vertexPosBuffer); +webgl.deleteBuffer(vertexColorBuffer); +webgl.deleteProgram(program); +webgl.deleteVertexArray(vertexArray); diff --git a/examples/src/WebGL2Samples/draw_instanced_ubo.ts b/examples/src/WebGL2Samples/draw_instanced_ubo.ts index c5b9cff..216b0fc 100644 --- a/examples/src/WebGL2Samples/draw_instanced_ubo.ts +++ b/examples/src/WebGL2Samples/draw_instanced_ubo.ts @@ -1,4 +1,4 @@ -import { IVertexBuffer, IBuffer, IProgram, IRenderPass, IRenderingContext, IUniformBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IProgram, IRenderPass, IRenderingContext, IUniformBuffer, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource } from "./utility"; const canvas = document.createElement("canvas"); @@ -8,6 +8,7 @@ canvas.height = window.innerHeight; document.body.appendChild(canvas); const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; +const webgl = new WebGL(rc); // -- Init program const program: IProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") } }; @@ -56,10 +57,10 @@ const rp: IRenderPass = { drawArrays: { vertexCount: 3, instanceCount: 2 }, }] }; -WebGL.runRenderPass(rc, rp); +webgl.runRenderPass(rp); // -- Delete WebGL resources -WebGL.deleteBuffer(rc, vertexPosBuffer); -WebGL.deleteBuffer(rc, uniformTransformBuffer); -WebGL.deleteBuffer(rc, uniformMaterialBuffer); -WebGL.deleteProgram(rc, program); +webgl.deleteBuffer(vertexPosBuffer); +webgl.deleteBuffer(uniformTransformBuffer); +webgl.deleteBuffer(uniformMaterialBuffer); +webgl.deleteProgram(program); diff --git a/examples/src/WebGL2Samples/draw_primitive_restart.ts b/examples/src/WebGL2Samples/draw_primitive_restart.ts index 678435c..9288c50 100644 --- a/examples/src/WebGL2Samples/draw_primitive_restart.ts +++ b/examples/src/WebGL2Samples/draw_primitive_restart.ts @@ -1,4 +1,4 @@ -import { IVertexBuffer, IBuffer, IIndexBuffer, IRenderObject, IRenderPipeline, IVertexArrayObject, WebGL } from "@feng3d/webgl-renderer"; +import { IIndexBuffer, IRenderObject, IRenderPipeline, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { IRenderingContext } from "../../../src/data/IRenderingContext"; import { getShaderSource } from "./utility"; @@ -8,6 +8,9 @@ canvas.width = Math.min(window.innerWidth, window.innerHeight); canvas.height = canvas.width; document.body.appendChild(canvas); +const renderingContext: IRenderingContext = { canvasId: "glcanvas" }; +const webgl = new WebGL(renderingContext); + // https://www.khronos.org/registry/webgl/specs/latest/2.0/#5.18 // WebGL 2.0 behaves as though PRIMITIVE_RESTART_FIXED_INDEX were always enabled. const MAX_UNSIGNED_SHORT = 65535; @@ -54,9 +57,7 @@ const renderObject: IRenderObject = { pipeline: program, }; -const renderingContext: IRenderingContext = { canvasId: "glcanvas" }; - -WebGL.runRenderPass(renderingContext, { +webgl.runRenderPass({ passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], @@ -67,7 +68,7 @@ WebGL.runRenderPass(renderingContext, { }); // -- Delete WebGL resources -WebGL.deleteBuffer(renderingContext, vertexPosBuffer); -WebGL.deleteBuffer(renderingContext, vertexElementBuffer); -WebGL.deleteProgram(renderingContext, program); -WebGL.deleteVertexArray(renderingContext, vertexArray); +webgl.deleteBuffer(vertexPosBuffer); +webgl.deleteBuffer(vertexElementBuffer); +webgl.deleteProgram(program); +webgl.deleteVertexArray(vertexArray); diff --git a/examples/src/WebGL2Samples/draw_range_arrays.ts b/examples/src/WebGL2Samples/draw_range_arrays.ts index 6b9fc83..e2e8acc 100644 --- a/examples/src/WebGL2Samples/draw_range_arrays.ts +++ b/examples/src/WebGL2Samples/draw_range_arrays.ts @@ -1,4 +1,4 @@ -import { IVertexBuffer, IBuffer, IRenderObject, IRenderPass, IRenderPipeline, IVertexArrayObject, WebGL } from "@feng3d/webgl-renderer"; +import { IRenderObject, IRenderPass, IRenderPipeline, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { IRenderingContext } from "../../../src/data/IRenderingContext"; import { getShaderSource } from "./utility"; @@ -8,6 +8,9 @@ canvas.width = window.innerWidth; canvas.height = window.innerHeight; document.body.appendChild(canvas); +const renderingContext: IRenderingContext = { canvasId: "glcanvas" }; +const webgl = new WebGL(renderingContext); + const vertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: new Float32Array([ @@ -70,10 +73,8 @@ const data: IRenderPass = { ], }; -const renderingContext: IRenderingContext = { canvasId: "glcanvas" }; - -WebGL.runRenderPass(renderingContext, data); +webgl.runRenderPass(data); -WebGL.deleteBuffer(renderingContext, vertexPosBuffer); -WebGL.deleteProgram(renderingContext, pipeline); -WebGL.deleteVertexArray(renderingContext, vertexArray); +webgl.deleteBuffer(vertexPosBuffer); +webgl.deleteProgram(pipeline); +webgl.deleteVertexArray(vertexArray); diff --git a/examples/src/WebGL2Samples/fbo_blit.ts b/examples/src/WebGL2Samples/fbo_blit.ts index c76f11f..ca72f86 100644 --- a/examples/src/WebGL2Samples/fbo_blit.ts +++ b/examples/src/WebGL2Samples/fbo_blit.ts @@ -1,4 +1,4 @@ -import { IVertexBuffer, IBlitFramebuffer, IBlitFramebufferItem, IBuffer, IPassDescriptor, IRenderObject, IRenderPass, IRenderPipeline, IRenderbuffer, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexAttributes, WebGL } from "@feng3d/webgl-renderer"; +import { IBlitFramebuffer, IBlitFramebufferItem, IPassDescriptor, IRenderObject, IRenderPass, IRenderPipeline, IRenderbuffer, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexAttributes, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource, loadImage } from "./utility"; const canvas = document.createElement("canvas"); @@ -7,7 +7,8 @@ canvas.width = Math.min(window.innerWidth, window.innerHeight); canvas.height = canvas.width; document.body.appendChild(canvas); -const canvasContext: IRenderingContext = { canvasId: "glcanvas" }; +const renderingContext: IRenderingContext = { canvasId: "glcanvas" }; +const webgl = new WebGL(renderingContext); const program: IRenderPipeline = { primitive: { topology: "TRIANGLES" }, @@ -187,18 +188,18 @@ loadImage("../../assets/img/Di-3d.png", (image) => }; // 执行 - WebGL.runRenderPass(canvasContext, fboRenderPass); - WebGL.runBlitFramebuffer(canvasContext, blitFramebuffer); - WebGL.runRenderPass(canvasContext, renderPass2); + webgl.runRenderPass(fboRenderPass); + webgl.runBlitFramebuffer(blitFramebuffer); + webgl.runRenderPass(renderPass2); // Delete WebGL resources - WebGL.deleteFramebuffer(canvasContext, fboRenderPass.passDescriptor); - WebGL.deleteFramebuffer(canvasContext, framebufferResolve); - WebGL.deleteRenderbuffer(canvasContext, colorRenderbuffer); - WebGL.deleteBuffer(canvasContext, vertexPosBuffer); - WebGL.deleteBuffer(canvasContext, vertexTexBuffer); - WebGL.deleteTexture(canvasContext, textureDiffuse); - WebGL.deleteTexture(canvasContext, textureColorBuffer); - WebGL.deleteProgram(canvasContext, program); - WebGL.deleteVertexArray(canvasContext, vertexArray); + webgl.deleteFramebuffer(fboRenderPass.passDescriptor); + webgl.deleteFramebuffer(framebufferResolve); + webgl.deleteRenderbuffer(colorRenderbuffer); + webgl.deleteBuffer(vertexPosBuffer); + webgl.deleteBuffer(vertexTexBuffer); + webgl.deleteTexture(textureDiffuse); + webgl.deleteTexture(textureColorBuffer); + webgl.deleteProgram(program); + webgl.deleteVertexArray(vertexArray); }); diff --git a/examples/src/WebGL2Samples/fbo_multisample.ts b/examples/src/WebGL2Samples/fbo_multisample.ts index 74a5fb4..d0597dc 100644 --- a/examples/src/WebGL2Samples/fbo_multisample.ts +++ b/examples/src/WebGL2Samples/fbo_multisample.ts @@ -1,5 +1,5 @@ +import { IBlitFramebuffer, IPassDescriptor, IRenderPass, IRenderPipeline, IRenderbuffer, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { mat4, vec3 } from "gl-matrix"; -import { IVertexBuffer, IBlitFramebuffer, IBuffer, IPassDescriptor, IRenderPass, IRenderPipeline, IRenderbuffer, IRenderingContext, ISampler, ITexture, IVertexArrayObject, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource } from "./utility"; const canvas = document.createElement("canvas"); @@ -9,6 +9,7 @@ canvas.height = canvas.width; document.body.appendChild(canvas); const renderingContext: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; +const webgl = new WebGL(renderingContext); // -- Init program const PROGRAM = { @@ -121,7 +122,7 @@ const renderPass1: IRenderPass = { }] }; -WebGL.runRenderPass(renderingContext, renderPass1); +webgl.runRenderPass(renderPass1); // Blit framebuffers, no Multisample texture 2d in WebGL 2 const blitFramebuffer: IBlitFramebuffer = { @@ -131,7 +132,7 @@ const blitFramebuffer: IBlitFramebuffer = { 0, 0, FRAMEBUFFER_SIZE.x, FRAMEBUFFER_SIZE.y, "COLOR_BUFFER_BIT", "NEAREST"]], }; -WebGL.runBlitFramebuffer(renderingContext, blitFramebuffer); +webgl.runBlitFramebuffer(blitFramebuffer); // Pass 2 @@ -151,17 +152,17 @@ const renderPass2: IRenderPass = { } ], }; -WebGL.runRenderPass(renderingContext, renderPass2); +webgl.runRenderPass(renderPass2); // -- Delete WebGL resources -WebGL.deleteBuffer(renderingContext, vertexDataBuffer); -WebGL.deleteBuffer(renderingContext, vertexPosBuffer); -WebGL.deleteBuffer(renderingContext, vertexTexBuffer); -WebGL.deleteTexture(renderingContext, texture); -WebGL.deleteRenderbuffer(renderingContext, colorRenderbuffer); -WebGL.deleteFramebuffer(renderingContext, framebuffers[FRAMEBUFFER.RENDERBUFFER]); -WebGL.deleteFramebuffer(renderingContext, framebuffers[FRAMEBUFFER.COLORBUFFER]); -WebGL.deleteVertexArray(renderingContext, vertexArrays[PROGRAM.TEXTURE]); -WebGL.deleteVertexArray(renderingContext, vertexArrays[PROGRAM.SPLASH]); -WebGL.deleteProgram(renderingContext, programs[PROGRAM.TEXTURE]); -WebGL.deleteProgram(renderingContext, programs[PROGRAM.SPLASH]); +webgl.deleteBuffer(vertexDataBuffer); +webgl.deleteBuffer(vertexPosBuffer); +webgl.deleteBuffer(vertexTexBuffer); +webgl.deleteTexture(texture); +webgl.deleteRenderbuffer(colorRenderbuffer); +webgl.deleteFramebuffer(framebuffers[FRAMEBUFFER.RENDERBUFFER]); +webgl.deleteFramebuffer(framebuffers[FRAMEBUFFER.COLORBUFFER]); +webgl.deleteVertexArray(vertexArrays[PROGRAM.TEXTURE]); +webgl.deleteVertexArray(vertexArrays[PROGRAM.SPLASH]); +webgl.deleteProgram(programs[PROGRAM.TEXTURE]); +webgl.deleteProgram(programs[PROGRAM.SPLASH]); diff --git a/examples/src/WebGL2Samples/fbo_new_blend_equation.ts b/examples/src/WebGL2Samples/fbo_new_blend_equation.ts index 7a621c0..175aded 100644 --- a/examples/src/WebGL2Samples/fbo_new_blend_equation.ts +++ b/examples/src/WebGL2Samples/fbo_new_blend_equation.ts @@ -1,4 +1,4 @@ -import { IVertexBuffer, IBuffer, IRenderObject, IRenderPass, IRenderPipeline, IRenderingContext, ISampler, ITexture, IVertexArrayObject, WebGL } from "@feng3d/webgl-renderer"; +import { IRenderObject, IRenderPass, IRenderPipeline, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { IViewport } from "../../../src/data/IViewport"; import { getShaderSource, loadImage } from "./utility"; @@ -9,6 +9,7 @@ canvas.height = canvas.width; document.body.appendChild(canvas); const renderingContext: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; +const webgl = new WebGL(renderingContext); // -- Divide viewport @@ -189,12 +190,12 @@ function render() } } - WebGL.runRenderPass(renderingContext, renderPass); + webgl.runRenderPass(renderPass); // -- Clean up - WebGL.deleteBuffer(renderingContext, vertexPosBuffer); - WebGL.deleteBuffer(renderingContext, vertexTexBuffer); - WebGL.deleteVertexArray(renderingContext, vertexArray); - WebGL.deleteTexture(renderingContext, texture); - WebGL.deleteProgram(renderingContext, program); + webgl.deleteBuffer(vertexPosBuffer); + webgl.deleteBuffer(vertexTexBuffer); + webgl.deleteVertexArray(vertexArray); + webgl.deleteTexture(texture); + webgl.deleteProgram(program); } \ No newline at end of file diff --git a/examples/src/WebGL2Samples/fbo_read_pixels.ts b/examples/src/WebGL2Samples/fbo_read_pixels.ts index ecbfbb8..ebb2727 100644 --- a/examples/src/WebGL2Samples/fbo_read_pixels.ts +++ b/examples/src/WebGL2Samples/fbo_read_pixels.ts @@ -1,4 +1,4 @@ -import { IVertexBuffer, IBuffer, IFramebuffer, IRenderObject, IRenderPass, IRenderPipeline, IRenderingContext, ISampler, ITexture, IVertexArrayObject, WebGL } from "@feng3d/webgl-renderer"; +import { IFramebuffer, IRenderObject, IRenderPass, IRenderPipeline, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource } from "./utility"; const canvas = document.createElement("canvas"); @@ -7,7 +7,8 @@ canvas.width = Math.min(window.innerWidth, window.innerHeight); canvas.height = canvas.width; document.body.appendChild(canvas); -const renderingContext: IRenderingContext = { canvasId: "glcanvas" }; +const renderingContext: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; +const webgl = new WebGL(renderingContext); // -- Divide viewport @@ -140,7 +141,7 @@ const rp1: IRenderPass = { drawArrays: { vertexCount: 6 }, }], }; -WebGL.runRenderPass(renderingContext, rp1); +webgl.runRenderPass(rp1); // Pass 2 const rp: IRenderPass = { @@ -167,19 +168,19 @@ for (let i = 0; i < Textures.MAX; ++i) uniforms: { ...ro.uniforms, layer: i }, }); } -WebGL.runRenderPass(renderingContext, rp); +webgl.runRenderPass(rp); const data = new Uint8Array(w * h * 4 * 3); -WebGL.runReadPixels(renderingContext, { +webgl.runReadPixels({ frameBuffer, attachmentPoint: "COLOR_ATTACHMENT0", x: 0, y: 0, width: w, height: h, format: "RGBA", type: "UNSIGNED_BYTE", dstData: data, dstOffset: 0 }); -WebGL.runReadPixels(renderingContext, { +webgl.runReadPixels({ frameBuffer, attachmentPoint: "COLOR_ATTACHMENT1", x: 0, y: 0, width: w, height: h, format: "RGBA", type: "UNSIGNED_BYTE", dstData: data, dstOffset: w * h * 4 }); -WebGL.runReadPixels(renderingContext, { +webgl.runReadPixels({ frameBuffer, attachmentPoint: "COLOR_ATTACHMENT1", x: 0, y: 0, width: w, height: h, format: "RGBA", type: "UNSIGNED_BYTE", dstData: data, dstOffset: w * h * 4 * 2 }); @@ -187,12 +188,12 @@ WebGL.runReadPixels(renderingContext, { console.log(data); // Clean up -WebGL.deleteBuffer(renderingContext, vertexPosBuffer); -WebGL.deleteBuffer(renderingContext, vertexTexBuffer); -WebGL.deleteVertexArray(renderingContext, multipleOutputVertexArray); -WebGL.deleteVertexArray(renderingContext, layerVertexArray); -WebGL.deleteFramebuffer(renderingContext, frameBuffer); -WebGL.deleteTexture(renderingContext, texture); -WebGL.deleteProgram(renderingContext, multipleOutputProgram); -WebGL.deleteProgram(renderingContext, layerProgram); +webgl.deleteBuffer(vertexPosBuffer); +webgl.deleteBuffer(vertexTexBuffer); +webgl.deleteVertexArray(multipleOutputVertexArray); +webgl.deleteVertexArray(layerVertexArray); +webgl.deleteFramebuffer(frameBuffer); +webgl.deleteTexture(texture); +webgl.deleteProgram(multipleOutputProgram); +webgl.deleteProgram(layerProgram); diff --git a/examples/src/WebGL2Samples/fbo_rtt_depth_texture.ts b/examples/src/WebGL2Samples/fbo_rtt_depth_texture.ts index 4692449..9f7306b 100644 --- a/examples/src/WebGL2Samples/fbo_rtt_depth_texture.ts +++ b/examples/src/WebGL2Samples/fbo_rtt_depth_texture.ts @@ -1,4 +1,4 @@ -import { IVertexBuffer, IBuffer, IFramebuffer, IRenderPass, IRenderPipeline, IRenderingContext, ISampler, ITexture, IVertexArrayObject, WebGL } from "@feng3d/webgl-renderer"; +import { IFramebuffer, IRenderPass, IRenderPipeline, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource } from "./utility"; const canvas = document.createElement("canvas"); @@ -7,12 +7,12 @@ canvas.width = window.innerWidth; canvas.height = window.innerHeight; document.body.appendChild(canvas); -const renderingContext: IRenderingContext = { canvasId: "glcanvas" }; -const gl = canvas.getContext("webgl2", { antialias: false }); +const renderingContext: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; +const webgl = new WebGL(renderingContext); const windowSize = { - x: gl.drawingBufferWidth, - y: gl.drawingBufferHeight + x: canvas.width, + y: canvas.height }; // -- Initialize program @@ -105,7 +105,7 @@ const renderPass: IRenderPass = { }], }; -WebGL.runRenderPass(renderingContext, renderPass); +webgl.runRenderPass(renderPass); // Pass 2: Draw const rp2: IRenderPass = { @@ -119,16 +119,16 @@ const rp2: IRenderPass = { drawArrays: { vertexCount: 6 }, }], }; -WebGL.runRenderPass(renderingContext, rp2); +webgl.runRenderPass(rp2); // Clean up -WebGL.deleteBuffer(renderingContext, triVertexPosBuffer); -WebGL.deleteBuffer(renderingContext, quadVertexPosBuffer); -WebGL.deleteBuffer(renderingContext, quadVertexTexBuffer); -WebGL.deleteVertexArray(renderingContext, triVertexArray); -WebGL.deleteVertexArray(renderingContext, quadVertexArray); -WebGL.deleteFramebuffer(renderingContext, frameBuffer); -WebGL.deleteTexture(renderingContext, depthTexture); -WebGL.deleteProgram(renderingContext, depthProgram); -WebGL.deleteProgram(renderingContext, drawProgram); +webgl.deleteBuffer(triVertexPosBuffer); +webgl.deleteBuffer(quadVertexPosBuffer); +webgl.deleteBuffer(quadVertexTexBuffer); +webgl.deleteVertexArray(triVertexArray); +webgl.deleteVertexArray(quadVertexArray); +webgl.deleteFramebuffer(frameBuffer); +webgl.deleteTexture(depthTexture); +webgl.deleteProgram(depthProgram); +webgl.deleteProgram(drawProgram); diff --git a/examples/src/WebGL2Samples/fbo_rtt_draw_buffers.ts b/examples/src/WebGL2Samples/fbo_rtt_draw_buffers.ts index 19847f6..242c124 100644 --- a/examples/src/WebGL2Samples/fbo_rtt_draw_buffers.ts +++ b/examples/src/WebGL2Samples/fbo_rtt_draw_buffers.ts @@ -1,4 +1,4 @@ -import { IVertexBuffer, IBuffer, IFramebuffer, IRenderPass, IRenderPipeline, IRenderingContext, ISampler, ITexture, IVertexArrayObject, WebGL } from "@feng3d/webgl-renderer"; +import { IFramebuffer, IRenderPass, IRenderPipeline, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource } from "./utility"; const canvas = document.createElement("canvas"); @@ -8,6 +8,7 @@ canvas.height = window.innerHeight; document.body.appendChild(canvas); const renderingContext: IRenderingContext = { canvasId: "glcanvas" }; +const webgl = new WebGL(renderingContext); const windowSize = { x: canvas.width, @@ -111,7 +112,7 @@ const renderPass: IRenderPass = { drawArrays: { vertexCount: 3 }, }], }; -WebGL.runRenderPass(renderingContext, renderPass); +webgl.runRenderPass(renderPass); // Pass 2: Draw to screen const renderPass2: IRenderPass = { @@ -126,17 +127,17 @@ const renderPass2: IRenderPass = { drawArrays: { vertexCount: 6 }, }], }; -WebGL.runRenderPass(renderingContext, renderPass2); +webgl.runRenderPass(renderPass2); // Clean up -WebGL.deleteBuffer(renderingContext, triVertexPosBuffer); -WebGL.deleteBuffer(renderingContext, quadVertexPosBuffer); -WebGL.deleteBuffer(renderingContext, quadVertexTexBuffer); -WebGL.deleteVertexArray(renderingContext, triVertexArray); -WebGL.deleteVertexArray(renderingContext, quadVertexArray); -WebGL.deleteFramebuffer(renderingContext, frameBuffer); -WebGL.deleteTexture(renderingContext, color1Texture); -WebGL.deleteTexture(renderingContext, color2Texture); -WebGL.deleteProgram(renderingContext, drawBufferProgram); -WebGL.deleteProgram(renderingContext, drawProgram); +webgl.deleteBuffer(triVertexPosBuffer); +webgl.deleteBuffer(quadVertexPosBuffer); +webgl.deleteBuffer(quadVertexTexBuffer); +webgl.deleteVertexArray(triVertexArray); +webgl.deleteVertexArray(quadVertexArray); +webgl.deleteFramebuffer(frameBuffer); +webgl.deleteTexture(color1Texture); +webgl.deleteTexture(color2Texture); +webgl.deleteProgram(drawBufferProgram); +webgl.deleteProgram(drawProgram); diff --git a/examples/src/WebGL2Samples/fbo_rtt_texture_array.ts b/examples/src/WebGL2Samples/fbo_rtt_texture_array.ts index ceccd05..0febe87 100644 --- a/examples/src/WebGL2Samples/fbo_rtt_texture_array.ts +++ b/examples/src/WebGL2Samples/fbo_rtt_texture_array.ts @@ -1,4 +1,4 @@ -import { IVertexBuffer, IBuffer, IFramebuffer, IRenderObject, IRenderPass, IRenderPipeline, IRenderingContext, ISampler, ITexture, IVertexArrayObject, WebGL } from "@feng3d/webgl-renderer"; +import { IFramebuffer, IRenderObject, IRenderPass, IRenderPipeline, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource } from "./utility"; const canvas = document.createElement("canvas"); @@ -7,8 +7,8 @@ canvas.width = Math.min(window.innerWidth, window.innerHeight); canvas.height = canvas.width; document.body.appendChild(canvas); -const gl = canvas.getContext("webgl2", { antialias: false }); const renderingContext: IRenderingContext = { canvasId: "glcanvas" }; +const webgl = new WebGL(renderingContext); // -- Divide viewport @@ -173,15 +173,15 @@ for (let i = 0; i < Textures.MAX; ++i) ); } -WebGL.runRenderPass(renderingContext, renderPass1); -WebGL.runRenderPass(renderingContext, renderPass); +webgl.runRenderPass(renderPass1); +webgl.runRenderPass(renderPass); // Clean up -WebGL.deleteBuffer(renderingContext, vertexPosBuffer); -WebGL.deleteBuffer(renderingContext, vertexTexBuffer); -WebGL.deleteVertexArray(renderingContext, multipleOutputVertexArray); -WebGL.deleteVertexArray(renderingContext, layerVertexArray); -WebGL.deleteFramebuffer(renderingContext, frameBuffer); -WebGL.deleteTexture(renderingContext, texture); -WebGL.deleteProgram(renderingContext, multipleOutputProgram); -WebGL.deleteProgram(renderingContext, layerProgram); \ No newline at end of file +webgl.deleteBuffer(vertexPosBuffer); +webgl.deleteBuffer(vertexTexBuffer); +webgl.deleteVertexArray(multipleOutputVertexArray); +webgl.deleteVertexArray(layerVertexArray); +webgl.deleteFramebuffer(frameBuffer); +webgl.deleteTexture(texture); +webgl.deleteProgram(multipleOutputProgram); +webgl.deleteProgram(layerProgram); \ No newline at end of file diff --git a/examples/src/WebGL2Samples/geo_vertex_format.ts b/examples/src/WebGL2Samples/geo_vertex_format.ts index 017d2e0..b215dd6 100644 --- a/examples/src/WebGL2Samples/geo_vertex_format.ts +++ b/examples/src/WebGL2Samples/geo_vertex_format.ts @@ -1,5 +1,5 @@ -import { mat4, vec3 } from "gl-matrix"; import { IIndexBuffer, IProgram, IRenderObject, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { mat4, vec3 } from "gl-matrix"; import { HalfFloat } from "./third-party/HalfFloatUtility"; import { getShaderSource, loadImage } from "./utility"; @@ -12,6 +12,7 @@ import { getShaderSource, loadImage } from "./utility"; document.body.appendChild(canvas); const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; + const webgl = new WebGL(rc); // -- Init program const program: IProgram = { @@ -241,7 +242,7 @@ import { getShaderSource, loadImage } from "./utility"; ro.uniforms.u_viewProj = viewProj; ro.uniforms.s_tex2D = { texture, sampler }; - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); requestAnimationFrame(render); diff --git a/examples/src/WebGL2Samples/glsl_centroid.ts b/examples/src/WebGL2Samples/glsl_centroid.ts index 14c8d33..5b7c6d4 100644 --- a/examples/src/WebGL2Samples/glsl_centroid.ts +++ b/examples/src/WebGL2Samples/glsl_centroid.ts @@ -1,5 +1,5 @@ +import { IBlitFramebuffer, IFramebuffer, IProgram, IRenderObject, IRenderPass, IRenderbuffer, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { mat4, vec3 } from "gl-matrix"; -import { IVertexBuffer, IBlitFramebuffer, IBuffer, IFramebuffer, IProgram, IRenderObject, IRenderPass, IRenderbuffer, IRenderingContext, ISampler, ITexture, IVertexArrayObject, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource } from "./utility"; const canvas = document.createElement("canvas"); @@ -9,6 +9,7 @@ canvas.height = window.innerHeight; document.body.appendChild(canvas); const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; +const webgl = new WebGL(rc); // -- Divide viewport const canvasSize = { @@ -180,7 +181,7 @@ for (let i = 0; i < VIEWPORTS.MAX; ++i) drawArrays: { vertexCount }, }] }; - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); // Blit framebuffers, no Multisample texture 2d in WebGL 2 // centroid will only work with multisample @@ -193,7 +194,7 @@ for (let i = 0; i < VIEWPORTS.MAX; ++i) "COLOR_BUFFER_BIT", "NEAREST" ]], }; - WebGL.runBlitFramebuffer(rc, blit); + webgl.runBlitFramebuffer(blit); } // Pass 2 @@ -225,33 +226,33 @@ for (let i = 0; i < VIEWPORTS.MAX; ++i) } ); } -WebGL.runRenderPass(rc, rp2); +webgl.runRenderPass(rp2); // -- Delete WebGL resources -WebGL.deleteBuffer(rc, texVertexPosBuffer); -WebGL.deleteBuffer(rc, texVertexTexBuffer); -WebGL.deleteBuffer(rc, vertexPositionBuffer); -WebGL.deleteBuffer(rc, vertexDataBuffer); +webgl.deleteBuffer(texVertexPosBuffer); +webgl.deleteBuffer(texVertexTexBuffer); +webgl.deleteBuffer(vertexPositionBuffer); +webgl.deleteBuffer(vertexDataBuffer); -WebGL.deleteTexture(rc, textures[PROGRAM.TEXTURE]); -WebGL.deleteTexture(rc, textures[PROGRAM.TEXTURE_CENTROID]); +webgl.deleteTexture(textures[PROGRAM.TEXTURE]); +webgl.deleteTexture(textures[PROGRAM.TEXTURE_CENTROID]); -WebGL.deleteSampler(rc, samplers[PROGRAM.TEXTURE]); -WebGL.deleteSampler(rc, samplers[PROGRAM.TEXTURE_CENTROID]); +webgl.deleteSampler(samplers[PROGRAM.TEXTURE]); +webgl.deleteSampler(samplers[PROGRAM.TEXTURE_CENTROID]); -WebGL.deleteRenderbuffer(rc, colorRenderbuffer); -WebGL.deleteRenderbuffer(rc, colorRenderbufferCentroid); +webgl.deleteRenderbuffer(colorRenderbuffer); +webgl.deleteRenderbuffer(colorRenderbufferCentroid); -WebGL.deleteFramebuffer(rc, framebuffers[FRAMEBUFFER.RENDERBUFFER]); -WebGL.deleteFramebuffer(rc, framebuffers[FRAMEBUFFER.COLORBUFFER]); +webgl.deleteFramebuffer(framebuffers[FRAMEBUFFER.RENDERBUFFER]); +webgl.deleteFramebuffer(framebuffers[FRAMEBUFFER.COLORBUFFER]); -WebGL.deleteFramebuffer(rc, framebuffers[FRAMEBUFFER.RENDERBUFFER_CENTROID]); -WebGL.deleteFramebuffer(rc, framebuffers[FRAMEBUFFER.COLORBUFFER_CENTROID]); +webgl.deleteFramebuffer(framebuffers[FRAMEBUFFER.RENDERBUFFER_CENTROID]); +webgl.deleteFramebuffer(framebuffers[FRAMEBUFFER.COLORBUFFER_CENTROID]); -WebGL.deleteVertexArray(rc, vertexArrays[PROGRAM.TEXTURE]); -WebGL.deleteVertexArray(rc, vertexArrays[PROGRAM.TEXTURE_CENTROID]); -WebGL.deleteVertexArray(rc, vertexArrays[PROGRAM.SPLASH]); +webgl.deleteVertexArray(vertexArrays[PROGRAM.TEXTURE]); +webgl.deleteVertexArray(vertexArrays[PROGRAM.TEXTURE_CENTROID]); +webgl.deleteVertexArray(vertexArrays[PROGRAM.SPLASH]); -WebGL.deleteProgram(rc, programs[PROGRAM.TEXTURE]); -WebGL.deleteProgram(rc, programs[PROGRAM.TEXTURE_CENTROID]); -WebGL.deleteProgram(rc, programs[PROGRAM.SPLASH]); +webgl.deleteProgram(programs[PROGRAM.TEXTURE]); +webgl.deleteProgram(programs[PROGRAM.TEXTURE_CENTROID]); +webgl.deleteProgram(programs[PROGRAM.SPLASH]); diff --git a/examples/src/WebGL2Samples/glsl_flat_smooth_interpolators.ts b/examples/src/WebGL2Samples/glsl_flat_smooth_interpolators.ts index d786c1b..f8db9a9 100644 --- a/examples/src/WebGL2Samples/glsl_flat_smooth_interpolators.ts +++ b/examples/src/WebGL2Samples/glsl_flat_smooth_interpolators.ts @@ -1,5 +1,5 @@ +import { IIndexBuffer, IProgram, IRenderPass, IRenderingContext, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { mat4, vec3 } from "gl-matrix"; -import { IVertexBuffer, IBuffer, IIndexBuffer, IProgram, IRenderPass, IRenderingContext, IVertexArrayObject, WebGL } from "@feng3d/webgl-renderer"; import { GlTFLoader, Primitive } from "./third-party/gltf-loader"; import { getShaderSource } from "./utility"; @@ -10,6 +10,7 @@ canvas.height = window.innerHeight; document.body.appendChild(canvas); const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; +const webgl = new WebGL(rc); // -- Divide viewport const canvasSize = { @@ -181,7 +182,7 @@ glTFLoader.loadGLTF(gltfUrl, function (glTF) } } } - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); requestAnimationFrame(render); })(); diff --git a/examples/src/WebGL2Samples/glsl_non_square_matrix.ts b/examples/src/WebGL2Samples/glsl_non_square_matrix.ts index b409212..5e4ce4c 100644 --- a/examples/src/WebGL2Samples/glsl_non_square_matrix.ts +++ b/examples/src/WebGL2Samples/glsl_non_square_matrix.ts @@ -8,6 +8,7 @@ canvas.height = canvas.width; document.body.appendChild(canvas); const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; +const webgl = new WebGL(rc); // -- Init program const program: IProgram = { @@ -76,12 +77,12 @@ loadImage("../../assets/img/Di-3d.png", function (image) drawArrays: { vertexCount: 6 }, }] }; - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); // Delete WebGL resources - WebGL.deleteBuffer(rc, vertexPosBuffer); - WebGL.deleteBuffer(rc, vertexTexBuffer); - WebGL.deleteTexture(rc, texture); - WebGL.deleteProgram(rc, program); - WebGL.deleteVertexArray(rc, vertexArray); + webgl.deleteBuffer(vertexPosBuffer); + webgl.deleteBuffer(vertexTexBuffer); + webgl.deleteTexture(texture); + webgl.deleteProgram(program); + webgl.deleteVertexArray(vertexArray); }); diff --git a/examples/src/WebGL2Samples/query_occlusion.ts b/examples/src/WebGL2Samples/query_occlusion.ts index 44cc43e..37d39ca 100644 --- a/examples/src/WebGL2Samples/query_occlusion.ts +++ b/examples/src/WebGL2Samples/query_occlusion.ts @@ -1,4 +1,4 @@ -import { IVertexBuffer, IBuffer, IProgram, IQuery, IRenderObject, IRenderPass, IRenderingContext, IVertexArrayObject, WebGL } from "@feng3d/webgl-renderer"; +import { IProgram, IQuery, IRenderObject, IRenderPass, IRenderingContext, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource } from "./utility"; // -- Init Canvas @@ -10,6 +10,7 @@ document.body.appendChild(canvas); // -- Init WebGL Context const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; +const webgl = new WebGL(rc); // -- Init Program const program: IProgram = { @@ -64,14 +65,14 @@ rp.renderObjects.push({ rp.renderObjects.push({ action: "endQuery", target: "ANY_SAMPLES_PASSED", query }); -WebGL.runRenderPass(rc, rp); +webgl.runRenderPass(rp); -WebGL.getQueryResult(rc, query).then((samplesPassed) => +webgl.getQueryResult(query).then((samplesPassed) => { document.getElementById("samplesPassed").innerHTML = `Any samples passed: ${Number(samplesPassed)}`; }); // -- Delete WebGL resources -WebGL.deleteBuffer(rc, vertexPosBuffer); -WebGL.deleteProgram(rc, program); -WebGL.deleteVertexArray(rc, vertexArray); +webgl.deleteBuffer(vertexPosBuffer); +webgl.deleteProgram(program); +webgl.deleteVertexArray(vertexArray); diff --git a/examples/src/WebGL2Samples/sampler_filter.ts b/examples/src/WebGL2Samples/sampler_filter.ts index 58235da..3dfa0bc 100644 --- a/examples/src/WebGL2Samples/sampler_filter.ts +++ b/examples/src/WebGL2Samples/sampler_filter.ts @@ -1,4 +1,4 @@ -import { IVertexBuffer, IProgram, IRenderObject, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, WebGL } from "@feng3d/webgl-renderer"; +import { IProgram, IRenderObject, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource, loadImage } from "./utility"; const canvas = document.createElement("canvas"); @@ -8,6 +8,7 @@ canvas.height = canvas.width; document.body.appendChild(canvas); const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; +const webgl = new WebGL(rc); // -- Divide viewport @@ -166,16 +167,16 @@ function render() }); } - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); // Clean up - WebGL.deleteBuffer(rc, vertexPosBuffer); - WebGL.deleteBuffer(rc, vertexTexBuffer); + webgl.deleteBuffer(vertexPosBuffer); + webgl.deleteBuffer(vertexTexBuffer); for (let j = 0; j < samplers.length; ++j) { - WebGL.deleteSampler(rc, samplers[(j + 1) % samplers.length]); + webgl.deleteSampler(samplers[(j + 1) % samplers.length]); } - WebGL.deleteVertexArray(rc, vertexArray); - WebGL.deleteTexture(rc, texture); - WebGL.deleteProgram(rc, program); + webgl.deleteVertexArray(vertexArray); + webgl.deleteTexture(texture); + webgl.deleteProgram(program); } diff --git a/examples/src/WebGL2Samples/sampler_object.ts b/examples/src/WebGL2Samples/sampler_object.ts index 42f4a93..def4016 100644 --- a/examples/src/WebGL2Samples/sampler_object.ts +++ b/examples/src/WebGL2Samples/sampler_object.ts @@ -1,4 +1,4 @@ -import { IVertexBuffer, IProgram, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, WebGL } from "@feng3d/webgl-renderer"; +import { IProgram, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource, loadImage } from "./utility"; const canvas = document.createElement("canvas"); @@ -7,7 +7,8 @@ canvas.width = Math.min(window.innerWidth, window.innerHeight); canvas.height = canvas.width; document.body.appendChild(canvas); -const rc: IRenderingContext = { canvasId: "glcanvas" }; +const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; +const webgl = new WebGL(rc); // -- Initialize program @@ -105,14 +106,14 @@ function render() drawArrays: { vertexCount: 6, instanceCount: 1 }, }], }; - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); // Cleanup - WebGL.deleteBuffer(rc, vertexPosBuffer); - WebGL.deleteBuffer(rc, vertexTexBuffer); - WebGL.deleteSampler(rc, samplerA); - WebGL.deleteSampler(rc, samplerB); - WebGL.deleteVertexArray(rc, vertexArray); - WebGL.deleteTexture(rc, texture); - WebGL.deleteProgram(rc, program); + webgl.deleteBuffer(vertexPosBuffer); + webgl.deleteBuffer(vertexTexBuffer); + webgl.deleteSampler(samplerA); + webgl.deleteSampler(samplerB); + webgl.deleteVertexArray(vertexArray); + webgl.deleteTexture(texture); + webgl.deleteProgram(program); } \ No newline at end of file diff --git a/examples/src/WebGL2Samples/sampler_wrap.ts b/examples/src/WebGL2Samples/sampler_wrap.ts index 3365a99..a473024 100644 --- a/examples/src/WebGL2Samples/sampler_wrap.ts +++ b/examples/src/WebGL2Samples/sampler_wrap.ts @@ -1,4 +1,4 @@ -import { IVertexBuffer, IProgram, IRenderObject, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, WebGL } from "@feng3d/webgl-renderer"; +import { IProgram, IRenderObject, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource, loadImage } from "./utility"; const canvas = document.createElement("canvas"); @@ -7,9 +7,8 @@ canvas.width = Math.min(window.innerWidth, window.innerHeight); canvas.height = canvas.width; document.body.appendChild(canvas); -const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; - -const gl = canvas.getContext("webgl2", { antialias: false }); +const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; +const webgl = new WebGL(rc); // -- Divide viewport @@ -162,17 +161,17 @@ function render() drawArrays: { vertexCount: 6, instanceCount: 1 }, }); } - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); // -- Clean up - WebGL.deleteBuffer(rc, vertexPosBuffer); - WebGL.deleteBuffer(rc, vertexTexBuffer); + webgl.deleteBuffer(vertexPosBuffer); + webgl.deleteBuffer(vertexTexBuffer); for (let j = 0; j < samplers.length; ++j) { - WebGL.deleteSampler(rc, samplers[j]); + webgl.deleteSampler(samplers[j]); } - WebGL.deleteVertexArray(rc, vertexArray); - WebGL.deleteTexture(rc, texture); - WebGL.deleteProgram(rc, program); + webgl.deleteVertexArray(vertexArray); + webgl.deleteTexture(texture); + webgl.deleteProgram(program); } diff --git a/examples/src/WebGL2Samples/texture_2d_array.ts b/examples/src/WebGL2Samples/texture_2d_array.ts index e658fa0..d25e1cd 100644 --- a/examples/src/WebGL2Samples/texture_2d_array.ts +++ b/examples/src/WebGL2Samples/texture_2d_array.ts @@ -10,6 +10,7 @@ import { getShaderSource, loadImage } from "./utility"; document.body.appendChild(canvas); const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; + const webgl = new WebGL(rc); // -- Init program const program: IProgram = { @@ -103,7 +104,7 @@ import { getShaderSource, loadImage } from "./utility"; { // -- Render ro.uniforms.layer = frame; - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); frame = (frame + 1) % NUM_IMAGES; diff --git a/examples/src/WebGL2Samples/texture_3d.ts b/examples/src/WebGL2Samples/texture_3d.ts index 5a82445..1ccad1b 100644 --- a/examples/src/WebGL2Samples/texture_3d.ts +++ b/examples/src/WebGL2Samples/texture_3d.ts @@ -1,4 +1,4 @@ -import { IVertexBuffer, IProgram, IRenderObject, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, WebGL } from "@feng3d/webgl-renderer"; +import { IProgram, IRenderObject, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { snoise } from "./third-party/noise3D"; import { getShaderSource } from "./utility"; @@ -11,6 +11,7 @@ import { getShaderSource } from "./utility"; document.body.appendChild(canvas); const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; + const webgl = new WebGL(rc); // -- Divide viewport @@ -197,7 +198,7 @@ import { getShaderSource } from "./utility"; renderObjects[i].uniforms.orientation = matrices[i]; } - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); requestAnimationFrame(render); } diff --git a/examples/src/WebGL2Samples/texture_derivative.ts b/examples/src/WebGL2Samples/texture_derivative.ts index 9153762..4d7c457 100644 --- a/examples/src/WebGL2Samples/texture_derivative.ts +++ b/examples/src/WebGL2Samples/texture_derivative.ts @@ -1,5 +1,5 @@ +import { IIndexBuffer, IProgram, IRenderObject, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { mat4, vec3 } from "gl-matrix"; -import { IVertexBuffer, IIndexBuffer, IProgram, IRenderObject, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource, loadImage } from "./utility"; (function () @@ -11,6 +11,7 @@ import { getShaderSource, loadImage } from "./utility"; document.body.appendChild(canvas); const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; + const webgl = new WebGL(rc); // -- Init program const program: IProgram = { @@ -238,7 +239,7 @@ import { getShaderSource, loadImage } from "./utility"; ro.uniforms.pMatrix = perspectiveMatrix; ro.uniforms.diffuse = { texture, sampler }; - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); requestAnimationFrame(render); } diff --git a/examples/src/WebGL2Samples/texture_fetch.ts b/examples/src/WebGL2Samples/texture_fetch.ts index d9a1e52..9444984 100644 --- a/examples/src/WebGL2Samples/texture_fetch.ts +++ b/examples/src/WebGL2Samples/texture_fetch.ts @@ -1,4 +1,4 @@ -import { IVertexBuffer, IProgram, IRenderingContext, IVertexArrayObject, ITexture, ISampler, IRenderPass, WebGL } from "@feng3d/webgl-renderer"; +import { IProgram, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource, loadImage } from "./utility"; (function () @@ -10,6 +10,7 @@ import { getShaderSource, loadImage } from "./utility"; document.body.appendChild(canvas); const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; + const webgl = new WebGL(rc); // -- Init program const program: IProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") } }; @@ -85,13 +86,13 @@ import { getShaderSource, loadImage } from "./utility"; ], }; - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); // Delete WebGL resources - WebGL.deleteBuffer(rc, vertexPosBuffer); - WebGL.deleteBuffer(rc, vertexTexBuffer); - WebGL.deleteTexture(rc, texture); - WebGL.deleteProgram(rc, program); - WebGL.deleteVertexArray(rc, vertexArray); + webgl.deleteBuffer(vertexPosBuffer); + webgl.deleteBuffer(vertexTexBuffer); + webgl.deleteTexture(texture); + webgl.deleteProgram(program); + webgl.deleteVertexArray(vertexArray); }); })(); diff --git a/examples/src/WebGL2Samples/texture_format.ts b/examples/src/WebGL2Samples/texture_format.ts index ae29b39..536490d 100644 --- a/examples/src/WebGL2Samples/texture_format.ts +++ b/examples/src/WebGL2Samples/texture_format.ts @@ -10,6 +10,7 @@ import { getShaderSource, loadImage } from "./utility"; document.body.appendChild(canvas); const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; + const webgl = new WebGL(rc); // -- Viewport @@ -216,17 +217,17 @@ import { getShaderSource, loadImage } from "./utility"; drawArrays: { vertexCount: 6 }, }); } - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); // Delete WebGL resources - WebGL.deleteBuffer(rc, vertexPosBuffer); - WebGL.deleteBuffer(rc, vertexTexBuffer); + webgl.deleteBuffer(vertexPosBuffer); + webgl.deleteBuffer(vertexTexBuffer); for (i = 0; i < TextureTypes.MAX; ++i) { - WebGL.deleteTexture(rc, textures[i]); + webgl.deleteTexture(textures[i]); } - WebGL.deleteProgram(rc, programUint); - WebGL.deleteProgram(rc, programNormalized); - WebGL.deleteVertexArray(rc, vertexArray); + webgl.deleteProgram(programUint); + webgl.deleteProgram(programNormalized); + webgl.deleteVertexArray(vertexArray); }); })(); diff --git a/examples/src/WebGL2Samples/texture_grad.ts b/examples/src/WebGL2Samples/texture_grad.ts index e49f183..f8f518b 100644 --- a/examples/src/WebGL2Samples/texture_grad.ts +++ b/examples/src/WebGL2Samples/texture_grad.ts @@ -1,5 +1,5 @@ -import { mat4, vec3 } from "gl-matrix"; import { IIndexBuffer, IProgram, IRenderObject, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { mat4, vec3 } from "gl-matrix"; import { getShaderSource, loadImage } from "./utility"; (function () @@ -11,7 +11,7 @@ import { getShaderSource, loadImage } from "./utility"; document.body.appendChild(canvas); const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; - const gl = canvas.getContext("webgl2", { antialias: false }); + const webgl = new WebGL(rc); // -- Init program const program: IProgram = { @@ -216,11 +216,6 @@ import { getShaderSource, loadImage } from "./utility"; function render() { - // -- Render - gl.enable(gl.DEPTH_TEST); - gl.enable(gl.CULL_FACE); - gl.cullFace(gl.BACK); - orientation[0] = 0.00020; // yaw orientation[1] = 0.00010; // pitch orientation[2] = 0.00005; // roll @@ -233,7 +228,7 @@ import { getShaderSource, loadImage } from "./utility"; ro.uniforms.pMatrix = perspectiveMatrix; ro.uniforms.diffuse = { texture, sampler }; - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); requestAnimationFrame(render); } diff --git a/examples/src/WebGL2Samples/texture_immutable.ts b/examples/src/WebGL2Samples/texture_immutable.ts index db88d91..848cb06 100644 --- a/examples/src/WebGL2Samples/texture_immutable.ts +++ b/examples/src/WebGL2Samples/texture_immutable.ts @@ -11,6 +11,7 @@ import { getShaderSource, loadImage } from "./utility"; document.body.appendChild(canvas); const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; + const webgl = new WebGL(rc); const Corners = { LEFT: 0, @@ -136,16 +137,16 @@ import { getShaderSource, loadImage } from "./utility"; viewport: { x: viewports[Corners.RIGHT].x, y: viewports[Corners.RIGHT].y, width: viewports[Corners.RIGHT].z, height: viewports[Corners.RIGHT].w } }); - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); // Delete WebGL resources - WebGL.deleteBuffer(rc, vertexPosBuffer); - WebGL.deleteBuffer(rc, vertexTexBuffer); - WebGL.deleteTexture(rc, texture2D); - WebGL.deleteTexture(rc, texture3D); - WebGL.deleteProgram(rc, program); - WebGL.deleteProgram(rc, program3D); - WebGL.deleteVertexArray(rc, vertexArray); + webgl.deleteBuffer(vertexPosBuffer); + webgl.deleteBuffer(vertexTexBuffer); + webgl.deleteTexture(texture2D); + webgl.deleteTexture(texture3D); + webgl.deleteProgram(program); + webgl.deleteProgram(program3D); + webgl.deleteVertexArray(vertexArray); }); function create3DTexture() diff --git a/examples/src/WebGL2Samples/texture_integer.ts b/examples/src/WebGL2Samples/texture_integer.ts index d82d099..61cb0d3 100644 --- a/examples/src/WebGL2Samples/texture_integer.ts +++ b/examples/src/WebGL2Samples/texture_integer.ts @@ -10,7 +10,7 @@ import { getShaderSource, loadImage } from "./utility"; document.body.appendChild(canvas); const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; - const gl = canvas.getContext("webgl2", { antialias: false }); + const webgl = new WebGL(rc); // -- Init program const program: IProgram = { @@ -87,13 +87,13 @@ import { getShaderSource, loadImage } from "./utility"; renderObjects: [ro], }; - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); // Delete WebGL resources - WebGL.deleteBuffer(rc, vertexPosBuffer); - WebGL.deleteBuffer(rc, vertexTexBuffer); - WebGL.deleteTexture(rc, texture); - WebGL.deleteProgram(rc, program); - WebGL.deleteVertexArray(rc, vertexArray); + webgl.deleteBuffer(vertexPosBuffer); + webgl.deleteBuffer(vertexTexBuffer); + webgl.deleteTexture(texture); + webgl.deleteProgram(program); + webgl.deleteVertexArray(vertexArray); }); })(); diff --git a/examples/src/WebGL2Samples/texture_lod.ts b/examples/src/WebGL2Samples/texture_lod.ts index 784602d..1044b6e 100644 --- a/examples/src/WebGL2Samples/texture_lod.ts +++ b/examples/src/WebGL2Samples/texture_lod.ts @@ -10,6 +10,7 @@ import { getShaderSource, loadImage } from "./utility"; document.body.appendChild(canvas); const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; + const webgl = new WebGL(rc); // -- Mouse Behaviour let scale = 1.0; @@ -224,7 +225,7 @@ import { getShaderSource, loadImage } from "./utility"; }); } - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); requestAnimationFrame(render); } diff --git a/examples/src/WebGL2Samples/texture_offset.ts b/examples/src/WebGL2Samples/texture_offset.ts index 00bac7e..598e187 100644 --- a/examples/src/WebGL2Samples/texture_offset.ts +++ b/examples/src/WebGL2Samples/texture_offset.ts @@ -10,7 +10,7 @@ import { getShaderSource, loadImage } from "./utility"; document.body.appendChild(canvas); const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; - const gl = canvas.getContext("webgl2", { antialias: false }); + const webgl = new WebGL(rc); const Corners = { LEFT: 0, @@ -131,14 +131,14 @@ import { getShaderSource, loadImage } from "./utility"; drawArrays: { vertexCount: 6 }, }); - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); // Delete WebGL resources - WebGL.deleteBuffer(rc, vertexPosBuffer); - WebGL.deleteBuffer(rc, vertexTexBuffer); - WebGL.deleteTexture(rc, texture); - WebGL.deleteProgram(rc, programOffsetBicubic); - WebGL.deleteProgram(rc, programBicubic); - WebGL.deleteVertexArray(rc, vertexArray); + webgl.deleteBuffer(vertexPosBuffer); + webgl.deleteBuffer(vertexTexBuffer); + webgl.deleteTexture(texture); + webgl.deleteProgram(programOffsetBicubic); + webgl.deleteProgram(programBicubic); + webgl.deleteVertexArray(vertexArray); }); })(); diff --git a/examples/src/WebGL2Samples/texture_pixel_store.ts b/examples/src/WebGL2Samples/texture_pixel_store.ts index b18c87d..1d3dbc5 100644 --- a/examples/src/WebGL2Samples/texture_pixel_store.ts +++ b/examples/src/WebGL2Samples/texture_pixel_store.ts @@ -10,6 +10,7 @@ import { getShaderSource, loadImage } from "./utility"; document.body.appendChild(canvas); const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; + const webgl = new WebGL(rc); // -- Init program const program: IProgram = { @@ -98,13 +99,13 @@ import { getShaderSource, loadImage } from "./utility"; drawArrays: { vertexCount: 6 }, }); - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); // Delete WebGL resources - WebGL.deleteBuffer(rc, vertexPosBuffer); - WebGL.deleteBuffer(rc, vertexTexBuffer); - WebGL.deleteTexture(rc, texture); - WebGL.deleteProgram(rc, program); - WebGL.deleteVertexArray(rc, vertexArray); + webgl.deleteBuffer(vertexPosBuffer); + webgl.deleteBuffer(vertexTexBuffer); + webgl.deleteTexture(texture); + webgl.deleteProgram(program); + webgl.deleteVertexArray(vertexArray); }); })(); diff --git a/examples/src/WebGL2Samples/texture_srgb.ts b/examples/src/WebGL2Samples/texture_srgb.ts index e83085b..86057f1 100644 --- a/examples/src/WebGL2Samples/texture_srgb.ts +++ b/examples/src/WebGL2Samples/texture_srgb.ts @@ -10,6 +10,7 @@ import { getShaderSource, loadImage } from "./utility"; document.body.appendChild(canvas); const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; + const webgl = new WebGL(rc); // -- Initialize program @@ -90,13 +91,13 @@ import { getShaderSource, loadImage } from "./utility"; }, drawArrays: { vertexCount: 6 }, }); - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); // Cleanup - WebGL.deleteBuffer(rc, vertexPosBuffer); - WebGL.deleteBuffer(rc, vertexTexBuffer); - WebGL.deleteVertexArray(rc, vertexArray); - WebGL.deleteTexture(rc, texture); - WebGL.deleteProgram(rc, program); + webgl.deleteBuffer(vertexPosBuffer); + webgl.deleteBuffer(vertexTexBuffer); + webgl.deleteVertexArray(vertexArray); + webgl.deleteTexture(texture); + webgl.deleteProgram(program); } })(); diff --git a/examples/src/WebGL2Samples/texture_vertex.ts b/examples/src/WebGL2Samples/texture_vertex.ts index 29ec049..4a7bafa 100644 --- a/examples/src/WebGL2Samples/texture_vertex.ts +++ b/examples/src/WebGL2Samples/texture_vertex.ts @@ -1,5 +1,5 @@ +import { IIndexBuffer, IProgram, IRenderObject, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { mat4, vec3 } from "gl-matrix"; -import { IIndexBuffer, IProgram, IRenderObject, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, VertexAttributeTypes, WebGL } from "@feng3d/webgl-renderer"; import { GlTFLoader, Primitive } from "./third-party/gltf-loader"; import { getShaderSource, loadImage } from "./utility"; @@ -35,6 +35,7 @@ import { getShaderSource, loadImage } from "./utility"; document.body.appendChild(canvas); const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; + const webgl = new WebGL(rc); // -- Init program const program: IProgram = { @@ -232,7 +233,7 @@ import { getShaderSource, loadImage } from "./utility"; }); } } - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); requestAnimationFrame(render); } diff --git a/examples/src/WebGL2Samples/transform_feedback_instanced.ts b/examples/src/WebGL2Samples/transform_feedback_instanced.ts index 24d7a98..4b3a570 100644 --- a/examples/src/WebGL2Samples/transform_feedback_instanced.ts +++ b/examples/src/WebGL2Samples/transform_feedback_instanced.ts @@ -12,6 +12,7 @@ import { getShaderSource } from "./utility"; // -- Init WebGL Context const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; + const webgl = new WebGL(rc); canvas.addEventListener("webglcontextlost", function (event) { @@ -179,7 +180,7 @@ import { getShaderSource } from "./utility"; renderRO.viewport = { x: 0, y: 0, width: canvas.width, height: canvas.height - 10 }; renderRO.vertexArray = vertexArrays[currentSourceIdx][1]; - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); requestAnimationFrame(render); } diff --git a/examples/src/WebGL2Samples/transform_feedback_interleaved.ts b/examples/src/WebGL2Samples/transform_feedback_interleaved.ts index bd1e6ca..165894e 100644 --- a/examples/src/WebGL2Samples/transform_feedback_interleaved.ts +++ b/examples/src/WebGL2Samples/transform_feedback_interleaved.ts @@ -12,6 +12,7 @@ import { getShaderSource } from "./utility"; // -- Init WebGL Context const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; + const webgl = new WebGL(rc); // -- Init Program const PROGRAM_TRANSFORM = 0; @@ -107,14 +108,14 @@ import { getShaderSource } from "./utility"; drawArrays: { vertexCount: VERTEX_COUNT }, }); - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); // -- Delete WebGL resources - WebGL.deleteTransformFeedback(rc, transformFeedback); - WebGL.deleteBuffer(rc, buffers[PROGRAM_TRANSFORM]); - WebGL.deleteBuffer(rc, buffers[PROGRAM_FEEDBACK]); - WebGL.deleteProgram(rc, programs[PROGRAM_TRANSFORM]); - WebGL.deleteProgram(rc, programs[PROGRAM_FEEDBACK]); - WebGL.deleteVertexArray(rc, vertexArrays[PROGRAM_TRANSFORM]); - WebGL.deleteVertexArray(rc, vertexArrays[PROGRAM_FEEDBACK]); + webgl.deleteTransformFeedback(transformFeedback); + webgl.deleteBuffer(buffers[PROGRAM_TRANSFORM]); + webgl.deleteBuffer(buffers[PROGRAM_FEEDBACK]); + webgl.deleteProgram(programs[PROGRAM_TRANSFORM]); + webgl.deleteProgram(programs[PROGRAM_FEEDBACK]); + webgl.deleteVertexArray(vertexArrays[PROGRAM_TRANSFORM]); + webgl.deleteVertexArray(vertexArrays[PROGRAM_FEEDBACK]); })(); diff --git a/examples/src/WebGL2Samples/transform_feedback_separated.ts b/examples/src/WebGL2Samples/transform_feedback_separated.ts index 807b981..21165ea 100644 --- a/examples/src/WebGL2Samples/transform_feedback_separated.ts +++ b/examples/src/WebGL2Samples/transform_feedback_separated.ts @@ -12,6 +12,7 @@ import { getShaderSource } from "./utility"; // -- Init WebGL Context const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; + const webgl = new WebGL(rc); // -- Init Program const programTransform = (function (vertexShaderSourceTransform, fragmentShaderSourceTransform) @@ -117,7 +118,7 @@ import { getShaderSource } from "./utility"; drawArrays: { vertexCount: VERTEX_COUNT }, }); - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); // -- Delete WebGL resources // gl.deleteTransformFeedback(transformFeedback); diff --git a/examples/src/WebGL2Samples/transform_feedback_separated_2.ts b/examples/src/WebGL2Samples/transform_feedback_separated_2.ts index a74f795..107888c 100644 --- a/examples/src/WebGL2Samples/transform_feedback_separated_2.ts +++ b/examples/src/WebGL2Samples/transform_feedback_separated_2.ts @@ -12,6 +12,7 @@ import { getShaderSource } from "./utility"; // -- Init WebGL Context const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; + const webgl = new WebGL(rc); canvas.addEventListener("webglcontextlost", function (event) { @@ -147,7 +148,7 @@ import { getShaderSource } from "./utility"; ro.uniforms.u_time = time; - WebGL.runRenderPass(rc, rp); + webgl.runRenderPass(rp); // Ping pong the buffers currentSourceIdx = (currentSourceIdx + 1) % 2; diff --git a/examples/src/regl-examples/basic.ts b/examples/src/regl-examples/basic.ts index bdc2733..e0f417f 100644 --- a/examples/src/regl-examples/basic.ts +++ b/examples/src/regl-examples/basic.ts @@ -16,6 +16,8 @@ webglcanvas.style.width = "100%"; webglcanvas.style.height = "100%"; document.body.appendChild(webglcanvas); +const webgl = new WebGL({ canvasId: "glcanvas" }); + const renderObject: IRenderObject = { vertexArray: { vertices: { @@ -60,7 +62,7 @@ function draw() webglcanvas.width = webglcanvas.clientWidth; webglcanvas.height = webglcanvas.clientHeight; - WebGL.runRenderPass({ canvasId: "glcanvas" }, { + webgl.runRenderPass({ renderObjects: [renderObject] }); diff --git a/examples/src/regl-examples/batch.ts b/examples/src/regl-examples/batch.ts index 39b2ef2..210133c 100644 --- a/examples/src/regl-examples/batch.ts +++ b/examples/src/regl-examples/batch.ts @@ -1,4 +1,4 @@ -import { IRenderObject, WebGL } from "@feng3d/webgl-renderer"; +import { WebGL, IRenderObject, IRenderPipeline, IVertexArrayObject } from "@feng3d/webgl-renderer"; const webglcanvas = document.createElement("canvas"); webglcanvas.id = "glcanvas"; @@ -9,6 +9,8 @@ webglcanvas.style.width = "100%"; webglcanvas.style.height = "100%"; document.body.appendChild(webglcanvas); +const webgl = new WebGL({ canvasId: "glcanvas" }); + let batchId = 0; let tick = 0; const offsets = [{ offset: [-1, -1] }, @@ -21,63 +23,75 @@ const offsets = [{ offset: [-1, -1] }, { offset: [1, 0] }, { offset: [1, 1] }]; -const renderObject: IRenderObject = { - vertexArray: { - vertices: { - position: { - buffer: { - target: "ARRAY_BUFFER", - data: new Float32Array([ - 0.5, 0, - 0, 0.5, - 1, 1 - ]) - }, numComponents: 2 - }, - } - }, - uniforms: { - color: () => [ - Math.sin(0.02 * ((0.1 + Math.sin(batchId)) * tick + 3.0 * batchId)), - Math.cos(0.02 * (0.02 * tick + 0.1 * batchId)), - Math.sin(0.02 * ((0.3 + Math.cos(2.0 * batchId)) * tick + 0.8 * batchId)), - 1], - angle: () => 0.01 * tick, - offset: () => offsets[batchId].offset, - }, - pipeline: { - vertex: { - code: `precision mediump float; - attribute vec2 position; - uniform float angle; - uniform vec2 offset; - void main() { - gl_Position = vec4( - cos(angle) * position.x + sin(angle) * position.y + offset.x, - -sin(angle) * position.x + cos(angle) * position.y + offset.y, 0, 1); - }` }, - fragment: { - code: `precision mediump float; - uniform vec4 color; - void main() { - gl_FragColor = color; - }` }, - depthStencil: { depth: { depthtest: true } }, +const pipeline: IRenderPipeline = { + vertex: { + code: `precision mediump float; + attribute vec2 position; + uniform float angle; + uniform vec2 offset; + void main() { + gl_Position = vec4( + cos(angle) * position.x + sin(angle) * position.y + offset.x, + -sin(angle) * position.x + cos(angle) * position.y + offset.y, 0, 1); + }` }, + fragment: { + code: `precision mediump float; + uniform vec4 color; + void main() { + gl_FragColor = color; + }` }, + depthStencil: { depth: { depthtest: true } }, +}; + +const vertexArray: IVertexArrayObject = { + vertices: { + position: { + buffer: { + target: "ARRAY_BUFFER", + data: new Float32Array([ + 0.5, 0, + 0, 0.5, + 1, 1 + ]) + }, numComponents: 2 + }, } }; +function getRenderObject(tick: number, batchId: number) +{ + const renderObject: IRenderObject = { + vertexArray, + uniforms: { + color: () => [ + Math.sin(0.02 * ((0.1 + Math.sin(batchId)) * tick + 3.0 * batchId)), + Math.cos(0.02 * (0.02 * tick + 0.1 * batchId)), + Math.sin(0.02 * ((0.3 + Math.cos(2.0 * batchId)) * tick + 0.8 * batchId)), + 1], + angle: () => 0.01 * tick, + offset: () => offsets[batchId].offset, + }, + pipeline, + }; + + return renderObject; +} + function draw() { webglcanvas.width = webglcanvas.clientWidth; webglcanvas.height = webglcanvas.clientHeight; tick++; + const renderObjects: IRenderObject[] = []; for (let i = 0; i < offsets.length; i++) { batchId = i; - WebGL.runRenderObject({ canvasId: "glcanvas" }, renderObject); + renderObjects.push(getRenderObject(tick, batchId)); } + webgl.runRenderPass({ renderObjects }); + requestAnimationFrame(draw); } draw(); diff --git a/examples/src/regl-examples/blur.ts b/examples/src/regl-examples/blur.ts index cc11875..de606f6 100644 --- a/examples/src/regl-examples/blur.ts +++ b/examples/src/regl-examples/blur.ts @@ -1,12 +1,13 @@ +import { WebGL, IRenderObject, IVertexArrayObject, IRenderPipeline } from "@feng3d/webgl-renderer"; import { fit } from "./hughsk/canvas-fit"; import { attachCamera } from "./hughsk/canvas-orbit-camera"; -import { IRenderObject, WebGL } from "@feng3d/webgl-renderer"; - const canvas = document.body.appendChild(document.createElement("canvas")); canvas.id = "glcanvas"; window.addEventListener("resize", fit(canvas), false); +const webgl = new WebGL({ canvasId: "glcanvas" }); + const camera = attachCamera(canvas); // increase and decrease the blur amount by modifying this value. @@ -28,65 +29,77 @@ const offsets = [{ offset: [-1, -1] }, { offset: [1, 0] }, { offset: [1, 1] }]; -const renderObject: IRenderObject = { - vertexArray: { - vertices: { - position: { - buffer: { - target: "ARRAY_BUFFER", - data: new Float32Array([ - 0.5, 0, - 0, 0.5, - 1, 1 - ]) - }, numComponents: 2 - }, - } - }, - uniforms: { - color: () => [ - Math.sin(0.02 * ((0.1 + Math.sin(batchId)) * tick + 3.0 * batchId)), - Math.cos(0.02 * (0.02 * tick + 0.1 * batchId)), - Math.sin(0.02 * ((0.3 + Math.cos(2.0 * batchId)) * tick + 0.8 * batchId)), - 1], - angle: () => 0.01 * tick, - offset: () => offsets[batchId].offset, - }, - pipeline: { - vertex: { - code: `precision mediump float; - attribute vec2 position; - uniform float angle; - uniform vec2 offset; - void main() { - gl_Position = vec4( - cos(angle) * position.x + sin(angle) * position.y + offset.x, - -sin(angle) * position.x + cos(angle) * position.y + offset.y, 0, 1); - }` }, - fragment: { - code: `precision mediump float; - uniform vec4 color; - void main() { - gl_FragColor = color; - }`, - targets: [{ blend: {} }], +const vertexArray: IVertexArrayObject = { + vertices: { + position: { + buffer: { + target: "ARRAY_BUFFER", + data: new Float32Array([ + 0.5, 0, + 0, 0.5, + 1, 1 + ]) + }, numComponents: 2 }, - depthStencil: { depth: { depthtest: true } }, } }; +const pipeline: IRenderPipeline = { + vertex: { + code: `precision mediump float; + attribute vec2 position; + uniform float angle; + uniform vec2 offset; + void main() { + gl_Position = vec4( + cos(angle) * position.x + sin(angle) * position.y + offset.x, + -sin(angle) * position.x + cos(angle) * position.y + offset.y, 0, 1); + }` }, + fragment: { + code: `precision mediump float; + uniform vec4 color; + void main() { + gl_FragColor = color; + }`, + targets: [{ blend: {} }], + }, + depthStencil: { depth: { depthtest: true } }, +}; + +function getRenderObject(tick: number, batchId: number) +{ + const renderObject: IRenderObject = { + vertexArray, + uniforms: { + color: () => [ + Math.sin(0.02 * ((0.1 + Math.sin(batchId)) * tick + 3.0 * batchId)), + Math.cos(0.02 * (0.02 * tick + 0.1 * batchId)), + Math.sin(0.02 * ((0.3 + Math.cos(2.0 * batchId)) * tick + 0.8 * batchId)), + 1], + angle: () => 0.01 * tick, + offset: () => offsets[batchId].offset, + }, + pipeline, + }; + + return renderObject; +} + function draw() { canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; tick++; + const renderObjects: IRenderObject[] = []; for (let i = 0; i < offsets.length; i++) { batchId = i; - WebGL.runRenderObject({ canvasId: "glcanvas" }, renderObject); + renderObjects.push(getRenderObject(tick, batchId)); } + webgl.runRenderPass({ renderObjects }); + requestAnimationFrame(draw); } draw(); diff --git a/examples/src/regl-examples/bunny.ts b/examples/src/regl-examples/bunny.ts index c316d7f..4234c5d 100644 --- a/examples/src/regl-examples/bunny.ts +++ b/examples/src/regl-examples/bunny.ts @@ -1,4 +1,4 @@ -import { IRenderObject, WebGL } from "@feng3d/webgl-renderer"; +import { WebGL, IRenderObject } from "@feng3d/webgl-renderer"; import * as bunny from "./mikolalysenko/bunny"; import * as mat4 from "./stackgl/gl-mat4"; @@ -11,6 +11,8 @@ webglcanvas.style.width = "100%"; webglcanvas.style.height = "100%"; document.body.appendChild(webglcanvas); +const webgl = new WebGL({ canvasId: "glcanvas", antialias: true }); + const positions = bunny.positions.reduce((pv: number[], cv: number[]) => { cv.forEach((v) => { pv.push(v); }); @@ -79,7 +81,7 @@ function draw() viewportHeight = webglcanvas.height = webglcanvas.clientHeight; tick++; - WebGL.runRenderObject({ canvasId: "glcanvas", antialias: true }, renderObject); + webgl.runRenderPass({ renderObjects: [renderObject] }); requestAnimationFrame(draw); } diff --git a/examples/src/regl-examples/camera.ts b/examples/src/regl-examples/camera.ts index 6134199..26f320f 100644 --- a/examples/src/regl-examples/camera.ts +++ b/examples/src/regl-examples/camera.ts @@ -1,4 +1,4 @@ -import { IRenderObject, WebGL } from "@feng3d/webgl-renderer"; +import { WebGL, IRenderObject } from "@feng3d/webgl-renderer"; import { angleNormals } from "./mikolalysenko/angle-normals"; import * as bunny from "./mikolalysenko/bunny"; import { createCamera } from "./util/camera"; @@ -12,6 +12,8 @@ webglcanvas.style.width = "100%"; webglcanvas.style.height = "100%"; document.body.appendChild(webglcanvas); +const webgl = new WebGL({ canvasId: "glcanvas", antialias: true }); + const camera = createCamera({ center: [0, 2.5, 0] }); @@ -75,7 +77,7 @@ function draw() camera(renderObject, webglcanvas.width, webglcanvas.height); - WebGL.runRenderObject({ canvasId: "glcanvas", antialias: true }, renderObject); + webgl.runRenderPass({ renderObjects: [renderObject] }); requestAnimationFrame(draw); } diff --git a/examples/src/regl-examples/cloth.ts b/examples/src/regl-examples/cloth.ts index 5fc60fe..3bdd3ea 100644 --- a/examples/src/regl-examples/cloth.ts +++ b/examples/src/regl-examples/cloth.ts @@ -1,9 +1,9 @@ +import { IRenderObject, ISamplerTexture, WebGL } from "@feng3d/webgl-renderer"; import { fit } from "./hughsk/canvas-fit"; import { attachCamera } from "./hughsk/canvas-orbit-camera"; import * as mat4 from "./stackgl/gl-mat4"; import * as vec3 from "./stackgl/gl-vec3"; -import { IRenderObject, ISamplerTexture, WebGL } from "@feng3d/webgl-renderer"; (async () => { const canvas = document.createElement("canvas"); @@ -15,6 +15,8 @@ import { IRenderObject, ISamplerTexture, WebGL } from "@feng3d/webgl-renderer"; canvas.style.height = "100%"; document.body.appendChild(canvas); + const webgl = new WebGL({ canvasId: "glcanvas" }); + const camera = attachCamera(canvas); window.addEventListener("resize", fit(canvas), false); @@ -368,7 +370,8 @@ import { IRenderObject, ISamplerTexture, WebGL } from "@feng3d/webgl-renderer"; camera.tick(); - WebGL.runRenderObject({ canvasId: "glcanvas" }, renderObject); + webgl.runRenderPass({ renderObjects: [renderObject] }); + requestAnimationFrame(draw); } diff --git a/examples/src/regl-examples/cube.ts b/examples/src/regl-examples/cube.ts index 87cfb69..00164af 100644 --- a/examples/src/regl-examples/cube.ts +++ b/examples/src/regl-examples/cube.ts @@ -1,4 +1,4 @@ -import { IRenderObject, ITexture, WebGL } from "@feng3d/webgl-renderer"; +import { WebGL, IRenderObject } from "@feng3d/webgl-renderer"; import { ISamplerTexture } from "../../../src/data/ISamplerTexture"; import * as mat4 from "./stackgl/gl-mat4"; @@ -13,6 +13,8 @@ import * as mat4 from "./stackgl/gl-mat4"; webglcanvas.style.height = "100%"; document.body.appendChild(webglcanvas); + const webgl = new WebGL({ canvasId: "glcanvas" }); + const cubePosition = [ [-0.5, +0.5, +0.5], [+0.5, +0.5, +0.5], [+0.5, -0.5, +0.5], [-0.5, -0.5, +0.5], // positive z face. [+0.5, +0.5, +0.5], [+0.5, +0.5, -0.5], [+0.5, -0.5, -0.5], [+0.5, -0.5, +0.5], // positive x face @@ -122,7 +124,7 @@ import * as mat4 from "./stackgl/gl-mat4"; viewportWidth = webglcanvas.width = webglcanvas.clientWidth; viewportHeight = webglcanvas.height = webglcanvas.clientHeight; - WebGL.runRenderObject({ canvasId: "glcanvas" }, renderObject); + webgl.runRenderPass({ renderObjects: [renderObject] }); requestAnimationFrame(draw); } diff --git a/examples/src/webgl-examples/sample1.ts b/examples/src/webgl-examples/sample1.ts index 259181f..d54c6d5 100644 --- a/examples/src/webgl-examples/sample1.ts +++ b/examples/src/webgl-examples/sample1.ts @@ -5,7 +5,8 @@ import { WebGL } from "@feng3d/webgl-renderer"; function main() { - WebGL.runRenderPass({ canvasId: "glcanvas", contextId: "webgl" }, { + const webgl = new WebGL({ canvasId: "glcanvas", contextId: "webgl" }); + webgl.runRenderPass({ passDescriptor: { colorAttachments: [{ clearValue: [1, 0, 0, 0.5], diff --git a/examples/src/webgl-examples/sample2.ts b/examples/src/webgl-examples/sample2.ts index 406183f..6404715 100644 --- a/examples/src/webgl-examples/sample2.ts +++ b/examples/src/webgl-examples/sample2.ts @@ -1,6 +1,6 @@ import { mat4 } from "gl-matrix"; -import { WebGL } from "@feng3d/webgl-renderer"; import { IRenderPass } from "../../../src/data/IRenderPass"; +import { WebGL } from "@feng3d/webgl-renderer"; main(); @@ -10,6 +10,8 @@ function main() const { projectionMatrix, modelViewMatrix } = drawScene(canvas); + const webgl = new WebGL({ canvasId: "glcanvas", contextId: "webgl" }); + const renderPasss: IRenderPass = { passDescriptor: { colorAttachments: [{ @@ -65,7 +67,7 @@ function main() }], }; - WebGL.runRenderPass({ canvasId: "glcanvas", contextId: "webgl" }, renderPasss); + webgl.runRenderPass(renderPasss); } function drawScene(canvas: HTMLCanvasElement) diff --git a/examples/src/webgl-examples/sample3.ts b/examples/src/webgl-examples/sample3.ts index bd8e389..cfded64 100644 --- a/examples/src/webgl-examples/sample3.ts +++ b/examples/src/webgl-examples/sample3.ts @@ -1,5 +1,5 @@ -import { mat4 } from "gl-matrix"; import { IRenderPass, WebGL } from "@feng3d/webgl-renderer"; +import { mat4 } from "gl-matrix"; main(); @@ -13,6 +13,8 @@ function main() // Draw the scene const { projectionMatrix, modelViewMatrix } = drawScene(canvas); + const webgl = new WebGL({ canvasId: "glcanvas", contextId: "webgl" }); + const renderPasss: IRenderPass = { passDescriptor: { colorAttachments: [{ @@ -92,7 +94,7 @@ function main() }], }; - WebGL.runRenderPass({ canvasId: "glcanvas", contextId: "webgl" }, renderPasss); + webgl.runRenderPass(renderPasss); } // diff --git a/examples/src/webgl-examples/sample4.ts b/examples/src/webgl-examples/sample4.ts index f90cb58..49017c5 100644 --- a/examples/src/webgl-examples/sample4.ts +++ b/examples/src/webgl-examples/sample4.ts @@ -1,5 +1,5 @@ +import { WebGL, IRenderObject, IRenderPass } from "@feng3d/webgl-renderer"; import { mat4 } from "gl-matrix"; -import { IRenderObject, IRenderPass, WebGL } from "@feng3d/webgl-renderer"; let squareRotation = 0.0; @@ -12,6 +12,8 @@ function main() { const canvas = document.querySelector("#glcanvas") as HTMLCanvasElement; + const webgl = new WebGL({ canvasId: "glcanvas", contextId: "webgl" }); + const renderObject: IRenderObject = { pipeline: { primitive: { topology: "TRIANGLE_STRIP" }, @@ -104,7 +106,7 @@ function main() renderObject.uniforms.uProjectionMatrix = projectionMatrix; renderObject.uniforms.uModelViewMatrix = modelViewMatrix; - WebGL.runRenderPass({ canvasId: "glcanvas", contextId: "webgl" }, renderPasss); + webgl.runRenderPass(renderPasss); requestAnimationFrame(render); } diff --git a/examples/src/webgl-examples/sample5.ts b/examples/src/webgl-examples/sample5.ts index df0ff7c..c3b888b 100644 --- a/examples/src/webgl-examples/sample5.ts +++ b/examples/src/webgl-examples/sample5.ts @@ -1,5 +1,5 @@ -import { mat4 } from "gl-matrix"; import { IRenderObject, IRenderPass, WebGL } from "@feng3d/webgl-renderer"; +import { mat4 } from "gl-matrix"; let cubeRotation = 0.0; @@ -12,6 +12,8 @@ function main() { const canvas = document.querySelector("#glcanvas") as HTMLCanvasElement; + const webgl = new WebGL({ canvasId: "glcanvas", contextId: "webgl" }); + // Here's where we call the routine that builds all the // objects we'll be drawing. const buffers = initBuffers(); @@ -100,7 +102,7 @@ function main() renderObject.uniforms.uProjectionMatrix = projectionMatrix; renderObject.uniforms.uModelViewMatrix = modelViewMatrix; - WebGL.runRenderPass({ canvasId: "glcanvas", contextId: "webgl" }, renderPasss); + webgl.runRenderPass(renderPasss); requestAnimationFrame(render); } diff --git a/examples/src/webgl-examples/sample6.ts b/examples/src/webgl-examples/sample6.ts index 39c0891..c9c76ea 100644 --- a/examples/src/webgl-examples/sample6.ts +++ b/examples/src/webgl-examples/sample6.ts @@ -1,5 +1,5 @@ +import { IRenderObject, IRenderPass, ISampler, ITexture, WebGL } from "@feng3d/webgl-renderer"; import { mat4 } from "gl-matrix"; -import { IRenderObject, ITexture, IRenderPass, WebGL, ISampler } from "@feng3d/webgl-renderer"; let cubeRotation = 0.0; @@ -12,6 +12,8 @@ async function main() { const canvas = document.querySelector("#glcanvas") as HTMLCanvasElement; + const webgl = new WebGL({ canvasId: "glcanvas", contextId: "webgl" }); + // Here's where we call the routine that builds all the // objects we'll be drawing. const buffers = initBuffers(); @@ -104,7 +106,7 @@ async function main() renderObject.uniforms.uProjectionMatrix = projectionMatrix; renderObject.uniforms.uModelViewMatrix = modelViewMatrix; - WebGL.runRenderPass({ canvasId: "glcanvas", contextId: "webgl" }, renderPasss); + webgl.runRenderPass(renderPasss); requestAnimationFrame(render); } diff --git a/examples/src/webgl-examples/sample7.ts b/examples/src/webgl-examples/sample7.ts index 00385f0..c0d8802 100644 --- a/examples/src/webgl-examples/sample7.ts +++ b/examples/src/webgl-examples/sample7.ts @@ -1,6 +1,6 @@ import { mat4 } from "gl-matrix"; -import { IRenderObject, IRenderPass, ISampler, ITexture, WebGL } from "@feng3d/webgl-renderer"; import { ISamplerTexture } from "../../../src/data/ISamplerTexture"; +import { WebGL, IRenderObject, IRenderPass, ITexture, ISampler } from "@feng3d/webgl-renderer"; let cubeRotation = 0.0; @@ -13,6 +13,8 @@ async function main() { const canvas = document.querySelector("#glcanvas") as HTMLCanvasElement; + const webgl = new WebGL({ canvasId: "glcanvas", contextId: "webgl" }); + // Here's where we call the routine that builds all the // objects we'll be drawing. const buffers = initBuffers(); @@ -133,7 +135,7 @@ async function main() renderObject.uniforms.uModelViewMatrix = modelViewMatrix; renderObject.uniforms.uNormalMatrix = normalMatrix; - WebGL.runRenderPass({ canvasId: "glcanvas", contextId: "webgl" }, renderPasss); + webgl.runRenderPass(renderPasss); requestAnimationFrame(render); } diff --git a/examples/src/webgl-examples/sample8.ts b/examples/src/webgl-examples/sample8.ts index 3c97de8..9b15236 100644 --- a/examples/src/webgl-examples/sample8.ts +++ b/examples/src/webgl-examples/sample8.ts @@ -1,5 +1,5 @@ -import { mat4 } from "gl-matrix"; import { IRenderObject, IRenderPass, ISampler, ITexture, WebGL } from "@feng3d/webgl-renderer"; +import { mat4 } from "gl-matrix"; import { ISamplerTexture } from "../../../src/data/ISamplerTexture"; let cubeRotation = 0.0; @@ -15,6 +15,8 @@ function main() { const canvas = document.querySelector("#glcanvas") as HTMLCanvasElement; + const webgl = new WebGL({ canvasId: "glcanvas", contextId: "webgl" }); + // Here's where we call the routine that builds all the // objects we'll be drawing. const buffers = initBuffers(); @@ -142,7 +144,7 @@ function main() renderObject.uniforms.uModelViewMatrix = modelViewMatrix; renderObject.uniforms.uNormalMatrix = normalMatrix; - WebGL.runRenderPass({ canvasId: "glcanvas", contextId: "webgl" }, renderPasss); + webgl.runRenderPass(renderPasss); requestAnimationFrame(render); } diff --git a/src/WebGL.ts b/src/WebGL.ts index a3e020e..10fdc02 100644 --- a/src/WebGL.ts +++ b/src/WebGL.ts @@ -36,6 +36,15 @@ import { deleteVertexArray } from "./runs/runVertexArray"; */ export class WebGL { + private _renderingContext: IRenderingContext; + private _gl: WebGLRenderingContext; + + constructor(renderingContext: IRenderingContext) + { + this._renderingContext = renderingContext; + this._gl = getRenderingContext(this._renderingContext); + } + /** * 提交一次渲染通道数据。 * @@ -43,12 +52,9 @@ export class WebGL * @param renderPass 渲染通道数据。 * @returns */ - static runRenderPass(renderingContext: IRenderingContext, renderPass: IRenderPass) + runRenderPass(renderPass: IRenderPass) { - const gl = getRenderingContext(renderingContext); - if (!gl || gl.isContextLost()) return; - - runRenderPass(gl, renderPass); + runRenderPass(this._gl, renderPass); } /** @@ -56,107 +62,68 @@ export class WebGL * * @param renderObject 渲染原子,包含渲染所需的所有数据。 */ - static runRenderObject(renderingContext: IRenderingContext, renderObject: IRenderObject) + runRenderObject(renderObject: IRenderObject) { - const gl = getRenderingContext(renderingContext); - if (!gl || gl.isContextLost()) return; - - runRenderObject(gl, renderObject); + runRenderObject(this._gl, renderObject); } - static runBlitFramebuffer(renderingContext: IRenderingContext, blitFramebuffer: IBlitFramebuffer) + runBlitFramebuffer(blitFramebuffer: IBlitFramebuffer) { - const gl = getRenderingContext(renderingContext); - if (!gl || gl.isContextLost()) return; - - runBlitFramebuffer(gl, blitFramebuffer); + runBlitFramebuffer(this._gl, blitFramebuffer); } - static runCopyBuffer(renderingContext: IRenderingContext, copyBuffer: ICopyBuffer) + runCopyBuffer(copyBuffer: ICopyBuffer) { - const gl = getRenderingContext(renderingContext); - if (!gl || gl.isContextLost()) return; - - runCopyBuffer(gl, copyBuffer); + runCopyBuffer(this._gl, copyBuffer); } - static runReadPixels(renderingContext: IRenderingContext, readPixels: IReadPixels) + runReadPixels(readPixels: IReadPixels) { - const gl = getRenderingContext(renderingContext); - if (!gl || gl.isContextLost()) return; - - runReadPixels(gl, readPixels); + runReadPixels(this._gl, readPixels); } - static deleteFramebuffer(renderingContext: IRenderingContext, passDescriptor: IPassDescriptor) + deleteFramebuffer(passDescriptor: IPassDescriptor) { - const gl = getRenderingContext(renderingContext); - if (!gl || gl.isContextLost()) return; - - deleteFramebuffer(gl, passDescriptor); + deleteFramebuffer(this._gl, passDescriptor); } - static deleteRenderbuffer(renderingContext: IRenderingContext, renderbuffer: IRenderbuffer) + deleteRenderbuffer(renderbuffer: IRenderbuffer) { - const gl = getRenderingContext(renderingContext); - if (!gl || gl.isContextLost()) return; - - deleteRenderbuffer(gl, renderbuffer); + deleteRenderbuffer(this._gl, renderbuffer); } - static deleteBuffer(renderingContext: IRenderingContext, buffer: IBuffer) + deleteBuffer(buffer: IBuffer) { - const gl = getRenderingContext(renderingContext); - if (!gl || gl.isContextLost()) return; - - deleteBuffer(gl, buffer); + deleteBuffer(this._gl, buffer); } - static deleteTexture(renderingContext: IRenderingContext, texture: ITexture) + deleteTexture(texture: ITexture) { - const gl = getRenderingContext(renderingContext); - if (!gl || gl.isContextLost()) return; - - deleteTexture(gl, texture); + deleteTexture(this._gl, texture); } - static deleteSampler(renderingContext: IRenderingContext, sampler: ISampler) + deleteSampler(sampler: ISampler) { - const gl = getRenderingContext(renderingContext); - if (!gl || gl.isContextLost()) return; - - deleteSampler(gl, sampler); + deleteSampler(this._gl, sampler); } - static deleteProgram(renderingContext: IRenderingContext, pipeline: IRenderPipeline) + deleteProgram(pipeline: IRenderPipeline) { - const gl = getRenderingContext(renderingContext); - if (!gl || gl.isContextLost()) return; - - deleteProgram(gl, pipeline); + deleteProgram(this._gl, pipeline); } - static deleteVertexArray(renderingContext: IRenderingContext, vertexArray: IVertexArrayObject) + deleteVertexArray(vertexArray: IVertexArrayObject) { - const gl = getRenderingContext(renderingContext); - if (!gl || gl.isContextLost()) return; - - deleteVertexArray(gl, vertexArray); + deleteVertexArray(this._gl, vertexArray); } - static deleteTransformFeedback(renderingContext: IRenderingContext, transformFeedback: ITransformFeedback) + deleteTransformFeedback(transformFeedback: ITransformFeedback) { - const gl = getRenderingContext(renderingContext); - if (!gl || gl.isContextLost()) return; - - deleteTransformFeedback(gl, transformFeedback); + deleteTransformFeedback(this._gl, transformFeedback); } - static getQueryResult(renderingContext: IRenderingContext, query: IQuery) + getQueryResult(query: IQuery) { - const gl = getRenderingContext(renderingContext); - if (!gl || gl.isContextLost()) return; - - return getQueryResult(gl, query); + return getQueryResult(this._gl, query); } } -- Gitee From 0bb20d0f4ca92a7503e18e2aff572508ef449216 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Mon, 19 Aug 2024 15:52:06 +0800 Subject: [PATCH 03/47] IRenderPass.descriptor --- src/data/IRenderPass.ts | 2 +- src/runs/runRenderPass.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/data/IRenderPass.ts b/src/data/IRenderPass.ts index e8a8e96..a63a0ed 100644 --- a/src/data/IRenderPass.ts +++ b/src/data/IRenderPass.ts @@ -12,7 +12,7 @@ export class IRenderPass /** * WebGL渲染通道描述 */ - passDescriptor?: IPassDescriptor; + descriptor?: IPassDescriptor; /** * 渲染对象列表,默认为 []。 diff --git a/src/runs/runRenderPass.ts b/src/runs/runRenderPass.ts index 06938e0..4839d3d 100644 --- a/src/runs/runRenderPass.ts +++ b/src/runs/runRenderPass.ts @@ -5,7 +5,7 @@ import { runRenderObject } from "./runRenderObject"; export function runRenderPass(gl: WebGLRenderingContext, renderPass: IRenderPass) { - runPassDescriptor(gl, renderPass.passDescriptor); + runPassDescriptor(gl, renderPass.descriptor); renderPass.renderObjects?.forEach((renderObject) => { -- Gitee From f179aac143146172c9a0ebca0ab0517f6ac1da68 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Wed, 23 Oct 2024 17:01:44 +0800 Subject: [PATCH 04/47] IRenderPass.descriptor --- examples/src/WebGL2Samples/buffer_copy.ts | 2 +- examples/src/WebGL2Samples/buffer_uniform.ts | 2 +- examples/src/WebGL2Samples/draw_image_space.ts | 2 +- examples/src/WebGL2Samples/draw_instanced.ts | 2 +- examples/src/WebGL2Samples/draw_instanced_ubo.ts | 2 +- examples/src/WebGL2Samples/draw_primitive_restart.ts | 2 +- examples/src/WebGL2Samples/draw_range_arrays.ts | 2 +- examples/src/WebGL2Samples/fbo_blit.ts | 12 ++++++------ examples/src/WebGL2Samples/fbo_multisample.ts | 4 ++-- examples/src/WebGL2Samples/fbo_new_blend_equation.ts | 2 +- examples/src/WebGL2Samples/fbo_read_pixels.ts | 4 ++-- examples/src/WebGL2Samples/fbo_rtt_depth_texture.ts | 4 ++-- examples/src/WebGL2Samples/fbo_rtt_draw_buffers.ts | 4 ++-- examples/src/WebGL2Samples/fbo_rtt_texture_array.ts | 4 ++-- examples/src/WebGL2Samples/geo_vertex_format.ts | 2 +- examples/src/WebGL2Samples/glsl_centroid.ts | 2 +- .../WebGL2Samples/glsl_flat_smooth_interpolators.ts | 2 +- examples/src/WebGL2Samples/glsl_non_square_matrix.ts | 2 +- examples/src/WebGL2Samples/query_occlusion.ts | 2 +- examples/src/WebGL2Samples/sampler_filter.ts | 2 +- examples/src/WebGL2Samples/sampler_object.ts | 2 +- examples/src/WebGL2Samples/sampler_wrap.ts | 2 +- examples/src/WebGL2Samples/texture_2d_array.ts | 2 +- examples/src/WebGL2Samples/texture_3d.ts | 2 +- examples/src/WebGL2Samples/texture_derivative.ts | 2 +- examples/src/WebGL2Samples/texture_fetch.ts | 2 +- examples/src/WebGL2Samples/texture_format.ts | 2 +- examples/src/WebGL2Samples/texture_grad.ts | 2 +- examples/src/WebGL2Samples/texture_immutable.ts | 2 +- examples/src/WebGL2Samples/texture_integer.ts | 2 +- examples/src/WebGL2Samples/texture_lod.ts | 2 +- examples/src/WebGL2Samples/texture_offset.ts | 2 +- examples/src/WebGL2Samples/texture_pixel_store.ts | 2 +- examples/src/WebGL2Samples/texture_srgb.ts | 2 +- examples/src/WebGL2Samples/texture_vertex.ts | 2 +- .../WebGL2Samples/transform_feedback_instanced.ts | 2 +- .../WebGL2Samples/transform_feedback_interleaved.ts | 2 +- .../WebGL2Samples/transform_feedback_separated.ts | 2 +- .../WebGL2Samples/transform_feedback_separated_2.ts | 2 +- examples/src/webgl-examples/sample1.ts | 2 +- examples/src/webgl-examples/sample2.ts | 2 +- examples/src/webgl-examples/sample3.ts | 2 +- examples/src/webgl-examples/sample4.ts | 2 +- examples/src/webgl-examples/sample5.ts | 2 +- examples/src/webgl-examples/sample6.ts | 2 +- examples/src/webgl-examples/sample7.ts | 2 +- examples/src/webgl-examples/sample8.ts | 2 +- package.json | 1 + src/data/IRenderPass.ts | 2 +- 49 files changed, 59 insertions(+), 58 deletions(-) diff --git a/examples/src/WebGL2Samples/buffer_copy.ts b/examples/src/WebGL2Samples/buffer_copy.ts index 4599b36..fecec1e 100644 --- a/examples/src/WebGL2Samples/buffer_copy.ts +++ b/examples/src/WebGL2Samples/buffer_copy.ts @@ -49,7 +49,7 @@ import { getShaderSource } from "./utility"; // -- Render const rp: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [{ pipeline: program, vertexArray, diff --git a/examples/src/WebGL2Samples/buffer_uniform.ts b/examples/src/WebGL2Samples/buffer_uniform.ts index 2d5f8ca..867f6da 100644 --- a/examples/src/WebGL2Samples/buffer_uniform.ts +++ b/examples/src/WebGL2Samples/buffer_uniform.ts @@ -90,7 +90,7 @@ import { getShaderSource } from "./utility"; }; const rp: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [ro], }; diff --git a/examples/src/WebGL2Samples/draw_image_space.ts b/examples/src/WebGL2Samples/draw_image_space.ts index dd5b652..b4d4daf 100644 --- a/examples/src/WebGL2Samples/draw_image_space.ts +++ b/examples/src/WebGL2Samples/draw_image_space.ts @@ -51,7 +51,7 @@ loadImage("../../assets/img/Di-3d.png", (img) => canvas.height = canvas.width; webgl.runRenderPass({ - passDescriptor: { + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear", diff --git a/examples/src/WebGL2Samples/draw_instanced.ts b/examples/src/WebGL2Samples/draw_instanced.ts index 97d8ad1..8820f11 100644 --- a/examples/src/WebGL2Samples/draw_instanced.ts +++ b/examples/src/WebGL2Samples/draw_instanced.ts @@ -48,7 +48,7 @@ canvas.width = window.innerWidth; canvas.height = window.innerHeight; webgl.runRenderPass({ - passDescriptor: { + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear", diff --git a/examples/src/WebGL2Samples/draw_instanced_ubo.ts b/examples/src/WebGL2Samples/draw_instanced_ubo.ts index 216b0fc..724daf8 100644 --- a/examples/src/WebGL2Samples/draw_instanced_ubo.ts +++ b/examples/src/WebGL2Samples/draw_instanced_ubo.ts @@ -42,7 +42,7 @@ const uniformMaterialBuffer: IUniformBuffer = { target: "UNIFORM_BUFFER", data: // -- Render const rp: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0, 0, 0, 1], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0, 0, 0, 1], loadOp: "clear" }] }, renderObjects: [{ pipeline: program, vertexArray: { diff --git a/examples/src/WebGL2Samples/draw_primitive_restart.ts b/examples/src/WebGL2Samples/draw_primitive_restart.ts index 9288c50..d93b0de 100644 --- a/examples/src/WebGL2Samples/draw_primitive_restart.ts +++ b/examples/src/WebGL2Samples/draw_primitive_restart.ts @@ -58,7 +58,7 @@ const renderObject: IRenderObject = { }; webgl.runRenderPass({ - passDescriptor: { + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear", diff --git a/examples/src/WebGL2Samples/draw_range_arrays.ts b/examples/src/WebGL2Samples/draw_range_arrays.ts index e2e8acc..c614647 100644 --- a/examples/src/WebGL2Samples/draw_range_arrays.ts +++ b/examples/src/WebGL2Samples/draw_range_arrays.ts @@ -53,7 +53,7 @@ const renderObject: IRenderObject = { }; const data: IRenderPass = { - passDescriptor: { + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear", diff --git a/examples/src/WebGL2Samples/fbo_blit.ts b/examples/src/WebGL2Samples/fbo_blit.ts index ca72f86..3781322 100644 --- a/examples/src/WebGL2Samples/fbo_blit.ts +++ b/examples/src/WebGL2Samples/fbo_blit.ts @@ -111,7 +111,7 @@ loadImage("../../assets/img/Di-3d.png", (image) => // Render FBO const fboRenderPass: IRenderPass = { - passDescriptor: { + descriptor: { colorAttachments: [{ view: colorRenderbuffer, clearValue: [0.3, 0.3, 0.3, 1.0] @@ -129,7 +129,7 @@ loadImage("../../assets/img/Di-3d.png", (image) => // const renderPassResolve: IRenderPass = { - passDescriptor: framebufferResolve, + descriptor: framebufferResolve, }; const blitFramebuffers: IBlitFramebufferItem[] = []; @@ -156,8 +156,8 @@ loadImage("../../assets/img/Di-3d.png", (image) => } const blitFramebuffer: IBlitFramebuffer = { - read: fboRenderPass.passDescriptor, - draw: renderPassResolve.passDescriptor, + read: fboRenderPass.descriptor, + draw: renderPassResolve.descriptor, blitFramebuffers, }; @@ -178,7 +178,7 @@ loadImage("../../assets/img/Di-3d.png", (image) => }; const renderPass2: IRenderPass = { - passDescriptor: { + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear", @@ -193,7 +193,7 @@ loadImage("../../assets/img/Di-3d.png", (image) => webgl.runRenderPass(renderPass2); // Delete WebGL resources - webgl.deleteFramebuffer(fboRenderPass.passDescriptor); + webgl.deleteFramebuffer(fboRenderPass.descriptor); webgl.deleteFramebuffer(framebufferResolve); webgl.deleteRenderbuffer(colorRenderbuffer); webgl.deleteBuffer(vertexPosBuffer); diff --git a/examples/src/WebGL2Samples/fbo_multisample.ts b/examples/src/WebGL2Samples/fbo_multisample.ts index d0597dc..b106907 100644 --- a/examples/src/WebGL2Samples/fbo_multisample.ts +++ b/examples/src/WebGL2Samples/fbo_multisample.ts @@ -113,7 +113,7 @@ const IDENTITY = mat4.create(); // Pass 1 const renderPass1: IRenderPass = { - passDescriptor: framebuffers[FRAMEBUFFER.RENDERBUFFER], + descriptor: framebuffers[FRAMEBUFFER.RENDERBUFFER], renderObjects: [{ pipeline: programs[PROGRAM.TEXTURE], vertexArray: vertexArrays[PROGRAM.TEXTURE], @@ -142,7 +142,7 @@ const mvp = mat4.create(); mat4.scale(mvp, IDENTITY, scaleVector3); const renderPass2: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [ { pipeline: programs[PROGRAM.SPLASH], diff --git a/examples/src/WebGL2Samples/fbo_new_blend_equation.ts b/examples/src/WebGL2Samples/fbo_new_blend_equation.ts index 175aded..85ed2ad 100644 --- a/examples/src/WebGL2Samples/fbo_new_blend_equation.ts +++ b/examples/src/WebGL2Samples/fbo_new_blend_equation.ts @@ -129,7 +129,7 @@ function render() }; const renderPass: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.5, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.5, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [], }; diff --git a/examples/src/WebGL2Samples/fbo_read_pixels.ts b/examples/src/WebGL2Samples/fbo_read_pixels.ts index ebb2727..a322c5c 100644 --- a/examples/src/WebGL2Samples/fbo_read_pixels.ts +++ b/examples/src/WebGL2Samples/fbo_read_pixels.ts @@ -132,7 +132,7 @@ const matrix = new Float32Array([ 0.0, 0.0, 0.0, 1.0 ]); const rp1: IRenderPass = { - passDescriptor: frameBuffer, + descriptor: frameBuffer, renderObjects: [{ pipeline: multipleOutputProgram, uniforms: { mvp: matrix }, @@ -145,7 +145,7 @@ webgl.runRenderPass(rp1); // Pass 2 const rp: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [] }; diff --git a/examples/src/WebGL2Samples/fbo_rtt_depth_texture.ts b/examples/src/WebGL2Samples/fbo_rtt_depth_texture.ts index 9f7306b..8fdf329 100644 --- a/examples/src/WebGL2Samples/fbo_rtt_depth_texture.ts +++ b/examples/src/WebGL2Samples/fbo_rtt_depth_texture.ts @@ -97,7 +97,7 @@ const frameBuffer: IFramebuffer = { // Pass 1: Depth const renderPass: IRenderPass = { - passDescriptor: frameBuffer, + descriptor: frameBuffer, renderObjects: [{ pipeline: depthProgram, vertexArray: triVertexArray, @@ -109,7 +109,7 @@ webgl.runRenderPass(renderPass); // Pass 2: Draw const rp2: IRenderPass = { - passDescriptor: { + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }], }, renderObjects: [{ diff --git a/examples/src/WebGL2Samples/fbo_rtt_draw_buffers.ts b/examples/src/WebGL2Samples/fbo_rtt_draw_buffers.ts index 242c124..b94f5e0 100644 --- a/examples/src/WebGL2Samples/fbo_rtt_draw_buffers.ts +++ b/examples/src/WebGL2Samples/fbo_rtt_draw_buffers.ts @@ -105,7 +105,7 @@ const frameBuffer: IFramebuffer = { // -- Render const renderPass: IRenderPass = { - passDescriptor: frameBuffer, + descriptor: frameBuffer, renderObjects: [{ pipeline: drawBufferProgram, vertexArray: triVertexArray, @@ -116,7 +116,7 @@ webgl.runRenderPass(renderPass); // Pass 2: Draw to screen const renderPass2: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [{ pipeline: drawProgram, uniforms: { diff --git a/examples/src/WebGL2Samples/fbo_rtt_texture_array.ts b/examples/src/WebGL2Samples/fbo_rtt_texture_array.ts index 0febe87..9286c75 100644 --- a/examples/src/WebGL2Samples/fbo_rtt_texture_array.ts +++ b/examples/src/WebGL2Samples/fbo_rtt_texture_array.ts @@ -134,7 +134,7 @@ const matrix = new Float32Array([ ]); const renderPass1: IRenderPass = { - passDescriptor: frameBuffer, + descriptor: frameBuffer, renderObjects: [{ pipeline: multipleOutputProgram, uniforms: { mvp: matrix }, @@ -147,7 +147,7 @@ const renderPass1: IRenderPass = { // Pass 2 const renderPass: IRenderPass = { - passDescriptor: { + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }], }, renderObjects: [], diff --git a/examples/src/WebGL2Samples/geo_vertex_format.ts b/examples/src/WebGL2Samples/geo_vertex_format.ts index b215dd6..c0260e3 100644 --- a/examples/src/WebGL2Samples/geo_vertex_format.ts +++ b/examples/src/WebGL2Samples/geo_vertex_format.ts @@ -222,7 +222,7 @@ import { getShaderSource, loadImage } from "./utility"; }; const rp: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [ro], }; diff --git a/examples/src/WebGL2Samples/glsl_centroid.ts b/examples/src/WebGL2Samples/glsl_centroid.ts index 5b7c6d4..d98c6f7 100644 --- a/examples/src/WebGL2Samples/glsl_centroid.ts +++ b/examples/src/WebGL2Samples/glsl_centroid.ts @@ -173,7 +173,7 @@ for (let i = 0; i < VIEWPORTS.MAX; ++i) { // render buffers const rp: IRenderPass = { - passDescriptor: framebuffers[i], + descriptor: framebuffers[i], renderObjects: [{ pipeline: programs[i], vertexArray: vertexArrays[i], diff --git a/examples/src/WebGL2Samples/glsl_flat_smooth_interpolators.ts b/examples/src/WebGL2Samples/glsl_flat_smooth_interpolators.ts index f8db9a9..fe44e78 100644 --- a/examples/src/WebGL2Samples/glsl_flat_smooth_interpolators.ts +++ b/examples/src/WebGL2Samples/glsl_flat_smooth_interpolators.ts @@ -142,7 +142,7 @@ glTFLoader.loadGLTF(gltfUrl, function (glTF) (function render() { const rp: IRenderPass = { - passDescriptor: { + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }], depthStencilAttachment: { depthLoadOp: "clear" } }, diff --git a/examples/src/WebGL2Samples/glsl_non_square_matrix.ts b/examples/src/WebGL2Samples/glsl_non_square_matrix.ts index 5e4ce4c..82927a6 100644 --- a/examples/src/WebGL2Samples/glsl_non_square_matrix.ts +++ b/examples/src/WebGL2Samples/glsl_non_square_matrix.ts @@ -69,7 +69,7 @@ loadImage("../../assets/img/Di-3d.png", function (image) ]); const rp: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [{ pipeline: program, uniforms: { MVP: matrix, diffuse: { texture, sampler } }, diff --git a/examples/src/WebGL2Samples/query_occlusion.ts b/examples/src/WebGL2Samples/query_occlusion.ts index 37d39ca..285e093 100644 --- a/examples/src/WebGL2Samples/query_occlusion.ts +++ b/examples/src/WebGL2Samples/query_occlusion.ts @@ -42,7 +42,7 @@ const query: IQuery = {}; // -- Render const rp: IRenderPass = { - passDescriptor: { + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }], depthStencilAttachment: { depthLoadOp: "clear" }, }, diff --git a/examples/src/WebGL2Samples/sampler_filter.ts b/examples/src/WebGL2Samples/sampler_filter.ts index 3dfa0bc..8fd9bbb 100644 --- a/examples/src/WebGL2Samples/sampler_filter.ts +++ b/examples/src/WebGL2Samples/sampler_filter.ts @@ -141,7 +141,7 @@ function render() ]); const rp: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [] }; diff --git a/examples/src/WebGL2Samples/sampler_object.ts b/examples/src/WebGL2Samples/sampler_object.ts index def4016..822af41 100644 --- a/examples/src/WebGL2Samples/sampler_object.ts +++ b/examples/src/WebGL2Samples/sampler_object.ts @@ -90,7 +90,7 @@ function render() ]); const rp: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [{ pipeline: program, vertexArray, diff --git a/examples/src/WebGL2Samples/sampler_wrap.ts b/examples/src/WebGL2Samples/sampler_wrap.ts index a473024..20293e4 100644 --- a/examples/src/WebGL2Samples/sampler_wrap.ts +++ b/examples/src/WebGL2Samples/sampler_wrap.ts @@ -132,7 +132,7 @@ function render() { // Clear color buffer const rp: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [], }; diff --git a/examples/src/WebGL2Samples/texture_2d_array.ts b/examples/src/WebGL2Samples/texture_2d_array.ts index d25e1cd..54c0fd0 100644 --- a/examples/src/WebGL2Samples/texture_2d_array.ts +++ b/examples/src/WebGL2Samples/texture_2d_array.ts @@ -95,7 +95,7 @@ import { getShaderSource, loadImage } from "./utility"; }; const rp: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [1.0, 1.0, 1.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [1.0, 1.0, 1.0, 1.0], loadOp: "clear" }] }, renderObjects: [ro], }; diff --git a/examples/src/WebGL2Samples/texture_3d.ts b/examples/src/WebGL2Samples/texture_3d.ts index 1ccad1b..07005d9 100644 --- a/examples/src/WebGL2Samples/texture_3d.ts +++ b/examples/src/WebGL2Samples/texture_3d.ts @@ -177,7 +177,7 @@ import { getShaderSource } from "./utility"; } const rp: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects, }; diff --git a/examples/src/WebGL2Samples/texture_derivative.ts b/examples/src/WebGL2Samples/texture_derivative.ts index 4d7c457..4cf3019 100644 --- a/examples/src/WebGL2Samples/texture_derivative.ts +++ b/examples/src/WebGL2Samples/texture_derivative.ts @@ -220,7 +220,7 @@ import { getShaderSource, loadImage } from "./utility"; }; const rp: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [ro] }; diff --git a/examples/src/WebGL2Samples/texture_fetch.ts b/examples/src/WebGL2Samples/texture_fetch.ts index 9444984..8a00f0b 100644 --- a/examples/src/WebGL2Samples/texture_fetch.ts +++ b/examples/src/WebGL2Samples/texture_fetch.ts @@ -72,7 +72,7 @@ import { getShaderSource, loadImage } from "./utility"; ]); const rp: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [ { pipeline: program, diff --git a/examples/src/WebGL2Samples/texture_format.ts b/examples/src/WebGL2Samples/texture_format.ts index 536490d..38b57b3 100644 --- a/examples/src/WebGL2Samples/texture_format.ts +++ b/examples/src/WebGL2Samples/texture_format.ts @@ -185,7 +185,7 @@ import { getShaderSource, loadImage } from "./utility"; ]); const rp: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [] }; diff --git a/examples/src/WebGL2Samples/texture_grad.ts b/examples/src/WebGL2Samples/texture_grad.ts index f8f518b..41a3774 100644 --- a/examples/src/WebGL2Samples/texture_grad.ts +++ b/examples/src/WebGL2Samples/texture_grad.ts @@ -210,7 +210,7 @@ import { getShaderSource, loadImage } from "./utility"; }; const rp: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [ro], }; diff --git a/examples/src/WebGL2Samples/texture_immutable.ts b/examples/src/WebGL2Samples/texture_immutable.ts index 848cb06..29ed72c 100644 --- a/examples/src/WebGL2Samples/texture_immutable.ts +++ b/examples/src/WebGL2Samples/texture_immutable.ts @@ -112,7 +112,7 @@ import { getShaderSource, loadImage } from "./utility"; }; const rp: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [] }; diff --git a/examples/src/WebGL2Samples/texture_integer.ts b/examples/src/WebGL2Samples/texture_integer.ts index 61cb0d3..9d67ba3 100644 --- a/examples/src/WebGL2Samples/texture_integer.ts +++ b/examples/src/WebGL2Samples/texture_integer.ts @@ -83,7 +83,7 @@ import { getShaderSource, loadImage } from "./utility"; }; const rp: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [ro], }; diff --git a/examples/src/WebGL2Samples/texture_lod.ts b/examples/src/WebGL2Samples/texture_lod.ts index 1044b6e..01995c5 100644 --- a/examples/src/WebGL2Samples/texture_lod.ts +++ b/examples/src/WebGL2Samples/texture_lod.ts @@ -189,7 +189,7 @@ import { getShaderSource, loadImage } from "./utility"; { // Clear color buffer const rp: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [], }; diff --git a/examples/src/WebGL2Samples/texture_offset.ts b/examples/src/WebGL2Samples/texture_offset.ts index 598e187..36f8dbf 100644 --- a/examples/src/WebGL2Samples/texture_offset.ts +++ b/examples/src/WebGL2Samples/texture_offset.ts @@ -92,7 +92,7 @@ import { getShaderSource, loadImage } from "./utility"; // -- Render const rp: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [] }; diff --git a/examples/src/WebGL2Samples/texture_pixel_store.ts b/examples/src/WebGL2Samples/texture_pixel_store.ts index 1d3dbc5..9c48633 100644 --- a/examples/src/WebGL2Samples/texture_pixel_store.ts +++ b/examples/src/WebGL2Samples/texture_pixel_store.ts @@ -78,7 +78,7 @@ import { getShaderSource, loadImage } from "./utility"; // -- Render const rp: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [], }; diff --git a/examples/src/WebGL2Samples/texture_srgb.ts b/examples/src/WebGL2Samples/texture_srgb.ts index 86057f1..9a3c532 100644 --- a/examples/src/WebGL2Samples/texture_srgb.ts +++ b/examples/src/WebGL2Samples/texture_srgb.ts @@ -72,7 +72,7 @@ import { getShaderSource, loadImage } from "./utility"; { // Clear color buffer const rp: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [], }; diff --git a/examples/src/WebGL2Samples/texture_vertex.ts b/examples/src/WebGL2Samples/texture_vertex.ts index 4a7bafa..c5dacfe 100644 --- a/examples/src/WebGL2Samples/texture_vertex.ts +++ b/examples/src/WebGL2Samples/texture_vertex.ts @@ -191,7 +191,7 @@ import { getShaderSource, loadImage } from "./utility"; { // -- Render const rp: IRenderPass = { - passDescriptor: { + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }], depthStencilAttachment: { depthLoadOp: "clear" } }, diff --git a/examples/src/WebGL2Samples/transform_feedback_instanced.ts b/examples/src/WebGL2Samples/transform_feedback_instanced.ts index 4b3a570..3d8f45b 100644 --- a/examples/src/WebGL2Samples/transform_feedback_instanced.ts +++ b/examples/src/WebGL2Samples/transform_feedback_instanced.ts @@ -119,7 +119,7 @@ import { getShaderSource } from "./utility"; }; const rp: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [transformRO, renderRO], }; diff --git a/examples/src/WebGL2Samples/transform_feedback_interleaved.ts b/examples/src/WebGL2Samples/transform_feedback_interleaved.ts index 165894e..b278c4e 100644 --- a/examples/src/WebGL2Samples/transform_feedback_interleaved.ts +++ b/examples/src/WebGL2Samples/transform_feedback_interleaved.ts @@ -79,7 +79,7 @@ import { getShaderSource } from "./utility"; // -- Render const rp: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [], }; diff --git a/examples/src/WebGL2Samples/transform_feedback_separated.ts b/examples/src/WebGL2Samples/transform_feedback_separated.ts index 21165ea..24ad099 100644 --- a/examples/src/WebGL2Samples/transform_feedback_separated.ts +++ b/examples/src/WebGL2Samples/transform_feedback_separated.ts @@ -89,7 +89,7 @@ import { getShaderSource } from "./utility"; // -- Render const rp: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [], }; diff --git a/examples/src/WebGL2Samples/transform_feedback_separated_2.ts b/examples/src/WebGL2Samples/transform_feedback_separated_2.ts index 107888c..f4a4ccc 100644 --- a/examples/src/WebGL2Samples/transform_feedback_separated_2.ts +++ b/examples/src/WebGL2Samples/transform_feedback_separated_2.ts @@ -130,7 +130,7 @@ import { getShaderSource } from "./utility"; }; const rp: IRenderPass = { - passDescriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [ro], }; diff --git a/examples/src/webgl-examples/sample1.ts b/examples/src/webgl-examples/sample1.ts index d54c6d5..6a5b38b 100644 --- a/examples/src/webgl-examples/sample1.ts +++ b/examples/src/webgl-examples/sample1.ts @@ -7,7 +7,7 @@ function main() { const webgl = new WebGL({ canvasId: "glcanvas", contextId: "webgl" }); webgl.runRenderPass({ - passDescriptor: { + descriptor: { colorAttachments: [{ clearValue: [1, 0, 0, 0.5], loadOp: "clear", diff --git a/examples/src/webgl-examples/sample2.ts b/examples/src/webgl-examples/sample2.ts index 6404715..f73370a 100644 --- a/examples/src/webgl-examples/sample2.ts +++ b/examples/src/webgl-examples/sample2.ts @@ -13,7 +13,7 @@ function main() const webgl = new WebGL({ canvasId: "glcanvas", contextId: "webgl" }); const renderPasss: IRenderPass = { - passDescriptor: { + descriptor: { colorAttachments: [{ clearValue: [0, 0, 0, 1], loadOp: "clear", diff --git a/examples/src/webgl-examples/sample3.ts b/examples/src/webgl-examples/sample3.ts index cfded64..840d208 100644 --- a/examples/src/webgl-examples/sample3.ts +++ b/examples/src/webgl-examples/sample3.ts @@ -16,7 +16,7 @@ function main() const webgl = new WebGL({ canvasId: "glcanvas", contextId: "webgl" }); const renderPasss: IRenderPass = { - passDescriptor: { + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear", diff --git a/examples/src/webgl-examples/sample4.ts b/examples/src/webgl-examples/sample4.ts index 49017c5..c06e9fa 100644 --- a/examples/src/webgl-examples/sample4.ts +++ b/examples/src/webgl-examples/sample4.ts @@ -79,7 +79,7 @@ function main() }; const renderPasss: IRenderPass = { - passDescriptor: { + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear", diff --git a/examples/src/webgl-examples/sample5.ts b/examples/src/webgl-examples/sample5.ts index c3b888b..56e4be7 100644 --- a/examples/src/webgl-examples/sample5.ts +++ b/examples/src/webgl-examples/sample5.ts @@ -75,7 +75,7 @@ function main() }; const renderPasss: IRenderPass = { - passDescriptor: { + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear", diff --git a/examples/src/webgl-examples/sample6.ts b/examples/src/webgl-examples/sample6.ts index c9c76ea..738ab10 100644 --- a/examples/src/webgl-examples/sample6.ts +++ b/examples/src/webgl-examples/sample6.ts @@ -79,7 +79,7 @@ async function main() }; const renderPasss: IRenderPass = { - passDescriptor: { + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear", diff --git a/examples/src/webgl-examples/sample7.ts b/examples/src/webgl-examples/sample7.ts index c0d8802..1bef4c8 100644 --- a/examples/src/webgl-examples/sample7.ts +++ b/examples/src/webgl-examples/sample7.ts @@ -107,7 +107,7 @@ async function main() }; const renderPasss: IRenderPass = { - passDescriptor: { + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear", diff --git a/examples/src/webgl-examples/sample8.ts b/examples/src/webgl-examples/sample8.ts index 9b15236..2f2583d 100644 --- a/examples/src/webgl-examples/sample8.ts +++ b/examples/src/webgl-examples/sample8.ts @@ -111,7 +111,7 @@ function main() }; const renderPasss: IRenderPass = { - passDescriptor: { + descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear", diff --git a/package.json b/package.json index 0c840be..4d71d74 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,7 @@ "vitest": "^0.32.2" }, "dependencies": { + "@feng3d/renderer-common": "0.0.1", "@feng3d/serialization": "^0.8.1", "@feng3d/watcher": "^0.8.3" } diff --git a/src/data/IRenderPass.ts b/src/data/IRenderPass.ts index a63a0ed..cfd42e5 100644 --- a/src/data/IRenderPass.ts +++ b/src/data/IRenderPass.ts @@ -7,7 +7,7 @@ import { IRenderObject } from "./IRenderObject"; * * 包含渲染通道描述以及需要渲染的对象列表。 */ -export class IRenderPass +export interface IRenderPass { /** * WebGL渲染通道描述 -- Gitee From 52d1580023bcd1f52409c1cc1c2384c37002a315 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Thu, 24 Oct 2024 16:53:50 +0800 Subject: [PATCH 05/47] IWebRenderer --- src/WebGL.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/WebGL.ts b/src/WebGL.ts index 10fdc02..45244d3 100644 --- a/src/WebGL.ts +++ b/src/WebGL.ts @@ -1,3 +1,4 @@ +import { IWebRenderer } from "@feng3d/renderer-common"; import { deleteFramebuffer } from "./caches/getFramebuffer"; import { deleteProgram } from "./caches/getProgram"; import { deleteRenderbuffer } from "./caches/getRenderbuffer"; @@ -34,7 +35,7 @@ import { deleteVertexArray } from "./runs/runVertexArray"; * * 所有渲染都由该渲染器执行。與2D、3D場景無關,屬於更加底層的API。針對每一個 RenderObject 渲染數據進行渲染。 */ -export class WebGL +export class WebGL implements IWebRenderer { private _renderingContext: IRenderingContext; private _gl: WebGLRenderingContext; -- Gitee From c1b1b84f5602a1622dc80552006b46f6b4d9246e Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Mon, 28 Oct 2024 15:52:42 +0800 Subject: [PATCH 06/47] 1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4d71d74..589a55f 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ }, "repository": { "type": "git", - "url": "https://gitlab.com/feng3d/webgl-renderer.git" + "url": "https://gitee.com/feng3d/webgl-renderer.git" }, "publishConfig": { "access": "public" -- Gitee From f2d741f24f8f8d4e8d12dfdd9ef19c6bfe1b5b5a Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Mon, 28 Oct 2024 17:00:30 +0800 Subject: [PATCH 07/47] 1 --- src/WebGL.ts | 4 ++-- src/data/IRenderPass.ts | 3 ++- src/runs/runRenderPass.ts | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/WebGL.ts b/src/WebGL.ts index 45244d3..bf045dc 100644 --- a/src/WebGL.ts +++ b/src/WebGL.ts @@ -14,7 +14,7 @@ import { IPassDescriptor } from "./data/IPassDescriptor"; import { IQuery } from "./data/IQueryAction"; import { IReadPixels } from "./data/IReadPixels"; import { IRenderObject } from "./data/IRenderObject"; -import { IRenderPass } from "./data/IRenderPass"; +import { IGLRenderPass } from "./data/IRenderPass"; import { IRenderPipeline } from "./data/IRenderPipeline"; import { IRenderbuffer } from "./data/IRenderbuffer"; import { IRenderingContext } from "./data/IRenderingContext"; @@ -53,7 +53,7 @@ export class WebGL implements IWebRenderer * @param renderPass 渲染通道数据。 * @returns */ - runRenderPass(renderPass: IRenderPass) + runRenderPass(renderPass: IGLRenderPass) { runRenderPass(this._gl, renderPass); } diff --git a/src/data/IRenderPass.ts b/src/data/IRenderPass.ts index cfd42e5..396c388 100644 --- a/src/data/IRenderPass.ts +++ b/src/data/IRenderPass.ts @@ -1,3 +1,4 @@ +import { IRenderPass } from "@feng3d/renderer-common"; import { IPassDescriptor } from "./IPassDescriptor"; import { IQueryAction } from "./IQueryAction"; import { IRenderObject } from "./IRenderObject"; @@ -7,7 +8,7 @@ import { IRenderObject } from "./IRenderObject"; * * 包含渲染通道描述以及需要渲染的对象列表。 */ -export interface IRenderPass +export interface IGLRenderPass extends IRenderPass { /** * WebGL渲染通道描述 diff --git a/src/runs/runRenderPass.ts b/src/runs/runRenderPass.ts index 4839d3d..25277e3 100644 --- a/src/runs/runRenderPass.ts +++ b/src/runs/runRenderPass.ts @@ -1,9 +1,9 @@ -import { IRenderPass } from "../data/IRenderPass"; +import { IGLRenderPass } from "../data/IRenderPass"; import { runPassDescriptor } from "./runPassDescriptor"; import { runQueryAction } from "./runQueryAction"; import { runRenderObject } from "./runRenderObject"; -export function runRenderPass(gl: WebGLRenderingContext, renderPass: IRenderPass) +export function runRenderPass(gl: WebGLRenderingContext, renderPass: IGLRenderPass) { runPassDescriptor(gl, renderPass.descriptor); -- Gitee From a3db7a25fceb75c4317f9d15984f7a2b97e8b756 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Mon, 28 Oct 2024 17:17:17 +0800 Subject: [PATCH 08/47] =?UTF-8?q?=E8=B0=83=E6=95=B4=20=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/WebGL.ts | 60 +++++++++---------- src/caches/getCapabilities.ts | 4 +- src/caches/getFramebuffer.ts | 18 +++--- src/caches/getProgram.ts | 24 ++++---- src/caches/getRenderbuffer.ts | 8 +-- src/caches/getRenderingContext.ts | 8 +-- src/caches/getSampler.ts | 8 +-- src/caches/getTexture.ts | 10 ++-- src/caches/getWebGLBuffer.ts | 8 +-- src/caches/getWebGLQuery.ts | 8 +-- src/caches/getWebGLTransformFeedback.ts | 8 +-- src/const/WebGLUniformType.ts | 10 ++-- ...{IAttributeInfo.ts => IGLAttributeInfo.ts} | 4 +- src/data/{IBlendState.ts => IGLBlendState.ts} | 22 +++---- ...itFramebuffer.ts => IGLBlitFramebuffer.ts} | 12 ++-- src/data/{IBuffer.ts => IGLBuffer.ts} | 12 ++-- .../{ICapabilities.ts => IGLCapabilities.ts} | 4 +- ...rTargetState.ts => IGLColorTargetState.ts} | 10 ++-- src/data/{ICopyBuffer.ts => IGLCopyBuffer.ts} | 8 +-- src/data/{ICullFace.ts => IGLCullFace.ts} | 10 ++-- ...tencilState.ts => IGLDepthStencilState.ts} | 28 ++++----- src/data/{IDrawArrays.ts => IGLDrawArrays.ts} | 2 +- .../{IDrawElements.ts => IGLDrawElements.ts} | 2 +- .../{IFramebuffer.ts => IGLFramebuffer.ts} | 4 +- .../{IIndexBuffer.ts => IGLIndexBuffer.ts} | 8 +-- src/data/IGLPassDescriptor.ts | 18 ++++++ ...PrimitiveState.ts => IGLPrimitiveState.ts} | 10 ++-- .../{IQueryAction.ts => IGLQueryAction.ts} | 6 +- src/data/{IReadPixels.ts => IGLReadPixels.ts} | 16 ++--- .../{IRenderObject.ts => IGLRenderObject.ts} | 34 +++++------ src/data/{IRenderPass.ts => IGLRenderPass.ts} | 10 ++-- ...ent.ts => IGLRenderPassColorAttachment.ts} | 10 ++-- ...=> IGLRenderPassDepthStencilAttachment.ts} | 6 +- ...RenderPipeline.ts => IGLRenderPipeline.ts} | 16 ++--- .../{IRenderbuffer.ts => IGLRenderbuffer.ts} | 6 +- ...eringContext.ts => IGLRenderingContext.ts} | 2 +- src/data/{ISampler.ts => IGLSampler.ts} | 18 +++--- ...SamplerTexture.ts => IGLSamplerTexture.ts} | 10 ++-- src/data/{IScissor.ts => IGLScissor.ts} | 2 +- src/data/{ITexture.ts => IGLTexture.ts} | 32 +++++----- ...ormFeedback.ts => IGLTransformFeedback.ts} | 10 ++-- .../{IUniformInfo.ts => IGLUniformInfo.ts} | 6 +- src/data/IGLUniforms.ts | 20 +++++++ ...ArrayObject.ts => IGLVertexArrayObject.ts} | 10 ++-- ...rtexAttribute.ts => IGLVertexAttribute.ts} | 6 +- src/data/IGLVertexAttributes.ts | 9 +++ src/data/{IViewport.ts => IGLViewport.ts} | 2 +- src/data/IPassDescriptor.ts | 18 ------ src/data/IUniforms.ts | 20 ------- src/data/IVertexAttributes.ts | 9 --- src/defaults/defaultWebGLCanvasContext.ts | 4 +- src/gl/WebGLEnums.ts | 12 ++-- src/index.ts | 44 +++++++------- src/runs/runBlitFramebuffer.ts | 4 +- src/runs/runColorTargetStates.ts | 16 ++--- src/runs/runCopyBuffer.ts | 4 +- src/runs/runDepthState.ts | 6 +- src/runs/runDepthStencilState.ts | 6 +- src/runs/runDrawCall.ts | 24 ++++---- src/runs/runFramebuffer.ts | 4 +- src/runs/runIndexBuffer.ts | 6 +- src/runs/runPassDescriptor.ts | 12 ++-- src/runs/runPrimitiveState.ts | 10 ++-- src/runs/runProgram.ts | 4 +- src/runs/runQueryAction.ts | 6 +- src/runs/runReadPixels.ts | 4 +- src/runs/runRenderObject.ts | 4 +- src/runs/runRenderPass.ts | 2 +- src/runs/runRenderPipeline.ts | 6 +- src/runs/runSampler.ts | 14 ++--- src/runs/runScissor.ts | 4 +- src/runs/runStencilState.ts | 6 +- src/runs/runTexture.ts | 16 ++--- src/runs/runTransformFeedback.ts | 8 +-- src/runs/runUniforms.ts | 22 +++---- src/runs/runVertexArray.ts | 10 ++-- src/runs/runVertexAttribute.ts | 4 +- src/runs/runViewPort.ts | 4 +- 78 files changed, 436 insertions(+), 436 deletions(-) rename src/data/{IAttributeInfo.ts => IGLAttributeInfo.ts} (72%) rename src/data/{IBlendState.ts => IGLBlendState.ts} (86%) rename src/data/{IBlitFramebuffer.ts => IGLBlitFramebuffer.ts} (55%) rename src/data/{IBuffer.ts => IGLBuffer.ts} (93%) rename src/data/{ICapabilities.ts => IGLCapabilities.ts} (95%) rename src/data/{IColorTargetState.ts => IGLColorTargetState.ts} (57%) rename src/data/{ICopyBuffer.ts => IGLCopyBuffer.ts} (37%) rename src/data/{ICullFace.ts => IGLCullFace.ts} (88%) rename src/data/{IDepthStencilState.ts => IGLDepthStencilState.ts} (91%) rename src/data/{IDrawArrays.ts => IGLDrawArrays.ts} (91%) rename src/data/{IDrawElements.ts => IGLDrawElements.ts} (80%) rename src/data/{IFramebuffer.ts => IGLFramebuffer.ts} (62%) rename src/data/{IIndexBuffer.ts => IGLIndexBuffer.ts} (85%) create mode 100644 src/data/IGLPassDescriptor.ts rename src/data/{IPrimitiveState.ts => IGLPrimitiveState.ts} (85%) rename src/data/{IQueryAction.ts => IGLQueryAction.ts} (92%) rename src/data/{IReadPixels.ts => IGLReadPixels.ts} (58%) rename src/data/{IRenderObject.ts => IGLRenderObject.ts} (62%) rename src/data/{IRenderPass.ts => IGLRenderPass.ts} (55%) rename src/data/{IRenderPassColorAttachment.ts => IGLRenderPassColorAttachment.ts} (77%) rename src/data/{IRenderPassDepthStencilAttachment.ts => IGLRenderPassDepthStencilAttachment.ts} (89%) rename src/data/{IRenderPipeline.ts => IGLRenderPipeline.ts} (76%) rename src/data/{IRenderbuffer.ts => IGLRenderbuffer.ts} (92%) rename src/data/{IRenderingContext.ts => IGLRenderingContext.ts} (79%) rename src/data/{ISampler.ts => IGLSampler.ts} (78%) rename src/data/{ISamplerTexture.ts => IGLSamplerTexture.ts} (35%) rename src/data/{IScissor.ts => IGLScissor.ts} (94%) rename src/data/{ITexture.ts => IGLTexture.ts} (93%) rename src/data/{ITransformFeedback.ts => IGLTransformFeedback.ts} (48%) rename src/data/{IUniformInfo.ts => IGLUniformInfo.ts} (83%) create mode 100644 src/data/IGLUniforms.ts rename src/data/{IVertexArrayObject.ts => IGLVertexArrayObject.ts} (30%) rename src/data/{IVertexAttribute.ts => IGLVertexAttribute.ts} (95%) create mode 100644 src/data/IGLVertexAttributes.ts rename src/data/{IViewport.ts => IGLViewport.ts} (91%) delete mode 100644 src/data/IPassDescriptor.ts delete mode 100644 src/data/IUniforms.ts delete mode 100644 src/data/IVertexAttributes.ts diff --git a/src/WebGL.ts b/src/WebGL.ts index bf045dc..6a0cf32 100644 --- a/src/WebGL.ts +++ b/src/WebGL.ts @@ -7,21 +7,21 @@ import { deleteSampler } from "./caches/getSampler"; import { deleteTexture } from "./caches/getTexture"; import { deleteBuffer } from "./caches/getWebGLBuffer"; import { deleteTransformFeedback } from "./caches/getWebGLTransformFeedback"; -import { IBlitFramebuffer } from "./data/IBlitFramebuffer"; -import { IBuffer } from "./data/IBuffer"; -import { ICopyBuffer } from "./data/ICopyBuffer"; -import { IPassDescriptor } from "./data/IPassDescriptor"; -import { IQuery } from "./data/IQueryAction"; -import { IReadPixels } from "./data/IReadPixels"; -import { IRenderObject } from "./data/IRenderObject"; -import { IGLRenderPass } from "./data/IRenderPass"; -import { IRenderPipeline } from "./data/IRenderPipeline"; -import { IRenderbuffer } from "./data/IRenderbuffer"; -import { IRenderingContext } from "./data/IRenderingContext"; -import { ISampler } from "./data/ISampler"; -import { ITexture } from "./data/ITexture"; -import { ITransformFeedback } from "./data/ITransformFeedback"; -import { IVertexArrayObject } from "./data/IVertexArrayObject"; +import { IGLBlitFramebuffer } from "./data/IGLBlitFramebuffer"; +import { IGLBuffer } from "./data/IGLBuffer"; +import { IGLCopyBuffer } from "./data/IGLCopyBuffer"; +import { IGLPassDescriptor } from "./data/IGLPassDescriptor"; +import { IGLQuery } from "./data/IGLQueryAction"; +import { IGLReadPixels } from "./data/IGLReadPixels"; +import { IGLRenderObject } from "./data/IGLRenderObject"; +import { IGLRenderPass } from "./data/IGLRenderPass"; +import { IGLRenderPipeline } from "./data/IGLRenderPipeline"; +import { IGLRenderbuffer } from "./data/IGLRenderbuffer"; +import { IGLRenderingContext } from "./data/IGLRenderingContext"; +import { IGLSampler } from "./data/IGLSampler"; +import { IGLTexture } from "./data/IGLTexture"; +import { IGLTransformFeedback } from "./data/IGLTransformFeedback"; +import { IGLVertexArrayObject } from "./data/IGLVertexArrayObject"; import { runBlitFramebuffer } from "./runs/runBlitFramebuffer"; import { runCopyBuffer } from "./runs/runCopyBuffer"; import { getQueryResult } from "./runs/runQueryAction"; @@ -37,10 +37,10 @@ import { deleteVertexArray } from "./runs/runVertexArray"; */ export class WebGL implements IWebRenderer { - private _renderingContext: IRenderingContext; + private _renderingContext: IGLRenderingContext; private _gl: WebGLRenderingContext; - constructor(renderingContext: IRenderingContext) + constructor(renderingContext: IGLRenderingContext) { this._renderingContext = renderingContext; this._gl = getRenderingContext(this._renderingContext); @@ -63,67 +63,67 @@ export class WebGL implements IWebRenderer * * @param renderObject 渲染原子,包含渲染所需的所有数据。 */ - runRenderObject(renderObject: IRenderObject) + runRenderObject(renderObject: IGLRenderObject) { runRenderObject(this._gl, renderObject); } - runBlitFramebuffer(blitFramebuffer: IBlitFramebuffer) + runBlitFramebuffer(blitFramebuffer: IGLBlitFramebuffer) { runBlitFramebuffer(this._gl, blitFramebuffer); } - runCopyBuffer(copyBuffer: ICopyBuffer) + runCopyBuffer(copyBuffer: IGLCopyBuffer) { runCopyBuffer(this._gl, copyBuffer); } - runReadPixels(readPixels: IReadPixels) + runReadPixels(readPixels: IGLReadPixels) { runReadPixels(this._gl, readPixels); } - deleteFramebuffer(passDescriptor: IPassDescriptor) + deleteFramebuffer(passDescriptor: IGLPassDescriptor) { deleteFramebuffer(this._gl, passDescriptor); } - deleteRenderbuffer(renderbuffer: IRenderbuffer) + deleteRenderbuffer(renderbuffer: IGLRenderbuffer) { deleteRenderbuffer(this._gl, renderbuffer); } - deleteBuffer(buffer: IBuffer) + deleteBuffer(buffer: IGLBuffer) { deleteBuffer(this._gl, buffer); } - deleteTexture(texture: ITexture) + deleteTexture(texture: IGLTexture) { deleteTexture(this._gl, texture); } - deleteSampler(sampler: ISampler) + deleteSampler(sampler: IGLSampler) { deleteSampler(this._gl, sampler); } - deleteProgram(pipeline: IRenderPipeline) + deleteProgram(pipeline: IGLRenderPipeline) { deleteProgram(this._gl, pipeline); } - deleteVertexArray(vertexArray: IVertexArrayObject) + deleteVertexArray(vertexArray: IGLVertexArrayObject) { deleteVertexArray(this._gl, vertexArray); } - deleteTransformFeedback(transformFeedback: ITransformFeedback) + deleteTransformFeedback(transformFeedback: IGLTransformFeedback) { deleteTransformFeedback(this._gl, transformFeedback); } - getQueryResult(query: IQuery) + getQueryResult(query: IGLQuery) { return getQueryResult(this._gl, query); } diff --git a/src/caches/getCapabilities.ts b/src/caches/getCapabilities.ts index f4640c3..7df0183 100644 --- a/src/caches/getCapabilities.ts +++ b/src/caches/getCapabilities.ts @@ -1,8 +1,8 @@ -import { ICapabilities } from "../data/ICapabilities"; +import { IGLCapabilities } from "../data/IGLCapabilities"; export function getCapabilities(gl: WebGLRenderingContext, precision: "highp" | "mediump" | "lowp" = "highp") { - const capabilities: ICapabilities = {} as any; + const capabilities: IGLCapabilities = {} as any; gl._capabilities = capabilities; // capabilities.maxAnisotropy = gl.getExtension("EXT_texture_filter_anisotropic") ? gl.getParameter(gl.getExtension("EXT_texture_filter_anisotropic").MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 0; diff --git a/src/caches/getFramebuffer.ts b/src/caches/getFramebuffer.ts index 9481d3b..2f30a0b 100644 --- a/src/caches/getFramebuffer.ts +++ b/src/caches/getFramebuffer.ts @@ -1,6 +1,6 @@ -import { IPassDescriptor } from "../data/IPassDescriptor"; -import { IRenderbuffer } from "../data/IRenderbuffer"; -import { ITextureView } from "../data/ITexture"; +import { IGLPassDescriptor } from "../data/IGLPassDescriptor"; +import { IGLRenderbuffer } from "../data/IGLRenderbuffer"; +import { IGLTextureView } from "../data/IGLTexture"; import { getRenderbuffer } from "./getRenderbuffer"; import { getTexture } from "./getTexture"; @@ -8,16 +8,16 @@ declare global { interface WebGLRenderingContext { - _framebuffers: Map; + _framebuffers: Map; } } -const defaultTextureView: Partial = { level: 0, layer: 0 }; +const defaultTextureView: Partial = { level: 0, layer: 0 }; /** * 获取帧缓冲区 */ -export function getFramebuffer(gl: WebGLRenderingContext, passDescriptor: IPassDescriptor) +export function getFramebuffer(gl: WebGLRenderingContext, passDescriptor: IGLPassDescriptor) { const view = passDescriptor?.colorAttachments?.[0]?.view || passDescriptor?.depthStencilAttachment?.view; if (!view) return null; @@ -61,7 +61,7 @@ export function getFramebuffer(gl: WebGLRenderingContext, passDescriptor: IPassD } else { - const renderbuffer = getRenderbuffer(gl, view as IRenderbuffer); + const renderbuffer = getRenderbuffer(gl, view as IGLRenderbuffer); gl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachment, gl.RENDERBUFFER, renderbuffer); } }); @@ -104,7 +104,7 @@ export function getFramebuffer(gl: WebGLRenderingContext, passDescriptor: IPassD } else { - const renderbuffer = getRenderbuffer(gl, view as IRenderbuffer); + const renderbuffer = getRenderbuffer(gl, view as IGLRenderbuffer); gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, renderbuffer); } } @@ -112,7 +112,7 @@ export function getFramebuffer(gl: WebGLRenderingContext, passDescriptor: IPassD return webGLFramebuffer; } -export function deleteFramebuffer(gl: WebGLRenderingContext, passDescriptor: IPassDescriptor) +export function deleteFramebuffer(gl: WebGLRenderingContext, passDescriptor: IGLPassDescriptor) { const webGLFramebuffer = gl._framebuffers.get(passDescriptor); gl._framebuffers.delete(passDescriptor); diff --git a/src/caches/getProgram.ts b/src/caches/getProgram.ts index e1f5d20..ab18d3d 100644 --- a/src/caches/getProgram.ts +++ b/src/caches/getProgram.ts @@ -1,7 +1,7 @@ import { getWebGLUniformType, isWebGLUniformTextureType } from "../const/WebGLUniformType"; -import { IAttributeInfo } from "../data/IAttributeInfo"; -import { IRenderPipeline, ITransformFeedbackVaryings } from "../data/IRenderPipeline"; -import { IUniformInfo, IUniformItemInfo } from "../data/IUniformInfo"; +import { IGLAttributeInfo } from "../data/IGLAttributeInfo"; +import { IGLRenderPipeline, ITransformFeedbackVaryings } from "../data/IGLRenderPipeline"; +import { IGLUniformInfo, IUniformItemInfo } from "../data/IGLUniformInfo"; import { getWebGLAttributeValueType } from "./getWebGLAttributeType"; declare global @@ -19,11 +19,11 @@ declare global /** * 属性信息列表 */ - attributes: IAttributeInfo[]; + attributes: IGLAttributeInfo[]; /** * uniform信息列表 */ - uniforms: IUniformInfo[]; + uniforms: IGLUniformInfo[]; /** * 统一变量块信息列表。 @@ -37,7 +37,7 @@ declare global /** * 激活渲染程序 */ -export function getProgram(gl: WebGLRenderingContext, pipeline: IRenderPipeline) +export function getProgram(gl: WebGLRenderingContext, pipeline: IGLRenderPipeline) { const shaderKey = getKey(pipeline); let result = gl._programs[shaderKey]; @@ -53,7 +53,7 @@ export function getProgram(gl: WebGLRenderingContext, pipeline: IRenderPipeline) return result; } -export function deleteProgram(gl: WebGLRenderingContext, pipeline: IRenderPipeline) +export function deleteProgram(gl: WebGLRenderingContext, pipeline: IGLRenderPipeline) { const vertex = pipeline.vertex.code; const fragment = pipeline.fragment.code; @@ -67,7 +67,7 @@ export function deleteProgram(gl: WebGLRenderingContext, pipeline: IRenderPipeli } } -function getKey(pipeline: IRenderPipeline) +function getKey(pipeline: IGLRenderPipeline) { const vertex = pipeline.vertex.code; const fragment = pipeline.fragment.code; @@ -89,7 +89,7 @@ function getWebGLProgram(gl: WebGLRenderingContext, vshader: string, fshader: st // 获取属性信息 const numAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES); - const attributes: IAttributeInfo[] = []; + const attributes: IGLAttributeInfo[] = []; for (let i = 0; i < numAttributes; i++) { const activeInfo = gl.getActiveAttrib(program, i); @@ -100,7 +100,7 @@ function getWebGLProgram(gl: WebGLRenderingContext, vshader: string, fshader: st } // 获取uniform信息 const numUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS); - const uniforms: IUniformInfo[] = []; + const uniforms: IGLUniformInfo[] = []; let textureID = 0; for (let i = 0; i < numUniforms; i++) { @@ -156,7 +156,7 @@ function getWebGLProgram(gl: WebGLRenderingContext, vshader: string, fshader: st gl.uniformBlockBinding(program, i, i); // 获取包含的统一变量列表。 const uniformIndices: Uint32Array = gl.getActiveUniformBlockParameter(program, i, gl.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES); - const uniformList: IUniformInfo[] = []; + const uniformList: IGLUniformInfo[] = []; for (let i = 0; i < uniformIndices.length; i++) { const unifrom = uniforms[uniformIndices[i]]; @@ -209,7 +209,7 @@ export interface IUniformBlockInfo /** * 包含的统一变量列表。 */ - uniforms: IUniformInfo[]; + uniforms: IGLUniformInfo[]; } /** diff --git a/src/caches/getRenderbuffer.ts b/src/caches/getRenderbuffer.ts index 6425480..79bf775 100644 --- a/src/caches/getRenderbuffer.ts +++ b/src/caches/getRenderbuffer.ts @@ -1,14 +1,14 @@ -import { IRenderbuffer } from "../data/IRenderbuffer"; +import { IGLRenderbuffer } from "../data/IGLRenderbuffer"; declare global { interface WebGLRenderingContext { - _renderbuffers: Map; + _renderbuffers: Map; } } -export function getRenderbuffer(gl: WebGLRenderingContext, renderbuffer: IRenderbuffer) +export function getRenderbuffer(gl: WebGLRenderingContext, renderbuffer: IGLRenderbuffer) { let webGLRenderbuffer = gl._renderbuffers.get(renderbuffer); if (webGLRenderbuffer) return webGLRenderbuffer; @@ -31,7 +31,7 @@ export function getRenderbuffer(gl: WebGLRenderingContext, renderbuffer: IRender return webGLRenderbuffer; } -export function deleteRenderbuffer(gl: WebGLRenderingContext, renderbuffer: IRenderbuffer) +export function deleteRenderbuffer(gl: WebGLRenderingContext, renderbuffer: IGLRenderbuffer) { const webGLRenderbuffer = gl._renderbuffers.get(renderbuffer); gl._renderbuffers.delete(renderbuffer); diff --git a/src/caches/getRenderingContext.ts b/src/caches/getRenderingContext.ts index 53d6bf1..969f0a2 100644 --- a/src/caches/getRenderingContext.ts +++ b/src/caches/getRenderingContext.ts @@ -1,4 +1,4 @@ -import { IRenderingContext } from "../data/IRenderingContext"; +import { IGLRenderingContext } from "../data/IGLRenderingContext"; import { defaults } from "../defaults/defaults"; import { getCapabilities } from "./getCapabilities"; @@ -8,7 +8,7 @@ import { getCapabilities } from "./getCapabilities"; * @param renderingContext * @returns */ -export function getRenderingContext(renderingContext: IRenderingContext) +export function getRenderingContext(renderingContext: IGLRenderingContext) { const key = renderingContext.canvasId; let value = canvasContextMap.get(key); @@ -72,7 +72,7 @@ function autoCreateCanvas(canvasId: string) return canvas; } -function getCanvas(canvasContext: IRenderingContext) +function getCanvas(canvasContext: IGLRenderingContext) { let canvas = document.getElementById(canvasContext.canvasId) as HTMLCanvasElement; if (!canvas || !(canvas instanceof HTMLCanvasElement)) @@ -83,7 +83,7 @@ function getCanvas(canvasContext: IRenderingContext) return canvas; } -function getWebGLContext(canvas: HTMLCanvasElement, canvasContext: IRenderingContext) +function getWebGLContext(canvas: HTMLCanvasElement, canvasContext: IGLRenderingContext) { const contextAttributes = Object.assign({}, defaults.webGLCanvasContext, canvasContext); diff --git a/src/caches/getSampler.ts b/src/caches/getSampler.ts index c362103..4f246ff 100644 --- a/src/caches/getSampler.ts +++ b/src/caches/getSampler.ts @@ -1,15 +1,15 @@ -import { ISampler } from "../data/ISampler"; +import { IGLSampler } from "../data/IGLSampler"; import { defaultSampler } from "../runs/runSampler"; declare global { interface WebGLRenderingContext { - _samplers: Map; + _samplers: Map; } } -export function getSampler(gl: WebGLRenderingContext, sampler?: ISampler) +export function getSampler(gl: WebGLRenderingContext, sampler?: IGLSampler) { let webGLSampler = gl._samplers.get(sampler); if (webGLSampler) return webGLSampler; @@ -35,7 +35,7 @@ export function getSampler(gl: WebGLRenderingContext, sampler?: ISampler) return webGLSampler; } -export function deleteSampler(gl: WebGLRenderingContext, sampler?: ISampler) +export function deleteSampler(gl: WebGLRenderingContext, sampler?: IGLSampler) { if (gl instanceof WebGL2RenderingContext) { diff --git a/src/caches/getTexture.ts b/src/caches/getTexture.ts index e4d918b..81efc27 100644 --- a/src/caches/getTexture.ts +++ b/src/caches/getTexture.ts @@ -1,12 +1,12 @@ import { watcher } from "@feng3d/watcher"; -import { ITexture, ITexturePixelStore, ITextureTarget } from "../data/ITexture"; +import { IGLTexture, ITexturePixelStore, GLTextureTarget } from "../data/IGLTexture"; import { defaultBufferSource, defaultImageSource, defaultTexture } from "../runs/runTexture"; declare global { interface WebGLRenderingContext { - _textures: Map + _textures: Map } interface WebGLTexture @@ -16,7 +16,7 @@ declare global * * 默认"TEXTURE_2D"。 */ - textureTarget: ITextureTarget; + textureTarget: GLTextureTarget; /** * 销毁WebGL纹理。 @@ -41,7 +41,7 @@ const defaultTexturePixelStore: ITexturePixelStore = { unpackSkipImages: 0, }; -export function getTexture(gl: WebGLRenderingContext, texture: ITexture) +export function getTexture(gl: WebGLRenderingContext, texture: IGLTexture) { let webGLTexture = gl._textures.get(texture); if (webGLTexture) return webGLTexture; @@ -229,7 +229,7 @@ export function getTexture(gl: WebGLRenderingContext, texture: ITexture) return webGLTexture; } -export function deleteTexture(gl: WebGLRenderingContext, texture: ITexture) +export function deleteTexture(gl: WebGLRenderingContext, texture: IGLTexture) { const webGLTexture = gl._textures.get(texture); if (!webGLTexture) return; diff --git a/src/caches/getWebGLBuffer.ts b/src/caches/getWebGLBuffer.ts index 44ad6ed..c7d8425 100644 --- a/src/caches/getWebGLBuffer.ts +++ b/src/caches/getWebGLBuffer.ts @@ -1,11 +1,11 @@ import { watcher } from "@feng3d/watcher"; -import { IAttributeBufferSourceTypes, IBuffer } from "../data/IBuffer"; +import { IAttributeBufferSourceTypes, IGLBuffer } from "../data/IGLBuffer"; declare global { interface WebGLRenderingContext { - _buffers: Map + _buffers: Map } interface WebGLBuffer @@ -69,7 +69,7 @@ Int8Array.prototype.bufferType = "BYTE"; // eslint-disable-next-line no-extend-native Uint8ClampedArray.prototype.bufferType = "BYTE"; -export function getWebGLBuffer(gl: WebGLRenderingContext, buffer: IBuffer) +export function getWebGLBuffer(gl: WebGLRenderingContext, buffer: IGLBuffer) { let webGLBuffer = gl._buffers.get(buffer); if (webGLBuffer) return webGLBuffer; @@ -147,7 +147,7 @@ export function getWebGLBuffer(gl: WebGLRenderingContext, buffer: IBuffer) return webGLBuffer; } -export function deleteBuffer(gl: WebGLRenderingContext, buffer: IBuffer) +export function deleteBuffer(gl: WebGLRenderingContext, buffer: IGLBuffer) { const webGLBuffer = gl._buffers.get(buffer); if (webGLBuffer) diff --git a/src/caches/getWebGLQuery.ts b/src/caches/getWebGLQuery.ts index d816e8d..32e71be 100644 --- a/src/caches/getWebGLQuery.ts +++ b/src/caches/getWebGLQuery.ts @@ -1,14 +1,14 @@ -import { IQuery } from "../data/IQueryAction"; +import { IGLQuery } from "../data/IGLQueryAction"; declare global { interface WebGLRenderingContext { - _querys: Map + _querys: Map } } -export function getWebGLQuery(gl: WebGLRenderingContext, query: IQuery) +export function getWebGLQuery(gl: WebGLRenderingContext, query: IGLQuery) { if (gl instanceof WebGL2RenderingContext) { @@ -24,7 +24,7 @@ export function getWebGLQuery(gl: WebGLRenderingContext, query: IQuery) return null; } -export function deleteWebGLQuery(gl: WebGLRenderingContext, query: IQuery) +export function deleteWebGLQuery(gl: WebGLRenderingContext, query: IGLQuery) { if (gl instanceof WebGL2RenderingContext) { diff --git a/src/caches/getWebGLTransformFeedback.ts b/src/caches/getWebGLTransformFeedback.ts index 81c7a28..1fde8ba 100644 --- a/src/caches/getWebGLTransformFeedback.ts +++ b/src/caches/getWebGLTransformFeedback.ts @@ -1,15 +1,15 @@ -import { ITransformFeedback } from "../data/ITransformFeedback"; +import { IGLTransformFeedback } from "../data/IGLTransformFeedback"; import { getWebGLBuffer } from "./getWebGLBuffer"; declare global { interface WebGLRenderingContext { - _transforms: Map; + _transforms: Map; } } -export function getWebGLTransformFeedback(gl: WebGLRenderingContext, transformFeedback: ITransformFeedback) +export function getWebGLTransformFeedback(gl: WebGLRenderingContext, transformFeedback: IGLTransformFeedback) { let webGLTransformFeedback = gl._transforms.get(transformFeedback); if (webGLTransformFeedback) return webGLTransformFeedback; @@ -34,7 +34,7 @@ export function getWebGLTransformFeedback(gl: WebGLRenderingContext, transformFe return webGLTransformFeedback; } -export function deleteTransformFeedback(gl: WebGLRenderingContext, transformFeedback: ITransformFeedback) +export function deleteTransformFeedback(gl: WebGLRenderingContext, transformFeedback: IGLTransformFeedback) { const webGLTransformFeedback = gl._transforms.get(transformFeedback); if (!webGLTransformFeedback) return; diff --git a/src/const/WebGLUniformType.ts b/src/const/WebGLUniformType.ts index 01ee663..da831af 100644 --- a/src/const/WebGLUniformType.ts +++ b/src/const/WebGLUniformType.ts @@ -1,17 +1,17 @@ /** * WebGL中Uniform类型 */ -export type IWebGLUniformType = keyof typeof webGLUniformTypeValue; +export type IGLUniformType = keyof typeof webGLUniformTypeValue; /** * WebGL中Uniform纹理类型 */ -export type IWebGLUniformTextureType = keyof typeof webGLUniformTextureTypeValue; +export type IGLUniformTextureType = keyof typeof webGLUniformTextureTypeValue; /** * WebGL中Uniform缓冲区类型 */ -export type IWebGLUniformBufferType = keyof typeof webGLUniformBufferTypeValue; +export type IGLUniformBufferType = keyof typeof webGLUniformBufferTypeValue; /** * 获取Unifrom类型名称 @@ -19,7 +19,7 @@ export type IWebGLUniformBufferType = keyof typeof webGLUniformBufferTypeValue; * @param value WebGL中Unifrom类型对应的值。 * @returns Unifrom类型名称 */ -export function getWebGLUniformType(value: number): IWebGLUniformType +export function getWebGLUniformType(value: number): IGLUniformType { const result = webGLUniformValueType[value]; console.assert(!!result); @@ -33,7 +33,7 @@ export function getWebGLUniformType(value: number): IWebGLUniformType * @param type Unifrom类型名称 * @returns 是否为纹理Unifrom类型。 */ -export function isWebGLUniformTextureType(type: IWebGLUniformType): boolean +export function isWebGLUniformTextureType(type: IGLUniformType): boolean { return webGLUniformTextureTypeValue[type] !== undefined; } diff --git a/src/data/IAttributeInfo.ts b/src/data/IGLAttributeInfo.ts similarity index 72% rename from src/data/IAttributeInfo.ts rename to src/data/IGLAttributeInfo.ts index 5eec9c1..9b98d90 100644 --- a/src/data/IAttributeInfo.ts +++ b/src/data/IGLAttributeInfo.ts @@ -1,6 +1,6 @@ -import { VertexAttributeTypes } from "./IVertexAttribute"; +import { VertexAttributeTypes } from "./IGLVertexAttribute"; -export interface IAttributeInfo +export interface IGLAttributeInfo { /** * 名称。 diff --git a/src/data/IBlendState.ts b/src/data/IGLBlendState.ts similarity index 86% rename from src/data/IBlendState.ts rename to src/data/IGLBlendState.ts index f7831ff..aa20a3a 100644 --- a/src/data/IBlendState.ts +++ b/src/data/IGLBlendState.ts @@ -1,46 +1,46 @@ /** * 混合状态。 */ -export interface IBlendState +export interface IGLBlendState { /** * 为颜色通道定义相应渲染目标的混合行为。 */ - color?: IBlendComponent; + color?: IGLBlendComponent; /** * 为alpha通道定义相应渲染目标的混合行为。 */ - alpha?: IBlendComponent; + alpha?: IGLBlendComponent; } /** * 为颜色或alpha通道定义相应渲染目标的混合行为。 */ -export interface IBlendComponent +export interface IGLBlendComponent { /** * 混合方式,默认 FUNC_ADD,源 + 目标。 * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/blendEquation */ - operation?: BlendEquation; + operation?: GLBlendEquation; /** * 源混合因子,默认 SRC_ALPHA,将所有颜色乘以源alpha值。 * - * @see BlendFactor + * @see GLBlendFactor * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/blendFunc */ - srcFactor?: BlendFactor; + srcFactor?: GLBlendFactor; /** * 目标混合因子,默认 ONE_MINUS_SRC_ALPHA,将所有颜色乘以1减去源alpha值。 * - * @see BlendFactor + * @see GLBlendFactor * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/blendFunc */ - dstFactor?: BlendFactor; + dstFactor?: GLBlendFactor; } /** @@ -68,7 +68,7 @@ export interface IBlendComponent * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/blendFunc */ -export type BlendFactor = "ZERO" | "ONE" | "SRC_COLOR" | "ONE_MINUS_SRC_COLOR" | "DST_COLOR" | "ONE_MINUS_DST_COLOR" | "SRC_ALPHA" | "ONE_MINUS_SRC_ALPHA" | "DST_ALPHA" | "ONE_MINUS_DST_ALPHA" | "SRC_ALPHA_SATURATE"; +export type GLBlendFactor = "ZERO" | "ONE" | "SRC_COLOR" | "ONE_MINUS_SRC_COLOR" | "DST_COLOR" | "ONE_MINUS_DST_COLOR" | "SRC_ALPHA" | "ONE_MINUS_SRC_ALPHA" | "DST_ALPHA" | "ONE_MINUS_DST_ALPHA" | "SRC_ALPHA_SATURATE"; /** * 混合方法 @@ -97,4 +97,4 @@ export type BlendFactor = "ZERO" | "ONE" | "SRC_COLOR" | "ONE_MINUS_SRC_COLOR" | * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/blendEquation */ -export type BlendEquation = "FUNC_ADD" | "FUNC_SUBTRACT" | "FUNC_REVERSE_SUBTRACT" | "MIN" | "MAX"; +export type GLBlendEquation = "FUNC_ADD" | "FUNC_SUBTRACT" | "FUNC_REVERSE_SUBTRACT" | "MIN" | "MAX"; diff --git a/src/data/IBlitFramebuffer.ts b/src/data/IGLBlitFramebuffer.ts similarity index 55% rename from src/data/IBlitFramebuffer.ts rename to src/data/IGLBlitFramebuffer.ts index ca06ace..6d7ff55 100644 --- a/src/data/IBlitFramebuffer.ts +++ b/src/data/IGLBlitFramebuffer.ts @@ -1,16 +1,16 @@ -import { IPassDescriptor } from "./IPassDescriptor"; +import { IGLPassDescriptor } from "./IGLPassDescriptor"; /** * 拷贝渲染缓冲与纹理直接拷贝数据。 */ -export interface IBlitFramebuffer +export interface IGLBlitFramebuffer { - read: IPassDescriptor; - draw: IPassDescriptor; - blitFramebuffers: IBlitFramebufferItem[]; + read: IGLPassDescriptor; + draw: IGLPassDescriptor; + blitFramebuffers: IGLBlitFramebufferItem[]; } -export type IBlitFramebufferItem = [ +export type IGLBlitFramebufferItem = [ srcX0: number, srcY0: number, srcX1: number, srcY1: number, dstX0: number, dstY0: number, dstX1: number, dstY1: number, mask: "COLOR_BUFFER_BIT" | "DEPTH_BUFFER_BIT" | "STENCIL_BUFFER_BIT", filter: "NEAREST" | "LINEAR"]; \ No newline at end of file diff --git a/src/data/IBuffer.ts b/src/data/IGLBuffer.ts similarity index 93% rename from src/data/IBuffer.ts rename to src/data/IGLBuffer.ts index 66df133..6b1bbf7 100644 --- a/src/data/IBuffer.ts +++ b/src/data/IGLBuffer.ts @@ -3,7 +3,7 @@ * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bufferData */ -export interface IBuffer +export interface IGLBuffer { // target: BufferTarget; target: "ARRAY_BUFFER" | "ELEMENT_ARRAY_BUFFER" | "UNIFORM_BUFFER"; @@ -23,15 +23,15 @@ export interface IBuffer * * 默认为 "STATIC_DRAW"。 */ - usage?: BufferUsage; + usage?: GLBufferUsage; /** * 写缓冲区。 */ - writeBuffers?: IWriteBuffer[]; + writeBuffers?: IGLWriteBuffer[]; } -export interface IWriteBuffer +export interface IGLWriteBuffer { bufferOffset?: number; @@ -71,7 +71,7 @@ export type IAttributeBufferSourceTypes = * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bufferData */ -export type BufferUsage = "STATIC_DRAW" | "DYNAMIC_DRAW" | "STREAM_DRAW" // WebGL1 +export type GLBufferUsage = "STATIC_DRAW" | "DYNAMIC_DRAW" | "STREAM_DRAW" // WebGL1 | "STATIC_READ" | "DYNAMIC_READ" | "STREAM_READ" | "STATIC_COPY" | "DYNAMIC_COPY" | "STREAM_COPY" // WebGL2 ; @@ -90,6 +90,6 @@ export type BufferUsage = "STATIC_DRAW" | "DYNAMIC_DRAW" | "STREAM_DRAW" // WebG * * gl.PIXEL_UNPACK_BUFFER: Buffer used for pixel transfer operations. * */ -export type BufferTarget = "ARRAY_BUFFER" | "ELEMENT_ARRAY_BUFFER" // WebGL1 +export type GLBufferTarget = "ARRAY_BUFFER" | "ELEMENT_ARRAY_BUFFER" // WebGL1 | "COPY_READ_BUFFER" | "COPY_WRITE_BUFFER" | "TRANSFORM_FEEDBACK_BUFFER"// WebGL2 | "UNIFORM_BUFFER" | "PIXEL_PACK_BUFFER" | "PIXEL_UNPACK_BUFFER"; // WebGL2 diff --git a/src/data/ICapabilities.ts b/src/data/IGLCapabilities.ts similarity index 95% rename from src/data/ICapabilities.ts rename to src/data/IGLCapabilities.ts index 62e93ff..630abf6 100644 --- a/src/data/ICapabilities.ts +++ b/src/data/IGLCapabilities.ts @@ -5,7 +5,7 @@ declare global /** * WEBGL支持功能 */ - _capabilities: ICapabilities; + _capabilities: IGLCapabilities; } } @@ -15,7 +15,7 @@ declare global * @see https://webglreport.com * @see http://html5test.com */ -export interface ICapabilities +export interface IGLCapabilities { /** * 纹理各向异性过滤最大值 diff --git a/src/data/IColorTargetState.ts b/src/data/IGLColorTargetState.ts similarity index 57% rename from src/data/IColorTargetState.ts rename to src/data/IGLColorTargetState.ts index 9be9450..cfab0e7 100644 --- a/src/data/IColorTargetState.ts +++ b/src/data/IGLColorTargetState.ts @@ -1,11 +1,11 @@ -import { IBlendState } from "./IBlendState"; +import { IGLBlendState } from "./IGLBlendState"; -export interface IColorTargetState +export interface IGLColorTargetState { /** * 混合状态。 */ - blend?: IBlendState; + blend?: IGLBlendState; /** * 控制那些颜色分量是否可以被写入到帧缓冲器。 @@ -14,7 +14,7 @@ export interface IColorTargetState * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/colorMask */ - writeMask?: IWriteMask; + writeMask?: IGLWriteMask; } -export type IWriteMask = [red: boolean, green: boolean, blue: boolean, alpha: boolean]; \ No newline at end of file +export type IGLWriteMask = [red: boolean, green: boolean, blue: boolean, alpha: boolean]; \ No newline at end of file diff --git a/src/data/ICopyBuffer.ts b/src/data/IGLCopyBuffer.ts similarity index 37% rename from src/data/ICopyBuffer.ts rename to src/data/IGLCopyBuffer.ts index 81f0f48..6fc6831 100644 --- a/src/data/ICopyBuffer.ts +++ b/src/data/IGLCopyBuffer.ts @@ -1,9 +1,9 @@ -import { IBuffer } from "./IBuffer"; +import { IGLBuffer } from "./IGLBuffer"; -export interface ICopyBuffer +export interface IGLCopyBuffer { - read: IBuffer, - write: IBuffer, + read: IGLBuffer, + write: IGLBuffer, readOffset: number writeOffset: number size: number diff --git a/src/data/ICullFace.ts b/src/data/IGLCullFace.ts similarity index 88% rename from src/data/ICullFace.ts rename to src/data/IGLCullFace.ts index e2f2a61..4ffee6e 100644 --- a/src/data/ICullFace.ts +++ b/src/data/IGLCullFace.ts @@ -3,7 +3,7 @@ * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/cullFace */ -export interface ICullFace +export interface IGLCullFace { /** * 是否开启面剔除。 @@ -25,14 +25,14 @@ export interface ICullFace * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/cullFace */ - cullMode?: CullFace; + cullMode?: GLCullFace; /** * 正向方向,默认 CCW。三角形逆时针方向为正面。 * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/frontFace */ - frontFace?: FrontFace; + frontFace?: GLFrontFace; } /** @@ -43,7 +43,7 @@ export interface ICullFace * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/frontFace */ -export type FrontFace = "CW" | "CCW"; +export type GLFrontFace = "CW" | "CCW"; /** * 剔除面,默认 BACK,剔除背面。 @@ -58,4 +58,4 @@ export type FrontFace = "CW" | "CCW"; * @see http://www.jianshu.com/p/ee04165f2a02 * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/cullFace */ -export type CullFace = "FRONT" | "BACK" | "FRONT_AND_BACK"; \ No newline at end of file +export type GLCullFace = "FRONT" | "BACK" | "FRONT_AND_BACK"; \ No newline at end of file diff --git a/src/data/IDepthStencilState.ts b/src/data/IGLDepthStencilState.ts similarity index 91% rename from src/data/IDepthStencilState.ts rename to src/data/IGLDepthStencilState.ts index 2f3140b..18f0a9a 100644 --- a/src/data/IDepthStencilState.ts +++ b/src/data/IGLDepthStencilState.ts @@ -1,23 +1,23 @@ /** * 深度模板状态。 */ -export interface IDepthStencilState +export interface IGLDepthStencilState { /** * 深度状态。 */ - depth?: IDepthState; + depth?: IGLDepthState; /** * 模板状态。 */ - stencil?: IStencilState; + stencil?: IGLStencilState; } /** * 深度状态。 */ -export interface IDepthState +export interface IGLDepthState { /** * 是否开启深度检查,默认 true,开启深度检测。 @@ -40,10 +40,10 @@ export interface IDepthState * * A GLenum specifying the depth comparison function, which sets the conditions under which the pixel will be drawn. The default value is gl.LESS. * - * @see CompareFunction + * @see GLCompareFunction * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/depthFunc */ - depthCompare?: CompareFunction; + depthCompare?: GLCompareFunction; /** * 深度偏移。 @@ -82,7 +82,7 @@ export interface IDepthBias /** * 模板状态。 */ -export interface IStencilState +export interface IGLStencilState { /** * 是否开启模板测试与更新模板缓冲。 @@ -116,7 +116,7 @@ export interface IStencilFaceState * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/stencilFunc */ - stencilFunc?: StencilFunc; + stencilFunc?: GLStencilFunc; /** * 一个为模板测试指定参考值。这个值被限制在0到2^n -1的范围内,其中n是模板缓冲区中的位数。默认0。 @@ -143,7 +143,7 @@ export interface IStencilFaceState * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/stencilOp */ - stencilOpFail?: StencilOp; + stencilOpFail?: GLStencilOp; /** * 指定在模板测试通过但深度测试失败时使用的函数枚举。默认KEEP,保持当前值。 @@ -152,7 +152,7 @@ export interface IStencilFaceState * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/stencilOp */ - stencilOpZFail?: StencilOp; + stencilOpZFail?: GLStencilOp; /** * 指定在模板测试和深度测试通过时使用的函数枚举,或在模板测试通过且没有深度缓冲或禁用深度测试时使用的函数枚举。默认KEEP,保持当前值。 @@ -161,7 +161,7 @@ export interface IStencilFaceState * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/stencilOp */ - stencilOpZPass?: StencilOp; + stencilOpZPass?: GLStencilOp; /** * 指定位掩码以启用或禁用在模板平面中写入单个位的正整数。默认全为1(0b11111111)。 @@ -189,7 +189,7 @@ export interface IStencilFaceState * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/depthFunc */ -export type CompareFunction = "NEVER" | "LESS" | "EQUAL" | "LEQUAL" | "GREATER" | "NOTEQUAL" | "GEQUAL" | "ALWAYS"; +export type GLCompareFunction = "NEVER" | "LESS" | "EQUAL" | "LEQUAL" | "GREATER" | "NOTEQUAL" | "GEQUAL" | "ALWAYS"; /** * A GLenum specifying the test function. The default function is gl.ALWAYS. @@ -205,7 +205,7 @@ export type CompareFunction = "NEVER" | "LESS" | "EQUAL" | "LEQUAL" | "GREATER" * * https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/stencilFunc */ -export type StencilFunc = "NEVER" | "LESS" | "EQUAL" | "LEQUAL" | "GREATER" | "NOTEQUAL" | "GEQUAL" | "ALWAYS"; +export type GLStencilFunc = "NEVER" | "LESS" | "EQUAL" | "LEQUAL" | "GREATER" | "NOTEQUAL" | "GEQUAL" | "ALWAYS"; /** * The WebGLRenderingContext.stencilOp() method of the WebGL API sets both the front and back-facing stencil test actions. @@ -221,4 +221,4 @@ export type StencilFunc = "NEVER" | "LESS" | "EQUAL" | "LEQUAL" | "GREATER" | "N * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/stencilOp */ -export type StencilOp = "KEEP" | "ZERO" | "REPLACE" | "INCR" | "INCR_WRAP" | "DECR" | "DECR_WRAP" | "INVERT"; +export type GLStencilOp = "KEEP" | "ZERO" | "REPLACE" | "INCR" | "INCR_WRAP" | "DECR" | "DECR_WRAP" | "INVERT"; diff --git a/src/data/IDrawArrays.ts b/src/data/IGLDrawArrays.ts similarity index 91% rename from src/data/IDrawArrays.ts rename to src/data/IGLDrawArrays.ts index 7dc397f..cb5ee59 100644 --- a/src/data/IDrawArrays.ts +++ b/src/data/IGLDrawArrays.ts @@ -3,7 +3,7 @@ * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/drawArrays */ -export interface IDrawArrays +export interface IGLDrawArrays { /** * 绘制顶点数量。 diff --git a/src/data/IDrawElements.ts b/src/data/IGLDrawElements.ts similarity index 80% rename from src/data/IDrawElements.ts rename to src/data/IGLDrawElements.ts index 3f36403..6ee9363 100644 --- a/src/data/IDrawElements.ts +++ b/src/data/IGLDrawElements.ts @@ -1,4 +1,4 @@ -export interface IDrawElements +export interface IGLDrawElements { /** * 默认渲染所有顶点索引。 diff --git a/src/data/IFramebuffer.ts b/src/data/IGLFramebuffer.ts similarity index 62% rename from src/data/IFramebuffer.ts rename to src/data/IGLFramebuffer.ts index f4631ca..fa500f2 100644 --- a/src/data/IFramebuffer.ts +++ b/src/data/IGLFramebuffer.ts @@ -1,4 +1,4 @@ -import { IPassDescriptor } from "./IPassDescriptor"; +import { IGLPassDescriptor } from "./IGLPassDescriptor"; /** * 等价于 IPassDescriptor 。 @@ -7,4 +7,4 @@ import { IPassDescriptor } from "./IPassDescriptor"; * * @deprecated 请使用 IPassDescriptor 。 */ -export interface IFramebuffer extends IPassDescriptor { } +export interface IGLFramebuffer extends IGLPassDescriptor { } diff --git a/src/data/IIndexBuffer.ts b/src/data/IGLIndexBuffer.ts similarity index 85% rename from src/data/IIndexBuffer.ts rename to src/data/IGLIndexBuffer.ts index f8447b7..d384afc 100644 --- a/src/data/IIndexBuffer.ts +++ b/src/data/IGLIndexBuffer.ts @@ -1,4 +1,4 @@ -import { BufferUsage } from "./IBuffer"; +import { GLBufferUsage } from "./IGLBuffer"; /** * WebGL元素缓冲,顶点索引缓冲。 @@ -8,7 +8,7 @@ import { BufferUsage } from "./IBuffer"; * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bindBuffer * */ -export interface IIndexBuffer +export interface IGLIndexBuffer { target: "ELEMENT_ARRAY_BUFFER"; @@ -24,7 +24,7 @@ export interface IIndexBuffer * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bufferData */ - usage?: BufferUsage; + usage?: GLBufferUsage; } /** @@ -46,4 +46,4 @@ export type IElementBufferSourceTypes = Uint16Array | Uint32Array | Uint8Array; * * @see https://developer.mozilla.org/zh-CN/docs/Web/API/WebGLRenderingContext/drawElements */ -export type IDrawElementType = "UNSIGNED_BYTE" | "UNSIGNED_SHORT" | "UNSIGNED_INT"; +export type IGLDrawElementType = "UNSIGNED_BYTE" | "UNSIGNED_SHORT" | "UNSIGNED_INT"; diff --git a/src/data/IGLPassDescriptor.ts b/src/data/IGLPassDescriptor.ts new file mode 100644 index 0000000..ef0db2f --- /dev/null +++ b/src/data/IGLPassDescriptor.ts @@ -0,0 +1,18 @@ +import { IGLRenderPassColorAttachment as IGLRenderPassColorAttachment } from "./IGLRenderPassColorAttachment"; +import { IGLRenderPassDepthStencilAttachment as IGLRenderPassDepthStencilAttachment } from "./IGLRenderPassDepthStencilAttachment"; + +/** + * WebGL渲染通道描述 + */ +export interface IGLPassDescriptor +{ + /** + * 颜色附件 + */ + colorAttachments?: IGLRenderPassColorAttachment[]; + + /** + * 深度模板附件。 + */ + depthStencilAttachment?: IGLRenderPassDepthStencilAttachment; +} \ No newline at end of file diff --git a/src/data/IPrimitiveState.ts b/src/data/IGLPrimitiveState.ts similarity index 85% rename from src/data/IPrimitiveState.ts rename to src/data/IGLPrimitiveState.ts index 8da9ae5..1d508ff 100644 --- a/src/data/IPrimitiveState.ts +++ b/src/data/IGLPrimitiveState.ts @@ -1,6 +1,6 @@ -import { ICullFace } from "./ICullFace"; +import { IGLCullFace } from "./IGLCullFace"; -export interface IPrimitiveState +export interface IGLPrimitiveState { /** * 图形拓扑结构。 @@ -18,9 +18,9 @@ export interface IPrimitiveState * A GLenum specifying the type primitive to render. Possible values are: * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/drawArrays */ - topology?: IDrawMode; + topology?: IGLDrawMode; - cullFace?: ICullFace; + cullFace?: IGLCullFace; } /** @@ -46,4 +46,4 @@ export interface IPrimitiveState * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/drawElements */ -export type IDrawMode = "POINTS" | "LINE_STRIP" | "LINE_LOOP" | "LINES" | "TRIANGLE_STRIP" | "TRIANGLE_FAN" | "TRIANGLES"; +export type IGLDrawMode = "POINTS" | "LINE_STRIP" | "LINE_LOOP" | "LINES" | "TRIANGLE_STRIP" | "TRIANGLE_FAN" | "TRIANGLES"; diff --git a/src/data/IQueryAction.ts b/src/data/IGLQueryAction.ts similarity index 92% rename from src/data/IQueryAction.ts rename to src/data/IGLQueryAction.ts index 7fabbab..a6efb33 100644 --- a/src/data/IQueryAction.ts +++ b/src/data/IGLQueryAction.ts @@ -3,7 +3,7 @@ * * 仅 WebGL2 支持。 */ -export interface IQueryAction +export interface IGLQueryAction { /** * 开始查询或者结束查询。 @@ -20,7 +20,7 @@ export interface IQueryAction * * 通过该对象获取查询结果。 */ - query: IQuery; + query: IGLQuery; } /** @@ -30,7 +30,7 @@ export interface IQueryAction * * 仅 WebGL2 支持。 */ -export interface IQuery +export interface IGLQuery { /** * 当前状态。 diff --git a/src/data/IReadPixels.ts b/src/data/IGLReadPixels.ts similarity index 58% rename from src/data/IReadPixels.ts rename to src/data/IGLReadPixels.ts index 78bac4f..615dc18 100644 --- a/src/data/IReadPixels.ts +++ b/src/data/IGLReadPixels.ts @@ -1,20 +1,20 @@ -import { AttachmentPoint } from "../gl/WebGLEnums"; -import { IFramebuffer } from "./IFramebuffer"; -import { ITextureDataType, ITextureFormat } from "./ITexture"; +import { GLAttachmentPoint } from "../gl/WebGLEnums"; +import { IGLFramebuffer } from "./IGLFramebuffer"; +import { IGLTextureDataType, IGLTextureFormat } from "./IGLTexture"; /** * 读取渲染缓冲区或者纹理视图中的像素值。 * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/readPixels */ -export interface IReadPixels +export interface IGLReadPixels { - frameBuffer: IFramebuffer; + frameBuffer: IGLFramebuffer; /** * 读取那个附件。 */ - attachmentPoint: AttachmentPoint; + attachmentPoint: GLAttachmentPoint; x: number, y: number, @@ -26,14 +26,14 @@ export interface IReadPixels * * 默认 "RGBA"。 */ - format?: ITextureFormat; + format?: IGLTextureFormat; /** * 数据类型。 * * 默认 "UNSIGNED_BYTE"。 */ - type?: ITextureDataType; + type?: IGLTextureDataType; dstData: ArrayBufferView, dstOffset: number diff --git a/src/data/IRenderObject.ts b/src/data/IGLRenderObject.ts similarity index 62% rename from src/data/IRenderObject.ts rename to src/data/IGLRenderObject.ts index aaa33e4..91bbbd6 100644 --- a/src/data/IRenderObject.ts +++ b/src/data/IGLRenderObject.ts @@ -1,46 +1,46 @@ import { LazyObject } from "../types"; -import { IDrawArrays } from "./IDrawArrays"; -import { IDrawElements } from "./IDrawElements"; -import { IRenderPipeline } from "./IRenderPipeline"; -import { IScissor } from "./IScissor"; -import { ITransformFeedback } from "./ITransformFeedback"; -import { IUniforms } from "./IUniforms"; -import { IVertexArrayObject } from "./IVertexArrayObject"; -import { IViewport } from "./IViewport"; +import { IGLDrawArrays } from "./IGLDrawArrays"; +import { IGLDrawElements } from "./IGLDrawElements"; +import { IGLRenderPipeline } from "./IGLRenderPipeline"; +import { IGLScissor } from "./IGLScissor"; +import { IGLTransformFeedback } from "./IGLTransformFeedback"; +import { IGLUniforms } from "./IGLUniforms"; +import { IGLVertexArrayObject } from "./IGLVertexArrayObject"; +import { IGLViewport } from "./IGLViewport"; /** * 渲染原子(该对象会收集一切渲染所需数据以及参数) */ -export interface IRenderObject +export interface IGLRenderObject { /** * 渲染程序 */ - pipeline: IRenderPipeline; + pipeline: IGLRenderPipeline; /** * 顶点属性以及索引数据。 */ - vertexArray?: IVertexArrayObject; + vertexArray?: IGLVertexArrayObject; /** * Uniform渲染数据 */ - uniforms?: LazyObject; + uniforms?: LazyObject; /** * 绘制一定数量顶点。 * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/drawArrays */ - drawArrays?: IDrawArrays; + drawArrays?: IGLDrawArrays; /** * 绘制一定数量顶点索引。 * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/drawElements */ - drawElements?: IDrawElements; + drawElements?: IGLDrawElements; /** * 视窗,显示在画布上的区域。 @@ -49,7 +49,7 @@ export interface IRenderObject * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/viewport */ - viewport?: IViewport; + viewport?: IGLViewport; /** * 剪刀盒。 @@ -58,12 +58,12 @@ export interface IRenderObject * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/scissor */ - scissor?: IScissor; + scissor?: IGLScissor; /** * 回写顶点着色器中输出到缓冲区。 * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/bindTransformFeedback */ - transformFeedback?: ITransformFeedback; + transformFeedback?: IGLTransformFeedback; } diff --git a/src/data/IRenderPass.ts b/src/data/IGLRenderPass.ts similarity index 55% rename from src/data/IRenderPass.ts rename to src/data/IGLRenderPass.ts index 396c388..347048c 100644 --- a/src/data/IRenderPass.ts +++ b/src/data/IGLRenderPass.ts @@ -1,7 +1,7 @@ import { IRenderPass } from "@feng3d/renderer-common"; -import { IPassDescriptor } from "./IPassDescriptor"; -import { IQueryAction } from "./IQueryAction"; -import { IRenderObject } from "./IRenderObject"; +import { IGLPassDescriptor } from "./IGLPassDescriptor"; +import { IGLQueryAction } from "./IGLQueryAction"; +import { IGLRenderObject } from "./IGLRenderObject"; /** * WebGL渲染通道 @@ -13,10 +13,10 @@ export interface IGLRenderPass extends IRenderPass /** * WebGL渲染通道描述 */ - descriptor?: IPassDescriptor; + descriptor?: IGLPassDescriptor; /** * 渲染对象列表,默认为 []。 */ - renderObjects?: (IRenderObject | IQueryAction)[]; + renderObjects?: (IGLRenderObject | IGLQueryAction)[]; } diff --git a/src/data/IRenderPassColorAttachment.ts b/src/data/IGLRenderPassColorAttachment.ts similarity index 77% rename from src/data/IRenderPassColorAttachment.ts rename to src/data/IGLRenderPassColorAttachment.ts index f0c2557..b9d43b4 100644 --- a/src/data/IRenderPassColorAttachment.ts +++ b/src/data/IGLRenderPassColorAttachment.ts @@ -1,7 +1,7 @@ -import { IRenderbuffer } from "./IRenderbuffer"; -import { ITextureView } from "./ITexture"; +import { IGLRenderbuffer } from "./IGLRenderbuffer"; +import { IGLTextureView } from "./IGLTexture"; -export interface IRenderPassColorAttachment +export interface IGLRenderPassColorAttachment { /** * 颜色附件视图。 @@ -11,7 +11,7 @@ export interface IRenderPassColorAttachment * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/framebufferRenderbuffer * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/framebufferTexture2D */ - view?: IAttachmentView; + view?: IGLAttachmentView; /** * 清除后填充值。 @@ -32,4 +32,4 @@ export interface IRenderPassColorAttachment loadOp?: "load" | "clear"; } -export type IAttachmentView = IRenderbuffer | ITextureView; +export type IGLAttachmentView = IGLRenderbuffer | IGLTextureView; diff --git a/src/data/IRenderPassDepthStencilAttachment.ts b/src/data/IGLRenderPassDepthStencilAttachment.ts similarity index 89% rename from src/data/IRenderPassDepthStencilAttachment.ts rename to src/data/IGLRenderPassDepthStencilAttachment.ts index 9b3457f..00d3427 100644 --- a/src/data/IRenderPassDepthStencilAttachment.ts +++ b/src/data/IGLRenderPassDepthStencilAttachment.ts @@ -1,9 +1,9 @@ -import { IAttachmentView } from "./IRenderPassColorAttachment"; +import { IGLAttachmentView } from "./IGLRenderPassColorAttachment"; /** * 深度模板附件。 */ -export interface IRenderPassDepthStencilAttachment +export interface IGLRenderPassDepthStencilAttachment { /** * 深度附件视图。 @@ -13,7 +13,7 @@ export interface IRenderPassDepthStencilAttachment * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/framebufferRenderbuffer * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/framebufferTexture2D */ - view?: IAttachmentView; + view?: IGLAttachmentView; /** * 清除后填充深度值。 diff --git a/src/data/IRenderPipeline.ts b/src/data/IGLRenderPipeline.ts similarity index 76% rename from src/data/IRenderPipeline.ts rename to src/data/IGLRenderPipeline.ts index aca7ff2..278662b 100644 --- a/src/data/IRenderPipeline.ts +++ b/src/data/IGLRenderPipeline.ts @@ -1,16 +1,16 @@ -import { IColorTargetState } from "./IColorTargetState"; -import { IDepthStencilState } from "./IDepthStencilState"; -import { IPrimitiveState } from "./IPrimitiveState"; +import { IGLColorTargetState } from "./IGLColorTargetState"; +import { IGLDepthStencilState } from "./IGLDepthStencilState"; +import { IGLPrimitiveState } from "./IGLPrimitiveState"; /** * @deprecated 请使用 `IRenderPipeline` 。 */ -export type IProgram = IRenderPipeline; +export type IProgram = IGLRenderPipeline; /** * shader */ -export interface IRenderPipeline +export interface IGLRenderPipeline { /** * 顶点着色器代码 @@ -32,12 +32,12 @@ export interface IRenderPipeline /** * 图元拓扑结构。 */ - primitive?: IPrimitiveState; + primitive?: IGLPrimitiveState; /** * 描述可选的深度模板的测试、运算以及偏差。 */ - depthStencil?: IDepthStencilState; + depthStencil?: IGLDepthStencilState; /** * 是否丢弃后续光栅化阶段。 @@ -81,5 +81,5 @@ export interface IFragmentState /** * 定义了该管道写入的颜色目标的格式和行为。 */ - targets?: IColorTargetState[] + targets?: IGLColorTargetState[] } \ No newline at end of file diff --git a/src/data/IRenderbuffer.ts b/src/data/IGLRenderbuffer.ts similarity index 92% rename from src/data/IRenderbuffer.ts rename to src/data/IGLRenderbuffer.ts index 451453f..913c71d 100644 --- a/src/data/IRenderbuffer.ts +++ b/src/data/IGLRenderbuffer.ts @@ -4,7 +4,7 @@ * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/renderbufferStorage * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/renderbufferStorageMultisample */ -export interface IRenderbuffer +export interface IGLRenderbuffer { /** * 采用次数。 @@ -18,7 +18,7 @@ export interface IRenderbuffer /** * 渲染缓冲区内部格式。 */ - internalformat: RenderbufferInternalformat, + internalformat: GLRenderbufferInternalformat, /** * 宽度。 @@ -94,7 +94,7 @@ export interface IRenderbuffer * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/renderbufferStorage */ -export type RenderbufferInternalformat = "RGBA4" | "RGB565" | "RGB5_A1" | "DEPTH_COMPONENT16" | "STENCIL_INDEX8" | "DEPTH_STENCIL" // WebGL1 +export type GLRenderbufferInternalformat = "RGBA4" | "RGB565" | "RGB5_A1" | "DEPTH_COMPONENT16" | "STENCIL_INDEX8" | "DEPTH_STENCIL" // WebGL1 | "R8" | "R8UI" | "R8I" | "R16UI" | "R16I" | "R32UI" | "R32I" | "RG8" | "RG8UI" | "RG8I" // WebGL2 | "RG16UI" | "RG16I" | "RG32UI" | "RG32I" | "RGB8" | "RGBA8" | "SRGB8_ALPHA8" | "RGB10_A2" // WebGL2 | "RGBA8UI" | "RGBA8I" | "RGB10_A2UI" | "RGBA16UI" | "RGBA16I" | "RGBA32I" | "RGBA32UI" // WebGL2 diff --git a/src/data/IRenderingContext.ts b/src/data/IGLRenderingContext.ts similarity index 79% rename from src/data/IRenderingContext.ts rename to src/data/IGLRenderingContext.ts index e69bd9a..5eefa50 100644 --- a/src/data/IRenderingContext.ts +++ b/src/data/IGLRenderingContext.ts @@ -3,7 +3,7 @@ * * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext */ -export interface IRenderingContext extends WebGLContextAttributes +export interface IGLRenderingContext extends WebGLContextAttributes { /** * 画布编号。 diff --git a/src/data/ISampler.ts b/src/data/IGLSampler.ts similarity index 78% rename from src/data/ISampler.ts rename to src/data/IGLSampler.ts index 4b91e5a..784a87d 100644 --- a/src/data/ISampler.ts +++ b/src/data/IGLSampler.ts @@ -1,26 +1,26 @@ -import { CompareFunction } from "./IDepthStencilState"; +import { GLCompareFunction } from "./IGLDepthStencilState"; -export interface ISampler +export interface IGLSampler { - minFilter?: TextureMinFilter; + minFilter?: GLTextureMinFilter; magFilter?: TextureMagFilter; /** * 表示x轴的纹理的回环方式,就是当纹理的宽度小于需要贴图的平面的宽度的时候,平面剩下的部分应该p以何种方式贴图的问题。 */ - wrapS?: TextureWrap; + wrapS?: GLTextureWrap; /** * 表示y轴的纹理回环方式。 magFilter和minFilter表示过滤的方式。 */ - wrapT?: TextureWrap; + wrapT?: GLTextureWrap; /** * 表示y轴的纹理回环方式。 magFilter和minFilter表示过滤的方式。 */ - wrapR?: TextureWrap; + wrapR?: GLTextureWrap; /** * 各向异性过滤。使用各向异性过滤能够使纹理的效果更好,但是会消耗更多的内存、CPU、GPU时间。默认为1。 @@ -41,7 +41,7 @@ export interface ISampler /** * 比较函数。 */ - compare?: CompareFunction; + compare?: GLCompareFunction; } /** @@ -68,7 +68,7 @@ export type TextureMagFilter = "LINEAR" | "NEAREST"; * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texParameter */ -export type TextureMinFilter = "LINEAR" | "NEAREST" | "NEAREST_MIPMAP_NEAREST" | "LINEAR_MIPMAP_NEAREST" | "NEAREST_MIPMAP_LINEAR" | "LINEAR_MIPMAP_LINEAR"; +export type GLTextureMinFilter = "LINEAR" | "NEAREST" | "NEAREST_MIPMAP_NEAREST" | "LINEAR_MIPMAP_NEAREST" | "NEAREST_MIPMAP_LINEAR" | "LINEAR_MIPMAP_LINEAR"; /** * 纹理坐标s包装函数枚举 @@ -80,4 +80,4 @@ export type TextureMinFilter = "LINEAR" | "NEAREST" | "NEAREST_MIPMAP_NEAREST" | * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texParameter */ -export type TextureWrap = "REPEAT" | "CLAMP_TO_EDGE" | "MIRRORED_REPEAT"; \ No newline at end of file +export type GLTextureWrap = "REPEAT" | "CLAMP_TO_EDGE" | "MIRRORED_REPEAT"; \ No newline at end of file diff --git a/src/data/ISamplerTexture.ts b/src/data/IGLSamplerTexture.ts similarity index 35% rename from src/data/ISamplerTexture.ts rename to src/data/IGLSamplerTexture.ts index 6266400..2536358 100644 --- a/src/data/ISamplerTexture.ts +++ b/src/data/IGLSamplerTexture.ts @@ -1,17 +1,17 @@ -import { ISampler } from "./ISampler"; -import { ITexture } from "./ITexture"; +import { IGLSampler } from "./IGLSampler"; +import { IGLTexture } from "./IGLTexture"; /** * 采样纹理。 * * 采样器与纹理。 */ -export interface ISamplerTexture +export interface IGLSamplerTexture { - texture: ITexture; + texture: IGLTexture; /** * 采样器。 */ - sampler?: ISampler; + sampler?: IGLSampler; } \ No newline at end of file diff --git a/src/data/IScissor.ts b/src/data/IGLScissor.ts similarity index 94% rename from src/data/IScissor.ts rename to src/data/IGLScissor.ts index 5a8ebde..00d6d81 100644 --- a/src/data/IScissor.ts +++ b/src/data/IGLScissor.ts @@ -5,7 +5,7 @@ * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/scissor */ -export interface IScissor +export interface IGLScissor { /** * 剪刀盒X轴最小值(像素)。 diff --git a/src/data/ITexture.ts b/src/data/IGLTexture.ts similarity index 93% rename from src/data/ITexture.ts rename to src/data/IGLTexture.ts index 2bd2369..3a02528 100644 --- a/src/data/ITexture.ts +++ b/src/data/IGLTexture.ts @@ -1,12 +1,12 @@ /** * 纹理视图。 */ -export interface ITextureView +export interface IGLTextureView { /** * 纹理。 */ - texture: ITexture, + texture: IGLTexture, /** * mipmap级别。 @@ -22,21 +22,21 @@ export interface ITextureView /** * 纹理 */ -export interface ITexture +export interface IGLTexture { /** * 纹理绑定点。 * * 默认"TEXTURE_2D"。 */ - target?: ITextureTarget; + target?: GLTextureTarget; /** * 纹理资源。 * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texImage2D */ - sources?: ITextureSource[]; + sources?: IGLTextureSource[]; /** * 初始纹理时指定纹理存储的各个级别。 @@ -70,27 +70,27 @@ export interface ITexture * * 默认 "RGBA"。 */ - internalformat?: ITextureInternalFormat, + internalformat?: IGLTextureInternalFormat, /** * 纹理格式。 * * 默认 "RGBA"。 */ - format?: ITextureFormat; + format?: IGLTextureFormat; /** * 数据类型。 * * 默认 "UNSIGNED_BYTE"。 */ - type?: ITextureDataType; + type?: IGLTextureDataType; } /** * 纹理资源。 */ -export type ITextureSource = IImageSource | IBufferSource; +export type IGLTextureSource = IGLImageSource | IGLBufferSource; /** * 纹理图片资源。 @@ -98,7 +98,7 @@ export type ITextureSource = IImageSource | IBufferSource; * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texImage2D * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/texImage3D */ -export interface IImageSource +export interface IGLImageSource { /** * 当上传CubeMap纹理数据时指定位置。 @@ -123,7 +123,7 @@ export interface IImageSource * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texImage2D */ -export interface IBufferSource +export interface IGLBufferSource { /** * 当上传CubeMap纹理数据时指定位置。 @@ -419,14 +419,14 @@ export interface ITexturePixelStore * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bindTexture */ -export type ITextureTarget = "TEXTURE_2D" | "TEXTURE_CUBE_MAP" | "TEXTURE_3D" | "TEXTURE_2D_ARRAY"; +export type GLTextureTarget = "TEXTURE_2D" | "TEXTURE_CUBE_MAP" | "TEXTURE_3D" | "TEXTURE_2D_ARRAY"; /** * internalformat format type * * @see https://registry.khronos.org/webgl/specs/latest/2.0/#TEXTURE_TYPES_FORMATS_FROM_DOM_ELEMENTS_TABLE */ -export type ITextureTypes = +export type GLTextureTypes = | { internalformat: "RGB", format: "RGB", type: "UNSIGNED_BYTE" | "UNSIGNED_SHORT_5_6_5" } | { internalformat: "RGBA", format: "RGBA", type: "UNSIGNED_BYTE" | "UNSIGNED_SHORT_4_4_4_4" | "UNSIGNED_SHORT_5_5_5_1" } | { internalformat: "LUMINANCE_ALPHA", format: "LUMINANCE_ALPHA", type: "UNSIGNED_BYTE" } @@ -460,6 +460,6 @@ export type ITextureTypes = | { internalformat: "DEPTH_COMPONENT16", format: "DEPTH_COMPONENT", type: "UNSIGNED_SHORT", } ; -export type ITextureInternalFormat = ITextureTypes["internalformat"]; -export type ITextureFormat = ITextureTypes["format"]; -export type ITextureDataType = ITextureTypes["type"]; +export type IGLTextureInternalFormat = GLTextureTypes["internalformat"]; +export type IGLTextureFormat = GLTextureTypes["format"]; +export type IGLTextureDataType = GLTextureTypes["type"]; diff --git a/src/data/ITransformFeedback.ts b/src/data/IGLTransformFeedback.ts similarity index 48% rename from src/data/ITransformFeedback.ts rename to src/data/IGLTransformFeedback.ts index d6d48f2..a9a32a4 100644 --- a/src/data/ITransformFeedback.ts +++ b/src/data/IGLTransformFeedback.ts @@ -1,19 +1,19 @@ -import { IBuffer } from "./IBuffer"; +import { IGLBuffer } from "./IGLBuffer"; /** * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/createTransformFeedback */ -export interface ITransformFeedback +export interface IGLTransformFeedback { /** * 绑定缓冲区列表。 */ - bindBuffers: ITransformFeedbacBindBuffer[]; + bindBuffers: IGLTransformFeedbacBindBuffer[]; } -export interface ITransformFeedbacBindBuffer +export interface IGLTransformFeedbacBindBuffer { index: number; - buffer: IBuffer; + buffer: IGLBuffer; } \ No newline at end of file diff --git a/src/data/IUniformInfo.ts b/src/data/IGLUniformInfo.ts similarity index 83% rename from src/data/IUniformInfo.ts rename to src/data/IGLUniformInfo.ts index 3d80d69..cf059c5 100644 --- a/src/data/IUniformInfo.ts +++ b/src/data/IGLUniformInfo.ts @@ -1,16 +1,16 @@ -import { IWebGLUniformType } from "../const/WebGLUniformType"; +import { IGLUniformType } from "../const/WebGLUniformType"; /** * WebGL统一变量 */ -export interface IUniformInfo +export interface IGLUniformInfo { /** * 名称。 */ name: string; - type: IWebGLUniformType; + type: IGLUniformType; /** * 是否纹理。 diff --git a/src/data/IGLUniforms.ts b/src/data/IGLUniforms.ts new file mode 100644 index 0000000..ff2cac4 --- /dev/null +++ b/src/data/IGLUniforms.ts @@ -0,0 +1,20 @@ +import { IGLBuffer } from "./IGLBuffer"; +import { IGLSamplerTexture } from "./IGLSamplerTexture"; + +/** + * Uniform 类型 + */ +export type IGLUniformType = IGLSamplerTexture | IGLSamplerTexture[] | number | number[] | Float32Array | (number[] | Float32Array)[] | Int32Array | IGLUniformBuffer | IGLUniforms; + +export interface IGLUniformBuffer extends IGLBuffer +{ + target: "UNIFORM_BUFFER"; +} + +/** + * Uniform 数据 + */ +export interface IGLUniforms +{ + [key: string]: IGLUniformType; +} diff --git a/src/data/IVertexArrayObject.ts b/src/data/IGLVertexArrayObject.ts similarity index 30% rename from src/data/IVertexArrayObject.ts rename to src/data/IGLVertexArrayObject.ts index c648a2c..d433ca2 100644 --- a/src/data/IVertexArrayObject.ts +++ b/src/data/IGLVertexArrayObject.ts @@ -1,15 +1,15 @@ -import { IIndexBuffer } from "./IIndexBuffer"; -import { IVertexAttributes } from "./IVertexAttributes"; +import { IGLIndexBuffer } from "./IGLIndexBuffer"; +import { IGLVertexAttributes } from "./IGLVertexAttributes"; -export interface IVertexArrayObject +export interface IGLVertexArrayObject { /** * 顶点索引缓冲 */ - index?: IIndexBuffer; + index?: IGLIndexBuffer; /** * 顶点属性数据列表 */ - vertices: IVertexAttributes; + vertices: IGLVertexAttributes; } \ No newline at end of file diff --git a/src/data/IVertexAttribute.ts b/src/data/IGLVertexAttribute.ts similarity index 95% rename from src/data/IVertexAttribute.ts rename to src/data/IGLVertexAttribute.ts index 030aa0c..817d7f8 100644 --- a/src/data/IVertexAttribute.ts +++ b/src/data/IGLVertexAttribute.ts @@ -1,4 +1,4 @@ -import { IBuffer } from "./IBuffer"; +import { IGLBuffer } from "./IGLBuffer"; /** * 顶点属性数据。 @@ -6,7 +6,7 @@ import { IBuffer } from "./IBuffer"; * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/vertexAttribPointer * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/vertexAttribIPointer */ -export interface IVertexAttribute +export interface IGLVertexAttribute { /** * WebGL缓冲区 @@ -51,7 +51,7 @@ export interface IVertexAttribute vertexSize?: number; } -export interface IVertexBuffer extends IBuffer +export interface IVertexBuffer extends IGLBuffer { target: "ARRAY_BUFFER"; } diff --git a/src/data/IGLVertexAttributes.ts b/src/data/IGLVertexAttributes.ts new file mode 100644 index 0000000..b004dcf --- /dev/null +++ b/src/data/IGLVertexAttributes.ts @@ -0,0 +1,9 @@ +import { IGLVertexAttribute } from "./IGLVertexAttribute"; + +/** + * 顶点属性数据映射。 + */ +export interface IGLVertexAttributes +{ + [name: string]: IGLVertexAttribute; +} \ No newline at end of file diff --git a/src/data/IViewport.ts b/src/data/IGLViewport.ts similarity index 91% rename from src/data/IViewport.ts rename to src/data/IGLViewport.ts index 764f720..66bcf5d 100644 --- a/src/data/IViewport.ts +++ b/src/data/IGLViewport.ts @@ -1,7 +1,7 @@ /** * 视窗。 */ -export interface IViewport +export interface IGLViewport { /** * 视窗X轴最小值(像素)。 diff --git a/src/data/IPassDescriptor.ts b/src/data/IPassDescriptor.ts deleted file mode 100644 index 441b28c..0000000 --- a/src/data/IPassDescriptor.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { IRenderPassColorAttachment } from "./IRenderPassColorAttachment"; -import { IRenderPassDepthStencilAttachment } from "./IRenderPassDepthStencilAttachment"; - -/** - * WebGL渲染通道描述 - */ -export interface IPassDescriptor -{ - /** - * 颜色附件 - */ - colorAttachments?: IRenderPassColorAttachment[]; - - /** - * 深度模板附件。 - */ - depthStencilAttachment?: IRenderPassDepthStencilAttachment; -} \ No newline at end of file diff --git a/src/data/IUniforms.ts b/src/data/IUniforms.ts deleted file mode 100644 index ac209e3..0000000 --- a/src/data/IUniforms.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { IBuffer } from "./IBuffer"; -import { ISamplerTexture } from "./ISamplerTexture"; - -/** - * Uniform 类型 - */ -export type IUniformType = ISamplerTexture | ISamplerTexture[] | number | number[] | Float32Array | (number[] | Float32Array)[] | Int32Array | IUniformBuffer | IUniforms; - -export interface IUniformBuffer extends IBuffer -{ - target: "UNIFORM_BUFFER"; -} - -/** - * Uniform 数据 - */ -export interface IUniforms -{ - [key: string]: IUniformType; -} diff --git a/src/data/IVertexAttributes.ts b/src/data/IVertexAttributes.ts deleted file mode 100644 index b431df2..0000000 --- a/src/data/IVertexAttributes.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { IVertexAttribute } from "./IVertexAttribute"; - -/** - * 顶点属性数据映射。 - */ -export interface IVertexAttributes -{ - [name: string]: IVertexAttribute; -} \ No newline at end of file diff --git a/src/defaults/defaultWebGLCanvasContext.ts b/src/defaults/defaultWebGLCanvasContext.ts index 25c83a2..001f1e5 100644 --- a/src/defaults/defaultWebGLCanvasContext.ts +++ b/src/defaults/defaultWebGLCanvasContext.ts @@ -1,9 +1,9 @@ -import { IRenderingContext } from "../data/IRenderingContext"; +import { IGLRenderingContext } from "../data/IGLRenderingContext"; /** * 默认WebGL上下文信息。 */ -export const defaultCanvasContext: IRenderingContext = Object.freeze({ +export const defaultCanvasContext: IGLRenderingContext = Object.freeze({ contextId: "webgl2", depth: true, stencil: true, diff --git a/src/gl/WebGLEnums.ts b/src/gl/WebGLEnums.ts index 17ed2e8..c48b391 100644 --- a/src/gl/WebGLEnums.ts +++ b/src/gl/WebGLEnums.ts @@ -1,4 +1,4 @@ -import { TextureMagFilter, TextureMinFilter, TextureWrap } from "../data/ISampler"; +import { TextureMagFilter, GLTextureMinFilter, GLTextureWrap } from "../data/IGLSampler"; /** * A GLenum specifying which WebGL capability to enable. Possible values: @@ -100,17 +100,17 @@ export interface TexParameteri extends TexParameteri_WebGL2 /** * Texture minification filter */ - TEXTURE_MIN_FILTER: TextureMinFilter; + TEXTURE_MIN_FILTER: GLTextureMinFilter; /** * Wrapping function for texture coordinate s */ - TEXTURE_WRAP_S: TextureWrap; + TEXTURE_WRAP_S: GLTextureWrap; /** * Wrapping function for texture coordinate t */ - TEXTURE_WRAP_T: TextureWrap; + TEXTURE_WRAP_T: GLTextureWrap; } /** @@ -163,7 +163,7 @@ export interface TexParameteri_WebGL2 /** * Wrapping function for texture coordinate r */ - TEXTURE_WRAP_R: TextureWrap; + TEXTURE_WRAP_R: GLTextureWrap; } /** @@ -336,7 +336,7 @@ export type PrecisionType = "LOW_FLOAT" | "MEDIUM_FLOAT" | "HIGH_FLOAT" | "LOW_I * gl.DEPTH_STENCIL_ATTACHMENT: depth and stencil buffer. * gl.COLOR_ATTACHMENT1 gl.COLOR_ATTACHMENT2 gl.COLOR_ATTACHMENT3 gl.COLOR_ATTACHMENT4 gl.COLOR_ATTACHMENT5 gl.COLOR_ATTACHMENT6 gl.COLOR_ATTACHMENT7 gl.COLOR_ATTACHMENT8 gl.COLOR_ATTACHMENT9 gl.COLOR_ATTACHMENT10 gl.COLOR_ATTACHMENT11 gl.COLOR_ATTACHMENT12 gl.COLOR_ATTACHMENT13 gl.COLOR_ATTACHMENT14 gl.COLOR_ATTACHMENT15 */ -export type AttachmentPoint = "COLOR_ATTACHMENT0" | "DEPTH_ATTACHMENT" | "STENCIL_ATTACHMENT" +export type GLAttachmentPoint = "COLOR_ATTACHMENT0" | "DEPTH_ATTACHMENT" | "STENCIL_ATTACHMENT" | "DEPTH_STENCIL_ATTACHMENT" | "COLOR_ATTACHMENT1" | "COLOR_ATTACHMENT2" | "COLOR_ATTACHMENT3" | "COLOR_ATTACHMENT4" | "COLOR_ATTACHMENT5" | "COLOR_ATTACHMENT6" | "COLOR_ATTACHMENT7" | "COLOR_ATTACHMENT8" | "COLOR_ATTACHMENT9" | "COLOR_ATTACHMENT10" diff --git a/src/index.ts b/src/index.ts index 955974c..010bdde 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,26 +1,26 @@ export * from "./WebGL"; -export * from "./data/IBlitFramebuffer"; -export * from "./data/IBuffer"; -export * from "./data/ICapabilities"; -export * from "./data/ICopyBuffer"; -export * from "./data/IFramebuffer"; -export * from "./data/IIndexBuffer"; -export * from "./data/IPassDescriptor"; -export * from "./data/IPrimitiveState"; -export * from "./data/IQueryAction"; -export * from "./data/IRenderObject"; -export * from "./data/IRenderPass"; -export * from "./data/IRenderPipeline"; -export * from "./data/IRenderbuffer"; -export * from "./data/IRenderingContext"; -export * from "./data/ISampler"; -export * from "./data/ISamplerTexture"; -export * from "./data/ITexture"; -export * from "./data/ITransformFeedback"; -export * from "./data/IUniforms"; -export * from "./data/IVertexArrayObject"; -export * from "./data/IVertexAttribute"; -export * from "./data/IVertexAttributes"; +export * from "./data/IGLBlitFramebuffer"; +export * from "./data/IGLBuffer"; +export * from "./data/IGLCapabilities"; +export * from "./data/IGLCopyBuffer"; +export * from "./data/IGLFramebuffer"; +export * from "./data/IGLIndexBuffer"; +export * from "./data/IGLPassDescriptor"; +export * from "./data/IGLPrimitiveState"; +export * from "./data/IGLQueryAction"; +export * from "./data/IGLRenderObject"; +export * from "./data/IGLRenderPass"; +export * from "./data/IGLRenderPipeline"; +export * from "./data/IGLRenderbuffer"; +export * from "./data/IGLRenderingContext"; +export * from "./data/IGLSampler"; +export * from "./data/IGLSamplerTexture"; +export * from "./data/IGLTexture"; +export * from "./data/IGLTransformFeedback"; +export * from "./data/IGLUniforms"; +export * from "./data/IGLVertexArrayObject"; +export * from "./data/IGLVertexAttribute"; +export * from "./data/IGLVertexAttributes"; export * from "./gl/WebGLEnums"; export * from "./runs/runUniforms"; export * from "./shader/Macro"; diff --git a/src/runs/runBlitFramebuffer.ts b/src/runs/runBlitFramebuffer.ts index bb33fbd..ce8edfc 100644 --- a/src/runs/runBlitFramebuffer.ts +++ b/src/runs/runBlitFramebuffer.ts @@ -1,7 +1,7 @@ import { getFramebuffer } from "../caches/getFramebuffer"; -import { IBlitFramebuffer } from "../data/IBlitFramebuffer"; +import { IGLBlitFramebuffer } from "../data/IGLBlitFramebuffer"; -export function runBlitFramebuffer(gl: WebGLRenderingContext, blitFramebuffer: IBlitFramebuffer) +export function runBlitFramebuffer(gl: WebGLRenderingContext, blitFramebuffer: IGLBlitFramebuffer) { const { read, draw, blitFramebuffers } = blitFramebuffer; diff --git a/src/runs/runColorTargetStates.ts b/src/runs/runColorTargetStates.ts index 6fba441..569a9f4 100644 --- a/src/runs/runColorTargetStates.ts +++ b/src/runs/runColorTargetStates.ts @@ -1,7 +1,7 @@ -import { IBlendComponent, IBlendState } from "../data/IBlendState"; -import { IColorTargetState, IWriteMask } from "../data/IColorTargetState"; +import { IGLBlendComponent, IGLBlendState } from "../data/IGLBlendState"; +import { IGLColorTargetState, IGLWriteMask } from "../data/IGLColorTargetState"; -export function runColorTargetStates(gl: WebGLRenderingContext, targets?: IColorTargetState[]) +export function runColorTargetStates(gl: WebGLRenderingContext, targets?: IGLColorTargetState[]) { // const colorMask = targets?.[0]?.writeMask || defaultWriteMask; @@ -26,8 +26,8 @@ export function runColorTargetStates(gl: WebGLRenderingContext, targets?: IColor } } -const defaultWriteMask: IWriteMask = Object.freeze([true, true, true, true]) as any; -const defaultBlendComponent: IBlendComponent = Object.freeze({ operation: "FUNC_ADD", srcFactor: "SRC_ALPHA", dstFactor: "ONE_MINUS_SRC_ALPHA" }); -const defaultBlendState: IBlendState = Object.freeze({ color: defaultBlendComponent, alpha: defaultBlendComponent }); -const defaultColorTargetState: IColorTargetState = Object.freeze({ writeMask: defaultWriteMask, blend: defaultBlendState }); -export const defaultColorTargetStates: IColorTargetState[] = Object.freeze([defaultColorTargetState]) as any; \ No newline at end of file +const defaultWriteMask: IGLWriteMask = Object.freeze([true, true, true, true]) as any; +const defaultBlendComponent: IGLBlendComponent = Object.freeze({ operation: "FUNC_ADD", srcFactor: "SRC_ALPHA", dstFactor: "ONE_MINUS_SRC_ALPHA" }); +const defaultBlendState: IGLBlendState = Object.freeze({ color: defaultBlendComponent, alpha: defaultBlendComponent }); +const defaultColorTargetState: IGLColorTargetState = Object.freeze({ writeMask: defaultWriteMask, blend: defaultBlendState }); +export const defaultColorTargetStates: IGLColorTargetState[] = Object.freeze([defaultColorTargetState]) as any; \ No newline at end of file diff --git a/src/runs/runCopyBuffer.ts b/src/runs/runCopyBuffer.ts index a8cdb95..aa4c582 100644 --- a/src/runs/runCopyBuffer.ts +++ b/src/runs/runCopyBuffer.ts @@ -1,7 +1,7 @@ import { getWebGLBuffer } from "../caches/getWebGLBuffer"; -import { ICopyBuffer } from "../data/ICopyBuffer"; +import { IGLCopyBuffer } from "../data/IGLCopyBuffer"; -export function runCopyBuffer(gl: WebGLRenderingContext, copyBuffer: ICopyBuffer) +export function runCopyBuffer(gl: WebGLRenderingContext, copyBuffer: IGLCopyBuffer) { if (gl instanceof WebGL2RenderingContext) { diff --git a/src/runs/runDepthState.ts b/src/runs/runDepthState.ts index 3b48ef3..0cf91f1 100644 --- a/src/runs/runDepthState.ts +++ b/src/runs/runDepthState.ts @@ -1,6 +1,6 @@ -import { IDepthState } from "../data/IDepthStencilState"; +import { IGLDepthState } from "../data/IGLDepthStencilState"; -export function runDepthState(gl: WebGLRenderingContext, depth: IDepthState) +export function runDepthState(gl: WebGLRenderingContext, depth: IGLDepthState) { const { depthtest, depthCompare, depthWriteEnabled, depthBias } = { ...defaultDepthState, ...depth }; @@ -30,5 +30,5 @@ export function runDepthState(gl: WebGLRenderingContext, depth: IDepthState) } } -export const defaultDepthState: IDepthState = { depthtest: false, depthWriteEnabled: true, depthCompare: "LESS" }; +export const defaultDepthState: IGLDepthState = { depthtest: false, depthWriteEnabled: true, depthCompare: "LESS" }; Object.freeze(defaultDepthState); \ No newline at end of file diff --git a/src/runs/runDepthStencilState.ts b/src/runs/runDepthStencilState.ts index 83fc653..33f9669 100644 --- a/src/runs/runDepthStencilState.ts +++ b/src/runs/runDepthStencilState.ts @@ -1,10 +1,10 @@ -import { IDepthStencilState } from "../data/IDepthStencilState"; +import { IGLDepthStencilState } from "../data/IGLDepthStencilState"; import { defaultDepthState, runDepthState } from "./runDepthState"; import { defaultStencilState, runStencilState } from "./runStencilState"; -export const defaultDepthStencilState: IDepthStencilState = Object.freeze({ depth: defaultDepthState, stencil: defaultStencilState }); +export const defaultDepthStencilState: IGLDepthStencilState = Object.freeze({ depth: defaultDepthState, stencil: defaultStencilState }); -export function runDepthStencilState(gl: WebGLRenderingContext, depthStencil?: IDepthStencilState) +export function runDepthStencilState(gl: WebGLRenderingContext, depthStencil?: IGLDepthStencilState) { runDepthState(gl, depthStencil?.depth || defaultDepthStencilState.depth); runStencilState(gl, depthStencil?.stencil || defaultDepthStencilState.stencil); diff --git a/src/runs/runDrawCall.ts b/src/runs/runDrawCall.ts index 3b481dd..e1fef68 100644 --- a/src/runs/runDrawCall.ts +++ b/src/runs/runDrawCall.ts @@ -1,14 +1,14 @@ import { getWebGLBuffer } from "../caches/getWebGLBuffer"; import { ElementTypeMap } from "../const/WebGLUniformType"; -import { IDrawArrays } from "../data/IDrawArrays"; -import { IDrawElements } from "../data/IDrawElements"; -import { IIndexBuffer } from "../data/IIndexBuffer"; -import { IDrawMode } from "../data/IPrimitiveState"; -import { IRenderObject } from "../data/IRenderObject"; -import { IVertexAttributes } from "../data/IVertexAttributes"; +import { IGLDrawArrays } from "../data/IGLDrawArrays"; +import { IGLDrawElements } from "../data/IGLDrawElements"; +import { IGLIndexBuffer } from "../data/IGLIndexBuffer"; +import { IGLDrawMode } from "../data/IGLPrimitiveState"; +import { IGLRenderObject } from "../data/IGLRenderObject"; +import { IGLVertexAttributes } from "../data/IGLVertexAttributes"; import { defaultPrimitiveState } from "./runPrimitiveState"; -export function runDrawCall(gl: WebGLRenderingContext, renderObject: IRenderObject) +export function runDrawCall(gl: WebGLRenderingContext, renderObject: IGLRenderObject) { const { pipeline, vertexArray, drawElements, drawArrays } = renderObject; const { vertices, index } = { ...vertexArray }; @@ -33,9 +33,9 @@ export function runDrawCall(gl: WebGLRenderingContext, renderObject: IRenderObje } } -export const defaultDrawIndexed: IDrawElements = Object.freeze({ firstIndex: 0, instanceCount: 1 }); +export const defaultDrawIndexed: IGLDrawElements = Object.freeze({ firstIndex: 0, instanceCount: 1 }); -function _runDrawElements(gl: WebGLRenderingContext, drawMode: IDrawMode, index: IIndexBuffer, drawElements: IDrawElements) +function _runDrawElements(gl: WebGLRenderingContext, drawMode: IGLDrawMode, index: IGLIndexBuffer, drawElements: IGLDrawElements) { // const webGLBuffer = getWebGLBuffer(gl, index); @@ -66,9 +66,9 @@ function _runDrawElements(gl: WebGLRenderingContext, drawMode: IDrawMode, index: } } -export const defaultDrawVertex: IDrawArrays = Object.freeze({ vertexCount: 6, instanceCount: 1, firstVertex: 0 }); +export const defaultDrawVertex: IGLDrawArrays = Object.freeze({ vertexCount: 6, instanceCount: 1, firstVertex: 0 }); -function _runDrawArrays(gl: WebGLRenderingContext, drawMode: IDrawMode, vertices: IVertexAttributes, drawArrays: IDrawArrays) +function _runDrawArrays(gl: WebGLRenderingContext, drawMode: IGLDrawMode, vertices: IGLVertexAttributes, drawArrays: IGLDrawArrays) { // let { firstVertex, vertexCount, instanceCount } = drawArrays || {}; @@ -98,7 +98,7 @@ function _runDrawArrays(gl: WebGLRenderingContext, drawMode: IDrawMode, vertices /** * 获取属性顶点属性。 */ -function getAttributeVertexNum(gl: WebGLRenderingContext, vertices: IVertexAttributes) +function getAttributeVertexNum(gl: WebGLRenderingContext, vertices: IGLVertexAttributes) { const vertexNum = ((vertices) => { diff --git a/src/runs/runFramebuffer.ts b/src/runs/runFramebuffer.ts index a7defe9..ac7ae0f 100644 --- a/src/runs/runFramebuffer.ts +++ b/src/runs/runFramebuffer.ts @@ -1,10 +1,10 @@ import { getFramebuffer } from "../caches/getFramebuffer"; -import { IPassDescriptor } from "../data/IPassDescriptor"; +import { IGLPassDescriptor } from "../data/IGLPassDescriptor"; /** * 运行帧缓冲区 */ -export function runFramebuffer(gl: WebGLRenderingContext, passDescriptor: IPassDescriptor) +export function runFramebuffer(gl: WebGLRenderingContext, passDescriptor: IGLPassDescriptor) { const framebuffer = getFramebuffer(gl, passDescriptor); gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer); diff --git a/src/runs/runIndexBuffer.ts b/src/runs/runIndexBuffer.ts index f64eb19..13495ac 100644 --- a/src/runs/runIndexBuffer.ts +++ b/src/runs/runIndexBuffer.ts @@ -1,7 +1,7 @@ import { getWebGLBuffer } from "../caches/getWebGLBuffer"; -import { IIndexBuffer } from "../data/IIndexBuffer"; +import { IGLIndexBuffer } from "../data/IGLIndexBuffer"; -export function runIndexBuffer(gl: WebGLRenderingContext, index?: IIndexBuffer) +export function runIndexBuffer(gl: WebGLRenderingContext, index?: IGLIndexBuffer) { if (index) { @@ -10,5 +10,5 @@ export function runIndexBuffer(gl: WebGLRenderingContext, index?: IIndexBuffer) } } -export const defaultIndexBuffer: IIndexBuffer = { target: "ELEMENT_ARRAY_BUFFER", usage: "STATIC_DRAW", data: new Uint16Array([0, 1, 2, 2, 1, 3]) }; +export const defaultIndexBuffer: IGLIndexBuffer = { target: "ELEMENT_ARRAY_BUFFER", usage: "STATIC_DRAW", data: new Uint16Array([0, 1, 2, 2, 1, 3]) }; Object.freeze(defaultIndexBuffer); diff --git a/src/runs/runPassDescriptor.ts b/src/runs/runPassDescriptor.ts index 2dc9bdd..bec282f 100644 --- a/src/runs/runPassDescriptor.ts +++ b/src/runs/runPassDescriptor.ts @@ -1,12 +1,12 @@ -import { IRenderPassColorAttachment } from "../data/IRenderPassColorAttachment"; -import { IRenderPassDepthStencilAttachment } from "../data/IRenderPassDepthStencilAttachment"; -import { IPassDescriptor } from "../data/IPassDescriptor"; +import { IGLRenderPassColorAttachment } from "../data/IGLRenderPassColorAttachment"; +import { IGLRenderPassDepthStencilAttachment } from "../data/IGLRenderPassDepthStencilAttachment"; +import { IGLPassDescriptor } from "../data/IGLPassDescriptor"; import { runFramebuffer } from "./runFramebuffer"; -const defaultRenderPassColorAttachment: IRenderPassColorAttachment = { clearValue: [0, 0, 0, 0], loadOp: "clear" }; -const defaultDepthStencilAttachment: IRenderPassDepthStencilAttachment = { depthClearValue: 1, depthLoadOp: "load", stencilClearValue: 0, stencilLoadOp: "load" }; +const defaultRenderPassColorAttachment: IGLRenderPassColorAttachment = { clearValue: [0, 0, 0, 0], loadOp: "clear" }; +const defaultDepthStencilAttachment: IGLRenderPassDepthStencilAttachment = { depthClearValue: 1, depthLoadOp: "load", stencilClearValue: 0, stencilLoadOp: "load" }; -export function runPassDescriptor(gl: WebGLRenderingContext, passDescriptor: IPassDescriptor) +export function runPassDescriptor(gl: WebGLRenderingContext, passDescriptor: IGLPassDescriptor) { passDescriptor = passDescriptor || {}; diff --git a/src/runs/runPrimitiveState.ts b/src/runs/runPrimitiveState.ts index 43213df..43de634 100644 --- a/src/runs/runPrimitiveState.ts +++ b/src/runs/runPrimitiveState.ts @@ -1,7 +1,7 @@ -import { ICullFace } from "../data/ICullFace"; -import { IPrimitiveState } from "../data/IPrimitiveState"; +import { IGLCullFace } from "../data/IGLCullFace"; +import { IGLPrimitiveState } from "../data/IGLPrimitiveState"; -export function runPrimitiveState(gl: WebGLRenderingContext, cullFace?: ICullFace) +export function runPrimitiveState(gl: WebGLRenderingContext, cullFace?: IGLCullFace) { // const { enableCullFace: enableCullMode, cullMode, frontFace } = { ...defaultCullFace, ...cullFace }; @@ -17,8 +17,8 @@ export function runPrimitiveState(gl: WebGLRenderingContext, cullFace?: ICullFac } } -const defaultCullFace: ICullFace = { enableCullFace: false, cullMode: "BACK", frontFace: "CCW" }; -export const defaultPrimitiveState: IPrimitiveState = { topology: "TRIANGLES", cullFace: defaultCullFace }; +const defaultCullFace: IGLCullFace = { enableCullFace: false, cullMode: "BACK", frontFace: "CCW" }; +export const defaultPrimitiveState: IGLPrimitiveState = { topology: "TRIANGLES", cullFace: defaultCullFace }; Object.freeze(defaultCullFace); Object.freeze(defaultPrimitiveState); \ No newline at end of file diff --git a/src/runs/runProgram.ts b/src/runs/runProgram.ts index c4ec088..0c0e9ff 100644 --- a/src/runs/runProgram.ts +++ b/src/runs/runProgram.ts @@ -1,8 +1,8 @@ import { getProgram } from "../caches/getProgram"; -import { IFragmentState, IRenderPipeline, IVertexState } from "../data/IRenderPipeline"; +import { IFragmentState, IGLRenderPipeline, IVertexState } from "../data/IGLRenderPipeline"; import { defaultColorTargetStates, runColorTargetStates } from "./runColorTargetStates"; -export function runProgram(gl: WebGLRenderingContext, pipeline: IRenderPipeline) +export function runProgram(gl: WebGLRenderingContext, pipeline: IGLRenderPipeline) { const program = getProgram(gl, pipeline); gl.useProgram(program); diff --git a/src/runs/runQueryAction.ts b/src/runs/runQueryAction.ts index 1cd5553..da8693d 100644 --- a/src/runs/runQueryAction.ts +++ b/src/runs/runQueryAction.ts @@ -1,7 +1,7 @@ import { deleteWebGLQuery, getWebGLQuery } from "../caches/getWebGLQuery"; -import { IQuery, IQueryAction } from "../data/IQueryAction"; +import { IGLQuery, IGLQueryAction } from "../data/IGLQueryAction"; -export function runQueryAction(gl: WebGLRenderingContext, queryAction: IQueryAction) +export function runQueryAction(gl: WebGLRenderingContext, queryAction: IGLQueryAction) { if (gl instanceof WebGL2RenderingContext) { @@ -21,7 +21,7 @@ export function runQueryAction(gl: WebGLRenderingContext, queryAction: IQueryAct /** * 获取查询结果。 */ -export async function getQueryResult(gl: WebGLRenderingContext, query: IQuery) +export async function getQueryResult(gl: WebGLRenderingContext, query: IGLQuery) { if (query.result !== undefined) return query.result; diff --git a/src/runs/runReadPixels.ts b/src/runs/runReadPixels.ts index b20847a..56099ef 100644 --- a/src/runs/runReadPixels.ts +++ b/src/runs/runReadPixels.ts @@ -1,7 +1,7 @@ import { getFramebuffer } from "../caches/getFramebuffer"; -import { IReadPixels } from "../data/IReadPixels"; +import { IGLReadPixels } from "../data/IGLReadPixels"; -export function runReadPixels(gl: WebGLRenderingContext, readPixels: IReadPixels) +export function runReadPixels(gl: WebGLRenderingContext, readPixels: IGLReadPixels) { if (gl instanceof WebGL2RenderingContext) { diff --git a/src/runs/runRenderObject.ts b/src/runs/runRenderObject.ts index 7674d19..5eaa876 100644 --- a/src/runs/runRenderObject.ts +++ b/src/runs/runRenderObject.ts @@ -1,4 +1,4 @@ -import { IRenderObject } from "../data/IRenderObject"; +import { IGLRenderObject } from "../data/IGLRenderObject"; import { runDrawCall } from "./runDrawCall"; import { defaultPrimitiveState } from "./runPrimitiveState"; import { runRenderPipeline } from "./runRenderPipeline"; @@ -8,7 +8,7 @@ import { runUniforms } from "./runUniforms"; import { runVertexArray } from "./runVertexArray"; import { runViewPort } from "./runViewPort"; -export function runRenderObject(gl: WebGLRenderingContext, renderObject: IRenderObject) +export function runRenderObject(gl: WebGLRenderingContext, renderObject: IGLRenderObject) { const { viewport, scissor, pipeline, vertexArray, uniforms, transformFeedback } = renderObject; diff --git a/src/runs/runRenderPass.ts b/src/runs/runRenderPass.ts index 25277e3..561e295 100644 --- a/src/runs/runRenderPass.ts +++ b/src/runs/runRenderPass.ts @@ -1,4 +1,4 @@ -import { IGLRenderPass } from "../data/IRenderPass"; +import { IGLRenderPass } from "../data/IGLRenderPass"; import { runPassDescriptor } from "./runPassDescriptor"; import { runQueryAction } from "./runQueryAction"; import { runRenderObject } from "./runRenderObject"; diff --git a/src/runs/runRenderPipeline.ts b/src/runs/runRenderPipeline.ts index 7d00e05..0d09f77 100644 --- a/src/runs/runRenderPipeline.ts +++ b/src/runs/runRenderPipeline.ts @@ -1,9 +1,9 @@ -import { IRenderPipeline } from "../data/IRenderPipeline"; +import { IGLRenderPipeline } from "../data/IGLRenderPipeline"; import { defaultDepthStencilState, runDepthStencilState } from "./runDepthStencilState"; import { defaultPrimitiveState, runPrimitiveState } from "./runPrimitiveState"; import { defaultFragmentState, defaultVertexState, runProgram } from "./runProgram"; -export function runRenderPipeline(gl: WebGLRenderingContext, renderPipeline: IRenderPipeline) +export function runRenderPipeline(gl: WebGLRenderingContext, renderPipeline: IGLRenderPipeline) { runProgram(gl, renderPipeline); @@ -12,7 +12,7 @@ export function runRenderPipeline(gl: WebGLRenderingContext, renderPipeline: IRe runDepthStencilState(gl, renderPipeline.depthStencil); } -export const defaultRenderPipeline: IRenderPipeline = Object.freeze({ +export const defaultRenderPipeline: IGLRenderPipeline = Object.freeze({ vertex: defaultVertexState, fragment: defaultFragmentState, primitive: defaultPrimitiveState, depthStencil: defaultDepthStencilState }); \ No newline at end of file diff --git a/src/runs/runSampler.ts b/src/runs/runSampler.ts index b900ea8..be4e2f2 100644 --- a/src/runs/runSampler.ts +++ b/src/runs/runSampler.ts @@ -1,22 +1,22 @@ import { getSampler } from "../caches/getSampler"; -import { ISampler, TextureMagFilter, TextureMinFilter, TextureWrap } from "../data/ISampler"; +import { IGLSampler, TextureMagFilter, GLTextureMinFilter, GLTextureWrap } from "../data/IGLSampler"; declare global { interface WebGLTexture { - minFilter?: TextureMinFilter, + minFilter?: GLTextureMinFilter, magFilter?: TextureMagFilter, - wrapS?: TextureWrap, - wrapT?: TextureWrap, - wrapR?: TextureWrap, + wrapS?: GLTextureWrap, + wrapT?: GLTextureWrap, + wrapR?: GLTextureWrap, anisotropy?: number, lodMinClamp?: number; lodMaxClamp?: number; } } -export const defaultSampler: ISampler = { +export const defaultSampler: IGLSampler = { minFilter: "LINEAR_MIPMAP_LINEAR", magFilter: "LINEAR", wrapS: "REPEAT", wrapT: "REPEAT", wrapR: "REPEAT", lodMinClamp: 0, lodMaxClamp: 16, @@ -28,7 +28,7 @@ export const defaultSampler: ISampler = { /** * 设置采样参数 */ -export function runSampler(gl: WebGLRenderingContext, webGLTexture: WebGLTexture, sampler: ISampler, textureID: number) +export function runSampler(gl: WebGLRenderingContext, webGLTexture: WebGLTexture, sampler: IGLSampler, textureID: number) { const textureTarget = webGLTexture.textureTarget; diff --git a/src/runs/runScissor.ts b/src/runs/runScissor.ts index 3bee239..f39703d 100644 --- a/src/runs/runScissor.ts +++ b/src/runs/runScissor.ts @@ -1,6 +1,6 @@ -import { IScissor } from "../data/IScissor"; +import { IGLScissor } from "../data/IGLScissor"; -export function runScissor(gl: WebGLRenderingContext, scissor?: IScissor) +export function runScissor(gl: WebGLRenderingContext, scissor?: IGLScissor) { if (scissor) { diff --git a/src/runs/runStencilState.ts b/src/runs/runStencilState.ts index b81c110..a570907 100644 --- a/src/runs/runStencilState.ts +++ b/src/runs/runStencilState.ts @@ -1,9 +1,9 @@ -import { IStencilFaceState, IStencilState } from "../data/IDepthStencilState"; +import { IStencilFaceState, IGLStencilState } from "../data/IGLDepthStencilState"; const defaultStencilFaceState: IStencilFaceState = { stencilFunc: "ALWAYS", stencilFuncRef: 0, stencilFuncMask: 0b11111111, stencilOpFail: "KEEP", stencilOpZFail: "KEEP", stencilOpZPass: "KEEP", stencilMask: 0b11111111 }; -export const defaultStencilState: IStencilState = { useStencil: false, stencilFront: defaultStencilFaceState, stencilBack: defaultStencilFaceState }; +export const defaultStencilState: IGLStencilState = { useStencil: false, stencilFront: defaultStencilFaceState, stencilBack: defaultStencilFaceState }; -export function runStencilState(gl: WebGLRenderingContext, stencil: IStencilState) +export function runStencilState(gl: WebGLRenderingContext, stencil: IGLStencilState) { // const { diff --git a/src/runs/runTexture.ts b/src/runs/runTexture.ts index 69296ef..4755e7c 100644 --- a/src/runs/runTexture.ts +++ b/src/runs/runTexture.ts @@ -1,20 +1,20 @@ import { getTexture } from "../caches/getTexture"; -import { ISamplerTexture } from "../data/ISamplerTexture"; -import { IBufferSource, IImageSource, ITexture, ITexturePixelStore, ITextureSource } from "../data/ITexture"; -import { IUniformItemInfo } from "../data/IUniformInfo"; +import { IGLSamplerTexture } from "../data/IGLSamplerTexture"; +import { IGLBufferSource, IGLImageSource, IGLTexture, ITexturePixelStore, IGLTextureSource } from "../data/IGLTexture"; +import { IUniformItemInfo } from "../data/IGLUniformInfo"; import { runSampler } from "./runSampler"; -export const defaultImageSource: IImageSource = { level: 0, source: new ImageData(1, 1) }; -export const defaultBufferSource: IBufferSource = { level: 0, width: 1, height: 1, depth: 1, border: 0 }; -export const defaultTextureSources: ITextureSource[] = [defaultBufferSource]; -export const defaultTexture: ITexture = { target: "TEXTURE_2D", generateMipmap: false, internalformat: "RGBA", format: "RGBA", type: "UNSIGNED_BYTE" }; +export const defaultImageSource: IGLImageSource = { level: 0, source: new ImageData(1, 1) }; +export const defaultBufferSource: IGLBufferSource = { level: 0, width: 1, height: 1, depth: 1, border: 0 }; +export const defaultTextureSources: IGLTextureSource[] = [defaultBufferSource]; +export const defaultTexture: IGLTexture = { target: "TEXTURE_2D", generateMipmap: false, internalformat: "RGBA", format: "RGBA", type: "UNSIGNED_BYTE" }; Object.freeze(defaultImageSource); Object.freeze(defaultBufferSource); Object.freeze(defaultTextureSources); Object.freeze(defaultTexture); -export function runSamplerTexture(gl: WebGLRenderingContext, uniformInfo: IUniformItemInfo, samplerTexture: ISamplerTexture) +export function runSamplerTexture(gl: WebGLRenderingContext, uniformInfo: IUniformItemInfo, samplerTexture: IGLSamplerTexture) { const { texture, sampler } = samplerTexture; const { location, textureID } = uniformInfo; diff --git a/src/runs/runTransformFeedback.ts b/src/runs/runTransformFeedback.ts index 35c0146..9b53972 100644 --- a/src/runs/runTransformFeedback.ts +++ b/src/runs/runTransformFeedback.ts @@ -1,8 +1,8 @@ import { getWebGLTransformFeedback } from "../caches/getWebGLTransformFeedback"; -import { IDrawMode } from "../data/IPrimitiveState"; -import { ITransformFeedback } from "../data/ITransformFeedback"; +import { IGLDrawMode } from "../data/IGLPrimitiveState"; +import { IGLTransformFeedback } from "../data/IGLTransformFeedback"; -export function runTransformFeedback(gl: WebGLRenderingContext, transformFeedback: ITransformFeedback, topology: IDrawMode) +export function runTransformFeedback(gl: WebGLRenderingContext, transformFeedback: IGLTransformFeedback, topology: IGLDrawMode) { if (gl instanceof WebGL2RenderingContext) { @@ -25,7 +25,7 @@ export function runTransformFeedback(gl: WebGLRenderingContext, transformFeedbac } } -export function endTransformFeedback(gl: WebGLRenderingContext, transformFeedback: ITransformFeedback) +export function endTransformFeedback(gl: WebGLRenderingContext, transformFeedback: IGLTransformFeedback) { // if (transformFeedback) diff --git a/src/runs/runUniforms.ts b/src/runs/runUniforms.ts index 4cdb163..c8852ed 100644 --- a/src/runs/runUniforms.ts +++ b/src/runs/runUniforms.ts @@ -1,18 +1,18 @@ import { getWebGLBuffer } from "../caches/getWebGLBuffer"; import { getProgram } from "../caches/getProgram"; -import { IWebGLUniformBufferType } from "../const/WebGLUniformType"; -import { IBuffer } from "../data/IBuffer"; -import { IRenderPipeline } from "../data/IRenderPipeline"; -import { ISamplerTexture } from "../data/ISamplerTexture"; -import { IUniformItemInfo } from "../data/IUniformInfo"; -import { IUniforms } from "../data/IUniforms"; +import { IGLUniformBufferType } from "../const/WebGLUniformType"; +import { IGLBuffer } from "../data/IGLBuffer"; +import { IGLRenderPipeline } from "../data/IGLRenderPipeline"; +import { IGLSamplerTexture } from "../data/IGLSamplerTexture"; +import { IUniformItemInfo } from "../data/IGLUniformInfo"; +import { IGLUniforms } from "../data/IGLUniforms"; import { LazyObject, lazy } from "../types"; import { runSamplerTexture } from "./runTexture"; /** * 激活常量 */ -export function runUniforms(gl: WebGLRenderingContext, pipeline: IRenderPipeline, uniforms: LazyObject) +export function runUniforms(gl: WebGLRenderingContext, pipeline: IGLRenderPipeline, uniforms: LazyObject) { const webGLProgram = getProgram(gl, pipeline); @@ -37,11 +37,11 @@ export function runUniforms(gl: WebGLRenderingContext, pipeline: IRenderPipeline if (isTexture) { - runSamplerTexture(gl, v, uniformData as ISamplerTexture); + runSamplerTexture(gl, v, uniformData as IGLSamplerTexture); } else { - runUniform(gl, type as IWebGLUniformBufferType, v, uniformData); + runUniform(gl, type as IGLUniformBufferType, v, uniformData); } }); }); @@ -54,7 +54,7 @@ export function runUniforms(gl: WebGLRenderingContext, pipeline: IRenderPipeline const uniformData = lazy.getValue(uniforms[name], uniforms); // - const webGLBuffer = getWebGLBuffer(gl, uniformData as IBuffer); + const webGLBuffer = getWebGLBuffer(gl, uniformData as IGLBuffer); gl.bindBufferBase(gl.UNIFORM_BUFFER, index, webGLBuffer); }); } @@ -63,7 +63,7 @@ export function runUniforms(gl: WebGLRenderingContext, pipeline: IRenderPipeline /** * 设置环境Uniform数据 */ -function runUniform(gl: WebGLRenderingContext, type: IWebGLUniformBufferType, uniformInfo: IUniformItemInfo, data: any) +function runUniform(gl: WebGLRenderingContext, type: IGLUniformBufferType, uniformInfo: IUniformItemInfo, data: any) { const location = uniformInfo.location; switch (type) diff --git a/src/runs/runVertexArray.ts b/src/runs/runVertexArray.ts index 0ab6f81..49e0763 100644 --- a/src/runs/runVertexArray.ts +++ b/src/runs/runVertexArray.ts @@ -1,6 +1,6 @@ import { getProgram } from "../caches/getProgram"; -import { IRenderPipeline } from "../data/IRenderPipeline"; -import { IVertexArrayObject } from "../data/IVertexArrayObject"; +import { IGLRenderPipeline } from "../data/IGLRenderPipeline"; +import { IGLVertexArrayObject } from "../data/IGLVertexArrayObject"; import { runIndexBuffer } from "./runIndexBuffer"; import { runVertexAttribute } from "./runVertexAttribute"; @@ -8,14 +8,14 @@ declare global { interface WebGLRenderingContext { - _vertexArrays: Map; + _vertexArrays: Map; } } /** * 执行设置或者上传渲染对象的顶点以及索引数据。 */ -export function runVertexArray(gl: WebGLRenderingContext, pipeline: IRenderPipeline, vertexArray: IVertexArrayObject) +export function runVertexArray(gl: WebGLRenderingContext, pipeline: IGLRenderPipeline, vertexArray: IGLVertexArrayObject) { if (!vertexArray) return; @@ -59,7 +59,7 @@ export function runVertexArray(gl: WebGLRenderingContext, pipeline: IRenderPipel runIndexBuffer(gl, index); } -export function deleteVertexArray(gl: WebGLRenderingContext, vertexArray: IVertexArrayObject) +export function deleteVertexArray(gl: WebGLRenderingContext, vertexArray: IGLVertexArrayObject) { if (gl instanceof WebGL2RenderingContext) { diff --git a/src/runs/runVertexAttribute.ts b/src/runs/runVertexAttribute.ts index 3a101a2..2b17244 100644 --- a/src/runs/runVertexAttribute.ts +++ b/src/runs/runVertexAttribute.ts @@ -1,7 +1,7 @@ import { getWebGLBuffer } from "../caches/getWebGLBuffer"; -import { IVertexAttribute } from "../data/IVertexAttribute"; +import { IGLVertexAttribute } from "../data/IGLVertexAttribute"; -export function runVertexAttribute(gl: WebGLRenderingContext, location: number, attribute: IVertexAttribute) +export function runVertexAttribute(gl: WebGLRenderingContext, location: number, attribute: IGLVertexAttribute) { const { numComponents, normalized, divisor } = attribute; let { vertexSize, offset } = attribute; diff --git a/src/runs/runViewPort.ts b/src/runs/runViewPort.ts index 344cfcc..1c1d6f9 100644 --- a/src/runs/runViewPort.ts +++ b/src/runs/runViewPort.ts @@ -1,6 +1,6 @@ -import { IViewport } from "../data/IViewport"; +import { IGLViewport } from "../data/IGLViewport"; -export function runViewPort(gl: WebGLRenderingContext, viewport?: IViewport) +export function runViewPort(gl: WebGLRenderingContext, viewport?: IGLViewport) { if (viewport) { -- Gitee From 974f3635dfb476076e397560b8ee309bb43e8e9b Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Mon, 28 Oct 2024 17:19:36 +0800 Subject: [PATCH 09/47] 1 --- src/data/IGLRenderPass.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/data/IGLRenderPass.ts b/src/data/IGLRenderPass.ts index 347048c..483b7a3 100644 --- a/src/data/IGLRenderPass.ts +++ b/src/data/IGLRenderPass.ts @@ -1,4 +1,3 @@ -import { IRenderPass } from "@feng3d/renderer-common"; import { IGLPassDescriptor } from "./IGLPassDescriptor"; import { IGLQueryAction } from "./IGLQueryAction"; import { IGLRenderObject } from "./IGLRenderObject"; @@ -8,7 +7,7 @@ import { IGLRenderObject } from "./IGLRenderObject"; * * 包含渲染通道描述以及需要渲染的对象列表。 */ -export interface IGLRenderPass extends IRenderPass +export interface IGLRenderPass { /** * WebGL渲染通道描述 -- Gitee From aefd17cd26c29d4e66a6cf49a8da26f6f0cb5888 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Mon, 28 Oct 2024 17:32:44 +0800 Subject: [PATCH 10/47] 1 --- src/data/IGLRenderPass.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/data/IGLRenderPass.ts b/src/data/IGLRenderPass.ts index 483b7a3..347048c 100644 --- a/src/data/IGLRenderPass.ts +++ b/src/data/IGLRenderPass.ts @@ -1,3 +1,4 @@ +import { IRenderPass } from "@feng3d/renderer-common"; import { IGLPassDescriptor } from "./IGLPassDescriptor"; import { IGLQueryAction } from "./IGLQueryAction"; import { IGLRenderObject } from "./IGLRenderObject"; @@ -7,7 +8,7 @@ import { IGLRenderObject } from "./IGLRenderObject"; * * 包含渲染通道描述以及需要渲染的对象列表。 */ -export interface IGLRenderPass +export interface IGLRenderPass extends IRenderPass { /** * WebGL渲染通道描述 -- Gitee From 2bc7dcd8d1bebf75b825299614db3259ec1860fe Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Mon, 28 Oct 2024 19:20:56 +0800 Subject: [PATCH 11/47] 1 --- src/WebGL.ts | 4 ++-- src/caches/getFramebuffer.ts | 8 ++++---- src/data/IGLBlitFramebuffer.ts | 6 +++--- src/data/IGLFramebuffer.ts | 4 ++-- src/data/IGLPassDescriptor.ts | 6 +++--- src/data/IGLRenderPass.ts | 7 +++---- src/runs/runFramebuffer.ts | 4 ++-- src/runs/runPassDescriptor.ts | 4 ++-- 8 files changed, 21 insertions(+), 22 deletions(-) diff --git a/src/WebGL.ts b/src/WebGL.ts index 6a0cf32..eb0e636 100644 --- a/src/WebGL.ts +++ b/src/WebGL.ts @@ -10,7 +10,7 @@ import { deleteTransformFeedback } from "./caches/getWebGLTransformFeedback"; import { IGLBlitFramebuffer } from "./data/IGLBlitFramebuffer"; import { IGLBuffer } from "./data/IGLBuffer"; import { IGLCopyBuffer } from "./data/IGLCopyBuffer"; -import { IGLPassDescriptor } from "./data/IGLPassDescriptor"; +import { IGLRenderPassDescriptor } from "./data/IGLPassDescriptor"; import { IGLQuery } from "./data/IGLQueryAction"; import { IGLReadPixels } from "./data/IGLReadPixels"; import { IGLRenderObject } from "./data/IGLRenderObject"; @@ -83,7 +83,7 @@ export class WebGL implements IWebRenderer runReadPixels(this._gl, readPixels); } - deleteFramebuffer(passDescriptor: IGLPassDescriptor) + deleteFramebuffer(passDescriptor: IGLRenderPassDescriptor) { deleteFramebuffer(this._gl, passDescriptor); } diff --git a/src/caches/getFramebuffer.ts b/src/caches/getFramebuffer.ts index 2f30a0b..5918f9e 100644 --- a/src/caches/getFramebuffer.ts +++ b/src/caches/getFramebuffer.ts @@ -1,4 +1,4 @@ -import { IGLPassDescriptor } from "../data/IGLPassDescriptor"; +import { IGLRenderPassDescriptor } from "../data/IGLPassDescriptor"; import { IGLRenderbuffer } from "../data/IGLRenderbuffer"; import { IGLTextureView } from "../data/IGLTexture"; import { getRenderbuffer } from "./getRenderbuffer"; @@ -8,7 +8,7 @@ declare global { interface WebGLRenderingContext { - _framebuffers: Map; + _framebuffers: Map; } } @@ -17,7 +17,7 @@ const defaultTextureView: Partial = { level: 0, layer: 0 }; /** * 获取帧缓冲区 */ -export function getFramebuffer(gl: WebGLRenderingContext, passDescriptor: IGLPassDescriptor) +export function getFramebuffer(gl: WebGLRenderingContext, passDescriptor: IGLRenderPassDescriptor) { const view = passDescriptor?.colorAttachments?.[0]?.view || passDescriptor?.depthStencilAttachment?.view; if (!view) return null; @@ -112,7 +112,7 @@ export function getFramebuffer(gl: WebGLRenderingContext, passDescriptor: IGLPas return webGLFramebuffer; } -export function deleteFramebuffer(gl: WebGLRenderingContext, passDescriptor: IGLPassDescriptor) +export function deleteFramebuffer(gl: WebGLRenderingContext, passDescriptor: IGLRenderPassDescriptor) { const webGLFramebuffer = gl._framebuffers.get(passDescriptor); gl._framebuffers.delete(passDescriptor); diff --git a/src/data/IGLBlitFramebuffer.ts b/src/data/IGLBlitFramebuffer.ts index 6d7ff55..fa4fdef 100644 --- a/src/data/IGLBlitFramebuffer.ts +++ b/src/data/IGLBlitFramebuffer.ts @@ -1,12 +1,12 @@ -import { IGLPassDescriptor } from "./IGLPassDescriptor"; +import { IGLRenderPassDescriptor } from "./IGLPassDescriptor"; /** * 拷贝渲染缓冲与纹理直接拷贝数据。 */ export interface IGLBlitFramebuffer { - read: IGLPassDescriptor; - draw: IGLPassDescriptor; + read: IGLRenderPassDescriptor; + draw: IGLRenderPassDescriptor; blitFramebuffers: IGLBlitFramebufferItem[]; } diff --git a/src/data/IGLFramebuffer.ts b/src/data/IGLFramebuffer.ts index fa500f2..f4043ca 100644 --- a/src/data/IGLFramebuffer.ts +++ b/src/data/IGLFramebuffer.ts @@ -1,4 +1,4 @@ -import { IGLPassDescriptor } from "./IGLPassDescriptor"; +import { IGLRenderPassDescriptor } from "./IGLPassDescriptor"; /** * 等价于 IPassDescriptor 。 @@ -7,4 +7,4 @@ import { IGLPassDescriptor } from "./IGLPassDescriptor"; * * @deprecated 请使用 IPassDescriptor 。 */ -export interface IGLFramebuffer extends IGLPassDescriptor { } +export interface IGLFramebuffer extends IGLRenderPassDescriptor { } diff --git a/src/data/IGLPassDescriptor.ts b/src/data/IGLPassDescriptor.ts index ef0db2f..6a17ce8 100644 --- a/src/data/IGLPassDescriptor.ts +++ b/src/data/IGLPassDescriptor.ts @@ -1,10 +1,10 @@ -import { IGLRenderPassColorAttachment as IGLRenderPassColorAttachment } from "./IGLRenderPassColorAttachment"; -import { IGLRenderPassDepthStencilAttachment as IGLRenderPassDepthStencilAttachment } from "./IGLRenderPassDepthStencilAttachment"; +import { IGLRenderPassColorAttachment } from "./IGLRenderPassColorAttachment"; +import { IGLRenderPassDepthStencilAttachment } from "./IGLRenderPassDepthStencilAttachment"; /** * WebGL渲染通道描述 */ -export interface IGLPassDescriptor +export interface IGLRenderPassDescriptor { /** * 颜色附件 diff --git a/src/data/IGLRenderPass.ts b/src/data/IGLRenderPass.ts index 347048c..6c79e4a 100644 --- a/src/data/IGLRenderPass.ts +++ b/src/data/IGLRenderPass.ts @@ -1,5 +1,4 @@ -import { IRenderPass } from "@feng3d/renderer-common"; -import { IGLPassDescriptor } from "./IGLPassDescriptor"; +import { IGLRenderPassDescriptor } from "./IGLPassDescriptor"; import { IGLQueryAction } from "./IGLQueryAction"; import { IGLRenderObject } from "./IGLRenderObject"; @@ -8,12 +7,12 @@ import { IGLRenderObject } from "./IGLRenderObject"; * * 包含渲染通道描述以及需要渲染的对象列表。 */ -export interface IGLRenderPass extends IRenderPass +export interface IGLRenderPass { /** * WebGL渲染通道描述 */ - descriptor?: IGLPassDescriptor; + descriptor?: IGLRenderPassDescriptor; /** * 渲染对象列表,默认为 []。 diff --git a/src/runs/runFramebuffer.ts b/src/runs/runFramebuffer.ts index ac7ae0f..177bc3a 100644 --- a/src/runs/runFramebuffer.ts +++ b/src/runs/runFramebuffer.ts @@ -1,10 +1,10 @@ import { getFramebuffer } from "../caches/getFramebuffer"; -import { IGLPassDescriptor } from "../data/IGLPassDescriptor"; +import { IGLRenderPassDescriptor } from "../data/IGLPassDescriptor"; /** * 运行帧缓冲区 */ -export function runFramebuffer(gl: WebGLRenderingContext, passDescriptor: IGLPassDescriptor) +export function runFramebuffer(gl: WebGLRenderingContext, passDescriptor: IGLRenderPassDescriptor) { const framebuffer = getFramebuffer(gl, passDescriptor); gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer); diff --git a/src/runs/runPassDescriptor.ts b/src/runs/runPassDescriptor.ts index bec282f..52d3b56 100644 --- a/src/runs/runPassDescriptor.ts +++ b/src/runs/runPassDescriptor.ts @@ -1,12 +1,12 @@ import { IGLRenderPassColorAttachment } from "../data/IGLRenderPassColorAttachment"; import { IGLRenderPassDepthStencilAttachment } from "../data/IGLRenderPassDepthStencilAttachment"; -import { IGLPassDescriptor } from "../data/IGLPassDescriptor"; +import { IGLRenderPassDescriptor } from "../data/IGLPassDescriptor"; import { runFramebuffer } from "./runFramebuffer"; const defaultRenderPassColorAttachment: IGLRenderPassColorAttachment = { clearValue: [0, 0, 0, 0], loadOp: "clear" }; const defaultDepthStencilAttachment: IGLRenderPassDepthStencilAttachment = { depthClearValue: 1, depthLoadOp: "load", stencilClearValue: 0, stencilLoadOp: "load" }; -export function runPassDescriptor(gl: WebGLRenderingContext, passDescriptor: IGLPassDescriptor) +export function runPassDescriptor(gl: WebGLRenderingContext, passDescriptor: IGLRenderPassDescriptor) { passDescriptor = passDescriptor || {}; -- Gitee From 07c842fca1a1ebe066aaecafb1ddd1282f94a87d Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Thu, 31 Oct 2024 17:30:22 +0800 Subject: [PATCH 12/47] =?UTF-8?q?=E5=88=A0=E9=99=A4=20@feng3d/renderer-com?= =?UTF-8?q?mon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 - src/WebGL.ts | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/package.json b/package.json index 2337b82..9407766 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,6 @@ "vitest": "^0.32.2" }, "dependencies": { - "@feng3d/renderer-common": "0.0.1", "@feng3d/serialization": "^0.8.1", "@feng3d/watcher": "^0.8.3" } diff --git a/src/WebGL.ts b/src/WebGL.ts index eb0e636..9f19c71 100644 --- a/src/WebGL.ts +++ b/src/WebGL.ts @@ -1,4 +1,3 @@ -import { IWebRenderer } from "@feng3d/renderer-common"; import { deleteFramebuffer } from "./caches/getFramebuffer"; import { deleteProgram } from "./caches/getProgram"; import { deleteRenderbuffer } from "./caches/getRenderbuffer"; @@ -35,7 +34,7 @@ import { deleteVertexArray } from "./runs/runVertexArray"; * * 所有渲染都由该渲染器执行。與2D、3D場景無關,屬於更加底層的API。針對每一個 RenderObject 渲染數據進行渲染。 */ -export class WebGL implements IWebRenderer +export class WebGL { private _renderingContext: IGLRenderingContext; private _gl: WebGLRenderingContext; -- Gitee From b872582f46ac6e57c9936f54736e05e0c59a072c Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Fri, 1 Nov 2024 16:35:10 +0800 Subject: [PATCH 13/47] "@feng3d/webgl-renderer": "0.0.2" --- examples/package.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/package.json b/examples/package.json index 5774fae..5c6077a 100644 --- a/examples/package.json +++ b/examples/package.json @@ -13,6 +13,6 @@ }, "dependencies": { "gl-matrix": "^3.4.3", - "@feng3d/webgl-renderer": "0.0.1" + "@feng3d/webgl-renderer": "0.0.2" } } \ No newline at end of file diff --git a/package.json b/package.json index 9407766..2552939 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@feng3d/webgl-renderer", - "version": "0.0.1", + "version": "0.0.2", "description": "渲染库", "author": "feng", "license": "MIT", -- Gitee From c7e23738eac70af28015b3c8e10572f48d0bb2f3 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Sat, 2 Nov 2024 14:52:44 +0800 Subject: [PATCH 14/47] 1 --- src/data/IGLRenderPipeline.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/IGLRenderPipeline.ts b/src/data/IGLRenderPipeline.ts index 278662b..7f8e2d4 100644 --- a/src/data/IGLRenderPipeline.ts +++ b/src/data/IGLRenderPipeline.ts @@ -8,7 +8,7 @@ import { IGLPrimitiveState } from "./IGLPrimitiveState"; export type IProgram = IGLRenderPipeline; /** - * shader + * 渲染管线。 */ export interface IGLRenderPipeline { -- Gitee From c6f2554acbf5ae0480ed54acd7ac7b6a9a348d1b Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Mon, 4 Nov 2024 00:04:52 +0800 Subject: [PATCH 15/47] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BC=96=E8=AF=91?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/src/WebGL2Samples/buffer_copy.ts | 16 ++++---- examples/src/WebGL2Samples/buffer_uniform.ts | 22 +++++----- .../src/WebGL2Samples/draw_image_space.ts | 13 +++--- examples/src/WebGL2Samples/draw_instanced.ts | 15 ++++--- .../src/WebGL2Samples/draw_instanced_ubo.ts | 14 +++---- .../WebGL2Samples/draw_primitive_restart.ts | 15 ++++--- .../src/WebGL2Samples/draw_range_arrays.ts | 15 ++++--- examples/src/WebGL2Samples/fbo_blit.ts | 40 +++++++++---------- examples/src/WebGL2Samples/fbo_multisample.ts | 28 ++++++------- .../WebGL2Samples/fbo_new_blend_equation.ts | 24 +++++------ examples/src/WebGL2Samples/fbo_read_pixels.ts | 28 ++++++------- .../WebGL2Samples/fbo_rtt_depth_texture.ts | 28 ++++++------- .../src/WebGL2Samples/fbo_rtt_draw_buffers.ts | 32 +++++++-------- .../WebGL2Samples/fbo_rtt_texture_array.ts | 28 ++++++------- .../src/WebGL2Samples/geo_vertex_format.ts | 24 +++++------ examples/src/WebGL2Samples/glsl_centroid.ts | 34 ++++++++-------- .../glsl_flat_smooth_interpolators.ts | 16 ++++---- .../WebGL2Samples/glsl_non_square_matrix.ts | 18 ++++----- examples/src/WebGL2Samples/query_occlusion.ts | 16 ++++---- examples/src/WebGL2Samples/sampler_filter.ts | 20 +++++----- examples/src/WebGL2Samples/sampler_object.ts | 20 +++++----- examples/src/WebGL2Samples/sampler_wrap.ts | 20 +++++----- .../src/WebGL2Samples/texture_2d_array.ts | 20 +++++----- examples/src/WebGL2Samples/texture_3d.ts | 22 +++++----- .../src/WebGL2Samples/texture_derivative.ts | 22 +++++----- examples/src/WebGL2Samples/texture_fetch.ts | 18 ++++----- examples/src/WebGL2Samples/texture_format.ts | 22 +++++----- examples/src/WebGL2Samples/texture_grad.ts | 22 +++++----- .../src/WebGL2Samples/texture_immutable.ts | 26 ++++++------ examples/src/WebGL2Samples/texture_integer.ts | 20 +++++----- examples/src/WebGL2Samples/texture_lod.ts | 20 +++++----- examples/src/WebGL2Samples/texture_offset.ts | 22 +++++----- .../src/WebGL2Samples/texture_pixel_store.ts | 18 ++++----- examples/src/WebGL2Samples/texture_srgb.ts | 18 ++++----- examples/src/WebGL2Samples/texture_vertex.ts | 20 +++++----- .../transform_feedback_instanced.ts | 20 +++++----- .../transform_feedback_interleaved.ts | 16 ++++---- .../transform_feedback_separated.ts | 16 ++++---- .../transform_feedback_separated_2.ts | 16 ++++---- examples/src/regl-examples/basic.ts | 4 +- examples/src/regl-examples/batch.ts | 10 ++--- examples/src/regl-examples/blur.ts | 11 ++--- examples/src/regl-examples/bunny.ts | 5 ++- examples/src/regl-examples/camera.ts | 5 ++- examples/src/regl-examples/cloth.ts | 7 ++-- examples/src/regl-examples/cube.ts | 7 ++-- examples/src/regl-examples/util/camera.ts | 7 ++-- examples/src/webgl-examples/sample2.ts | 5 +-- examples/src/webgl-examples/sample3.ts | 4 +- examples/src/webgl-examples/sample4.ts | 6 +-- examples/src/webgl-examples/sample5.ts | 6 +-- examples/src/webgl-examples/sample6.ts | 10 ++--- examples/src/webgl-examples/sample7.ts | 13 +++--- examples/src/webgl-examples/sample8.ts | 15 ++++--- src/data/IGLRenderPipeline.ts | 2 +- src/data/IGLVertexAttribute.ts | 4 +- src/index.ts | 7 ++-- 57 files changed, 475 insertions(+), 477 deletions(-) diff --git a/examples/src/WebGL2Samples/buffer_copy.ts b/examples/src/WebGL2Samples/buffer_copy.ts index fecec1e..b6d551b 100644 --- a/examples/src/WebGL2Samples/buffer_copy.ts +++ b/examples/src/WebGL2Samples/buffer_copy.ts @@ -1,4 +1,4 @@ -import { ICopyBuffer, IRenderPass, IRenderPipeline, IRenderingContext, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLCopyBuffer, IGLRenderPass, IGLRenderPipeline, IGLRenderingContext, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource } from "./utility"; (function () @@ -11,11 +11,11 @@ import { getShaderSource } from "./utility"; document.body.appendChild(canvas); // -- Init WebGL Context - const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; + const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; const webgl = new WebGL(rc); // -- Init Program - const program: IRenderPipeline = { + const program: IGLRenderPipeline = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") }, primitive: { topology: "TRIANGLES" }, }; @@ -29,11 +29,11 @@ import { getShaderSource } from "./utility"; -1.0, 1.0, -1.0, -1.0 ]); - const vertexPosBufferSrc: IVertexBuffer = { target: "ARRAY_BUFFER", data: vertices, usage: "STATIC_DRAW" }; + const vertexPosBufferSrc: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: vertices, usage: "STATIC_DRAW" }; - const vertexPosBufferDst: IVertexBuffer = { target: "ARRAY_BUFFER", data: new Float32Array(vertices.length), usage: "STATIC_DRAW" }; + const vertexPosBufferDst: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: new Float32Array(vertices.length), usage: "STATIC_DRAW" }; - const cb: ICopyBuffer = { + const cb: IGLCopyBuffer = { read: vertexPosBufferSrc, write: vertexPosBufferDst, readOffset: 0, writeOffset: 0, size: vertices.length * Float32Array.BYTES_PER_ELEMENT @@ -41,14 +41,14 @@ import { getShaderSource } from "./utility"; webgl.runCopyBuffer(cb); // -- Init Vertex Array - const vertexArray: IVertexArrayObject = { + const vertexArray: IGLVertexArrayObject = { vertices: { pos: { buffer: vertexPosBufferDst, numComponents: 2 }, } }; // -- Render - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [{ pipeline: program, diff --git a/examples/src/WebGL2Samples/buffer_uniform.ts b/examples/src/WebGL2Samples/buffer_uniform.ts index 867f6da..4552ec2 100644 --- a/examples/src/WebGL2Samples/buffer_uniform.ts +++ b/examples/src/WebGL2Samples/buffer_uniform.ts @@ -1,4 +1,4 @@ -import { IVertexBuffer, IBuffer, IIndexBuffer, IProgram, IRenderObject, IRenderPass, IRenderingContext, IUniformBuffer, IVertexArrayObject, WebGL } from "@feng3d/webgl-renderer"; +import { IGLIndexBuffer, IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLUniformBuffer, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource } from "./utility"; (function () @@ -11,11 +11,11 @@ import { getShaderSource } from "./utility"; document.body.appendChild(canvas); // --Init WebGL Context - const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; + const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; const webgl = new WebGL(rc); // -- Init Program - const program: IProgram = { + const program: IGLProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") }, }; @@ -24,7 +24,7 @@ import { getShaderSource } from "./utility"; 0, 1, 2, 2, 3, 0 ]); - const elementBuffer: IIndexBuffer = { target: "ELEMENT_ARRAY_BUFFER", data: elementData, usage: "STATIC_DRAW" }; + const elementBuffer: IGLIndexBuffer = { target: "ELEMENT_ARRAY_BUFFER", data: elementData, usage: "STATIC_DRAW" }; //vec3 position, vec3 normal, vec4 color const vertices = new Float32Array([ @@ -33,7 +33,7 @@ import { getShaderSource } from "./utility"; 1.0, 1.0, -0.5, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, -1.0, 1.0, -0.5, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0 ]); - const vertexBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: vertices, usage: "STATIC_DRAW" }; + const vertexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: vertices, usage: "STATIC_DRAW" }; //mat4 P, mat4 MV, mat3 Mnormal const transforms = new Float32Array([ @@ -53,12 +53,12 @@ import { getShaderSource } from "./utility"; 0.0, 0.0, 0.0, 1.0 ]); - const uniformPerDrawBuffer: IUniformBuffer = { target: "UNIFORM_BUFFER", data: transforms, usage: "DYNAMIC_DRAW" }; + const uniformPerDrawBuffer: IGLUniformBuffer = { target: "UNIFORM_BUFFER", data: transforms, usage: "DYNAMIC_DRAW" }; const lightPos = new Float32Array([ 0.0, 0.0, 0.0, 0.0, ]); - const uniformPerPassBuffer: IUniformBuffer = { target: "UNIFORM_BUFFER", data: lightPos, usage: "DYNAMIC_DRAW" }; + const uniformPerPassBuffer: IGLUniformBuffer = { target: "UNIFORM_BUFFER", data: lightPos, usage: "DYNAMIC_DRAW" }; //vec3 ambient, diffuse, specular, float shininess const material = new Float32Array([ @@ -66,10 +66,10 @@ import { getShaderSource } from "./utility"; 0.5, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 4.0, ]); - const uniformPerSceneBuffer: IUniformBuffer = { target: "UNIFORM_BUFFER", data: material, usage: "STATIC_DRAW" }; + const uniformPerSceneBuffer: IGLUniformBuffer = { target: "UNIFORM_BUFFER", data: material, usage: "STATIC_DRAW" }; // -- Init Vertex Array - const vertexArray: IVertexArrayObject = { + const vertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: vertexBuffer, numComponents: 3, vertexSize: 40, offset: 0 }, normal: { buffer: vertexBuffer, numComponents: 3, vertexSize: 40, offset: 12 }, @@ -78,7 +78,7 @@ import { getShaderSource } from "./utility"; index: elementBuffer, }; - const ro: IRenderObject = { + const ro: IGLRenderObject = { pipeline: program, vertexArray, uniforms: { @@ -89,7 +89,7 @@ import { getShaderSource } from "./utility"; drawElements: { indexCount: 6, firstIndex: 0 } }; - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [ro], }; diff --git a/examples/src/WebGL2Samples/draw_image_space.ts b/examples/src/WebGL2Samples/draw_image_space.ts index b4d4daf..77d6a22 100644 --- a/examples/src/WebGL2Samples/draw_image_space.ts +++ b/examples/src/WebGL2Samples/draw_image_space.ts @@ -1,5 +1,4 @@ -import { IRenderObject, IRenderPipeline, ISampler, ITexture, WebGL } from "@feng3d/webgl-renderer"; -import { IRenderingContext } from "../../../src/data/IRenderingContext"; +import { IGLRenderingContext, IGLRenderObject, IGLRenderPipeline, IGLSampler, IGLTexture, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource } from "./utility"; const canvas = document.createElement("canvas"); @@ -8,12 +7,12 @@ canvas.width = Math.min(window.innerWidth, window.innerHeight); canvas.height = canvas.width; document.body.appendChild(canvas); -const renderingContext: IRenderingContext = { canvasId: "glcanvas" }; +const renderingContext: IGLRenderingContext = { canvasId: "glcanvas" }; const webgl = new WebGL(renderingContext); loadImage("../../assets/img/Di-3d.png", (img) => { - const texture: ITexture = { + const texture: IGLTexture = { sources: [{ source: img }], pixelStore: { unpackFlipY: false, @@ -22,12 +21,12 @@ loadImage("../../assets/img/Di-3d.png", (img) => format: "RGBA", type: "UNSIGNED_BYTE", }; - const sampler: ISampler = { + const sampler: IGLSampler = { minFilter: "LINEAR", magFilter: "LINEAR", }; - const program: IRenderPipeline = { + const program: IGLRenderPipeline = { primitive: { topology: "TRIANGLES" }, vertex: { code: getShaderSource("vs") @@ -38,7 +37,7 @@ loadImage("../../assets/img/Di-3d.png", (img) => } }; - const renderObject: IRenderObject = { + const renderObject: IGLRenderObject = { uniforms: { diffuse: { texture, sampler }, u_imageSize: [canvas.width / 2, canvas.height / 2], diff --git a/examples/src/WebGL2Samples/draw_instanced.ts b/examples/src/WebGL2Samples/draw_instanced.ts index 8820f11..c59fd4a 100644 --- a/examples/src/WebGL2Samples/draw_instanced.ts +++ b/examples/src/WebGL2Samples/draw_instanced.ts @@ -1,5 +1,4 @@ -import { IRenderObject, IRenderPipeline, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; -import { IRenderingContext } from "../../../src/data/IRenderingContext"; +import { IGLRenderingContext, IGLRenderObject, IGLRenderPipeline, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource } from "./utility"; const canvas = document.createElement("canvas"); @@ -8,36 +7,36 @@ canvas.width = window.innerWidth; canvas.height = window.innerHeight; document.body.appendChild(canvas); -const renderingContext: IRenderingContext = { canvasId: "glcanvas" }; +const renderingContext: IGLRenderingContext = { canvasId: "glcanvas" }; const webgl = new WebGL(renderingContext); -const vertexPosBuffer: IVertexBuffer = { +const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: new Float32Array([-0.3, -0.5, 0.3, -0.5, 0.0, 0.5]) }; -const vertexColorBuffer: IVertexBuffer = { +const vertexColorBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: new Float32Array([ 1.0, 0.5, 0.0, 0.0, 0.5, 1.0]) }; -const program: IRenderPipeline = { +const program: IGLRenderPipeline = { primitive: { topology: "TRIANGLES" }, vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs"), targets: [{ blend: {} }] } }; -const vertexArray: IVertexArrayObject = { +const vertexArray: IGLVertexArrayObject = { vertices: { pos: { buffer: vertexPosBuffer, numComponents: 2 }, color: { buffer: vertexColorBuffer, numComponents: 3, divisor: 1 }, }, }; -const renderObject: IRenderObject = { +const renderObject: IGLRenderObject = { vertexArray, uniforms: {}, drawArrays: { instanceCount: 2 }, diff --git a/examples/src/WebGL2Samples/draw_instanced_ubo.ts b/examples/src/WebGL2Samples/draw_instanced_ubo.ts index 724daf8..3657518 100644 --- a/examples/src/WebGL2Samples/draw_instanced_ubo.ts +++ b/examples/src/WebGL2Samples/draw_instanced_ubo.ts @@ -1,4 +1,4 @@ -import { IProgram, IRenderPass, IRenderingContext, IUniformBuffer, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderPass, IGLRenderingContext, IGLUniformBuffer, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource } from "./utility"; const canvas = document.createElement("canvas"); @@ -7,11 +7,11 @@ canvas.width = window.innerWidth; canvas.height = window.innerHeight; document.body.appendChild(canvas); -const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; +const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; const webgl = new WebGL(rc); // -- Init program -const program: IProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") } }; +const program: IGLProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") } }; // -- Init Buffer const vertices = new Float32Array([ @@ -19,7 +19,7 @@ const vertices = new Float32Array([ 0.3, -0.5, 0.0, 0.5 ]); -const vertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: vertices, usage: "STATIC_DRAW" }; +const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: vertices, usage: "STATIC_DRAW" }; const transforms = new Float32Array([ 1.0, 0.0, 0.0, 0.0, @@ -32,16 +32,16 @@ const transforms = new Float32Array([ 0.0, 0.0, 1.0, 0.0, 0.5, 0.0, 0.0, 1.0 ]); -const uniformTransformBuffer: IUniformBuffer = { target: "UNIFORM_BUFFER", data: transforms, usage: "DYNAMIC_DRAW" }; +const uniformTransformBuffer: IGLUniformBuffer = { target: "UNIFORM_BUFFER", data: transforms, usage: "DYNAMIC_DRAW" }; const materials = new Float32Array([ 1.0, 0.5, 0.0, 1.0, 0.0, 0.5, 1.0, 1.0 ]); -const uniformMaterialBuffer: IUniformBuffer = { target: "UNIFORM_BUFFER", data: materials, usage: "STATIC_DRAW" }; +const uniformMaterialBuffer: IGLUniformBuffer = { target: "UNIFORM_BUFFER", data: materials, usage: "STATIC_DRAW" }; // -- Render -const rp: IRenderPass = { +const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0, 0, 0, 1], loadOp: "clear" }] }, renderObjects: [{ pipeline: program, diff --git a/examples/src/WebGL2Samples/draw_primitive_restart.ts b/examples/src/WebGL2Samples/draw_primitive_restart.ts index d93b0de..48217d9 100644 --- a/examples/src/WebGL2Samples/draw_primitive_restart.ts +++ b/examples/src/WebGL2Samples/draw_primitive_restart.ts @@ -1,5 +1,4 @@ -import { IIndexBuffer, IRenderObject, IRenderPipeline, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; -import { IRenderingContext } from "../../../src/data/IRenderingContext"; +import { IGLIndexBuffer, IGLRenderingContext, IGLRenderObject, IGLRenderPipeline, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource } from "./utility"; const canvas = document.createElement("canvas"); @@ -8,14 +7,14 @@ canvas.width = Math.min(window.innerWidth, window.innerHeight); canvas.height = canvas.width; document.body.appendChild(canvas); -const renderingContext: IRenderingContext = { canvasId: "glcanvas" }; +const renderingContext: IGLRenderingContext = { canvasId: "glcanvas" }; const webgl = new WebGL(renderingContext); // https://www.khronos.org/registry/webgl/specs/latest/2.0/#5.18 // WebGL 2.0 behaves as though PRIMITIVE_RESTART_FIXED_INDEX were always enabled. const MAX_UNSIGNED_SHORT = 65535; -const vertexPosBuffer: IVertexBuffer = { +const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: new Float32Array([ -1.0, -1.0, @@ -25,14 +24,14 @@ const vertexPosBuffer: IVertexBuffer = { ]) }; -const vertexElementBuffer: IIndexBuffer = { +const vertexElementBuffer: IGLIndexBuffer = { target: "ELEMENT_ARRAY_BUFFER", data: new Uint16Array([ 0, 1, 2, MAX_UNSIGNED_SHORT, 2, 3, 1 ]) }; -const program: IRenderPipeline = { +const program: IGLRenderPipeline = { primitive: { topology: "TRIANGLE_STRIP" }, vertex: { code: getShaderSource("vs") @@ -43,14 +42,14 @@ const program: IRenderPipeline = { } }; -const vertexArray: IVertexArrayObject = { +const vertexArray: IGLVertexArrayObject = { vertices: { pos: { buffer: vertexPosBuffer, numComponents: 2 }, }, index: vertexElementBuffer, }; -const renderObject: IRenderObject = { +const renderObject: IGLRenderObject = { vertexArray, uniforms: {}, drawArrays: { instanceCount: 2 }, diff --git a/examples/src/WebGL2Samples/draw_range_arrays.ts b/examples/src/WebGL2Samples/draw_range_arrays.ts index c614647..a576eb7 100644 --- a/examples/src/WebGL2Samples/draw_range_arrays.ts +++ b/examples/src/WebGL2Samples/draw_range_arrays.ts @@ -1,5 +1,4 @@ -import { IRenderObject, IRenderPass, IRenderPipeline, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; -import { IRenderingContext } from "../../../src/data/IRenderingContext"; +import { IGLRenderingContext, IGLRenderObject, IGLRenderPass, IGLRenderPipeline, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource } from "./utility"; const canvas = document.createElement("canvas"); @@ -8,10 +7,10 @@ canvas.width = window.innerWidth; canvas.height = window.innerHeight; document.body.appendChild(canvas); -const renderingContext: IRenderingContext = { canvasId: "glcanvas" }; +const renderingContext: IGLRenderingContext = { canvasId: "glcanvas" }; const webgl = new WebGL(renderingContext); -const vertexPosBuffer: IVertexBuffer = { +const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: new Float32Array([ -0.8, -0.8, @@ -29,7 +28,7 @@ const vertexPosBuffer: IVertexBuffer = { ]) }; -const pipeline: IRenderPipeline = { +const pipeline: IGLRenderPipeline = { primitive: { topology: "TRIANGLE_STRIP" }, vertex: { code: getShaderSource("vs") @@ -40,19 +39,19 @@ const pipeline: IRenderPipeline = { } }; -const vertexArray: IVertexArrayObject = { +const vertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: vertexPosBuffer, numComponents: 2 }, } }; const vertexCount = 12; -const renderObject: IRenderObject = { +const renderObject: IGLRenderObject = { vertexArray, pipeline, }; -const data: IRenderPass = { +const data: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], diff --git a/examples/src/WebGL2Samples/fbo_blit.ts b/examples/src/WebGL2Samples/fbo_blit.ts index 3781322..693a28e 100644 --- a/examples/src/WebGL2Samples/fbo_blit.ts +++ b/examples/src/WebGL2Samples/fbo_blit.ts @@ -1,4 +1,4 @@ -import { IBlitFramebuffer, IBlitFramebufferItem, IPassDescriptor, IRenderObject, IRenderPass, IRenderPipeline, IRenderbuffer, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexAttributes, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLBlitFramebuffer, IGLBlitFramebufferItem, IGLRenderObject, IGLRenderPass, IGLRenderPassDescriptor, IGLRenderPipeline, IGLRenderbuffer, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexAttributes, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource, loadImage } from "./utility"; const canvas = document.createElement("canvas"); @@ -7,10 +7,10 @@ canvas.width = Math.min(window.innerWidth, window.innerHeight); canvas.height = canvas.width; document.body.appendChild(canvas); -const renderingContext: IRenderingContext = { canvasId: "glcanvas" }; +const renderingContext: IGLRenderingContext = { canvasId: "glcanvas" }; const webgl = new WebGL(renderingContext); -const program: IRenderPipeline = { +const program: IGLRenderPipeline = { primitive: { topology: "TRIANGLES" }, vertex: { code: getShaderSource("vs") @@ -21,7 +21,7 @@ const program: IRenderPipeline = { }, }; -const vertexPosBuffer: IVertexBuffer = { +const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: new Float32Array([ -1.0, -1.0, @@ -33,7 +33,7 @@ const vertexPosBuffer: IVertexBuffer = { ]), usage: "STATIC_DRAW", }; -const vertexTexBuffer: IVertexBuffer = { +const vertexTexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: new Float32Array([ 0.0, 1.0, @@ -46,7 +46,7 @@ const vertexTexBuffer: IVertexBuffer = { usage: "STATIC_DRAW", }; -const vertices: IVertexAttributes = { +const vertices: IGLVertexAttributes = { position: { buffer: vertexPosBuffer, numComponents: 2 }, texcoord: { buffer: vertexTexBuffer, numComponents: 2 }, }; @@ -58,7 +58,7 @@ loadImage("../../assets/img/Di-3d.png", (image) => y: image.height }; - const textureDiffuse: ITexture = { + const textureDiffuse: IGLTexture = { internalformat: "RGBA", format: "RGBA", type: "UNSIGNED_BYTE", @@ -67,33 +67,33 @@ loadImage("../../assets/img/Di-3d.png", (image) => }, sources: [{ source: image }], }; - const samplerDiffuse: ISampler = { + const samplerDiffuse: IGLSampler = { minFilter: "LINEAR", magFilter: "LINEAR", }; - const textureColorBuffer: ITexture = { + const textureColorBuffer: IGLTexture = { internalformat: "RGBA", format: "RGBA", type: "UNSIGNED_BYTE", sources: [{ width: FRAMEBUFFER_SIZE.x, height: FRAMEBUFFER_SIZE.y, border: 0 }], }; - const samplerColorBuffer: ISampler = { + const samplerColorBuffer: IGLSampler = { minFilter: "LINEAR", magFilter: "LINEAR", }; - const colorRenderbuffer: IRenderbuffer = { + const colorRenderbuffer: IGLRenderbuffer = { internalformat: "RGBA4", width: FRAMEBUFFER_SIZE.x, height: FRAMEBUFFER_SIZE.y, }; - const vertexArray: IVertexArrayObject = { + const vertexArray: IGLVertexArrayObject = { vertices, }; - const renderObject: IRenderObject = { + const renderObject: IGLRenderObject = { pipeline: program, viewport: { x: 0, y: 0, width: FRAMEBUFFER_SIZE.x, height: FRAMEBUFFER_SIZE.y }, vertexArray, @@ -110,7 +110,7 @@ loadImage("../../assets/img/Di-3d.png", (image) => }; // Render FBO - const fboRenderPass: IRenderPass = { + const fboRenderPass: IGLRenderPass = { descriptor: { colorAttachments: [{ view: colorRenderbuffer, @@ -120,7 +120,7 @@ loadImage("../../assets/img/Di-3d.png", (image) => renderObjects: [renderObject], }; - const framebufferResolve: IPassDescriptor = { + const framebufferResolve: IGLRenderPassDescriptor = { colorAttachments: [{ view: { texture: textureColorBuffer, level: 0 }, clearValue: [0.7, 0.0, 0.0, 1.0] @@ -128,11 +128,11 @@ loadImage("../../assets/img/Di-3d.png", (image) => }; // - const renderPassResolve: IRenderPass = { + const renderPassResolve: IGLRenderPass = { descriptor: framebufferResolve, }; - const blitFramebuffers: IBlitFramebufferItem[] = []; + const blitFramebuffers: IGLBlitFramebufferItem[] = []; const TILE = 4; const BORDER = 2; for (let j = 0; j < TILE; j++) @@ -155,13 +155,13 @@ loadImage("../../assets/img/Di-3d.png", (image) => } } - const blitFramebuffer: IBlitFramebuffer = { + const blitFramebuffer: IGLBlitFramebuffer = { read: fboRenderPass.descriptor, draw: renderPassResolve.descriptor, blitFramebuffers, }; - const renderObject2: IRenderObject = { + const renderObject2: IGLRenderObject = { viewport: { x: 0, y: 0, width: canvas.width, height: canvas.height }, vertexArray, uniforms: { @@ -177,7 +177,7 @@ loadImage("../../assets/img/Di-3d.png", (image) => pipeline: program, }; - const renderPass2: IRenderPass = { + const renderPass2: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], diff --git a/examples/src/WebGL2Samples/fbo_multisample.ts b/examples/src/WebGL2Samples/fbo_multisample.ts index b106907..87478ae 100644 --- a/examples/src/WebGL2Samples/fbo_multisample.ts +++ b/examples/src/WebGL2Samples/fbo_multisample.ts @@ -1,4 +1,4 @@ -import { IBlitFramebuffer, IPassDescriptor, IRenderPass, IRenderPipeline, IRenderbuffer, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLBlitFramebuffer, IGLRenderPass, IGLRenderPassDescriptor, IGLRenderPipeline, IGLRenderbuffer, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { mat4, vec3 } from "gl-matrix"; import { getShaderSource } from "./utility"; @@ -8,7 +8,7 @@ canvas.width = Math.min(window.innerWidth, window.innerHeight); canvas.height = canvas.width; document.body.appendChild(canvas); -const renderingContext: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; +const renderingContext: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; const webgl = new WebGL(renderingContext); // -- Init program @@ -18,7 +18,7 @@ const PROGRAM = { MAX: 2 }; -const programs: IRenderPipeline[] = [ +const programs: IGLRenderPipeline[] = [ { vertex: { code: getShaderSource("vs-render") }, fragment: { code: getShaderSource("fs-render") }, @@ -44,7 +44,7 @@ for (let i = 0; i < vertexCount; i++) } // -- Init buffers -const vertexDataBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data, usage: "STATIC_DRAW" }; +const vertexDataBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data, usage: "STATIC_DRAW" }; const positions = new Float32Array([ -1.0, -1.0, @@ -54,7 +54,7 @@ const positions = new Float32Array([ -1.0, 1.0, -1.0, -1.0 ]); -const vertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; +const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; const texCoords = new Float32Array([ 0.0, 1.0, @@ -64,7 +64,7 @@ const texCoords = new Float32Array([ 0.0, 0.0, 0.0, 1.0 ]); -const vertexTexBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; +const vertexTexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; // -- Init Texture // used for draw framebuffer storage @@ -72,20 +72,20 @@ const FRAMEBUFFER_SIZE = { x: canvas.width, y: canvas.height }; -const texture: ITexture = { +const texture: IGLTexture = { internalformat: "RGBA", format: "RGBA", type: "UNSIGNED_BYTE", sources: [{ level: 0, width: FRAMEBUFFER_SIZE.x, height: FRAMEBUFFER_SIZE.y, border: 0, pixels: null }], }; -const sampler: ISampler = { minFilter: "NEAREST", magFilter: "NEAREST" }; +const sampler: IGLSampler = { minFilter: "NEAREST", magFilter: "NEAREST" }; // -- Init Frame Buffers const FRAMEBUFFER = { RENDERBUFFER: 0, COLORBUFFER: 1 }; -const colorRenderbuffer: IRenderbuffer = { samples: 4, internalformat: "RGBA8", width: FRAMEBUFFER_SIZE.x, height: FRAMEBUFFER_SIZE.y }; +const colorRenderbuffer: IGLRenderbuffer = { samples: 4, internalformat: "RGBA8", width: FRAMEBUFFER_SIZE.x, height: FRAMEBUFFER_SIZE.y }; -const framebuffers: IPassDescriptor[] = [ +const framebuffers: IGLRenderPassDescriptor[] = [ { colorAttachments: [{ view: colorRenderbuffer, clearValue: [0.0, 0.0, 0.0, 1.0] }], }, @@ -95,7 +95,7 @@ const framebuffers: IPassDescriptor[] = [ ]; // -- Init VertexArray -const vertexArrays: IVertexArrayObject[] = [ +const vertexArrays: IGLVertexArrayObject[] = [ { vertices: { position: { buffer: vertexDataBuffer, numComponents: 2 } } }, @@ -112,7 +112,7 @@ const IDENTITY = mat4.create(); // -- Render // Pass 1 -const renderPass1: IRenderPass = { +const renderPass1: IGLRenderPass = { descriptor: framebuffers[FRAMEBUFFER.RENDERBUFFER], renderObjects: [{ pipeline: programs[PROGRAM.TEXTURE], @@ -125,7 +125,7 @@ const renderPass1: IRenderPass = { webgl.runRenderPass(renderPass1); // Blit framebuffers, no Multisample texture 2d in WebGL 2 -const blitFramebuffer: IBlitFramebuffer = { +const blitFramebuffer: IGLBlitFramebuffer = { read: framebuffers[FRAMEBUFFER.RENDERBUFFER], draw: framebuffers[FRAMEBUFFER.COLORBUFFER], blitFramebuffers: [[0, 0, FRAMEBUFFER_SIZE.x, FRAMEBUFFER_SIZE.y, @@ -141,7 +141,7 @@ vec3.set(scaleVector3, 8.0, 8.0, 8.0); const mvp = mat4.create(); mat4.scale(mvp, IDENTITY, scaleVector3); -const renderPass2: IRenderPass = { +const renderPass2: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [ { diff --git a/examples/src/WebGL2Samples/fbo_new_blend_equation.ts b/examples/src/WebGL2Samples/fbo_new_blend_equation.ts index 85ed2ad..689efb4 100644 --- a/examples/src/WebGL2Samples/fbo_new_blend_equation.ts +++ b/examples/src/WebGL2Samples/fbo_new_blend_equation.ts @@ -1,5 +1,5 @@ -import { IRenderObject, IRenderPass, IRenderPipeline, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; -import { IViewport } from "../../../src/data/IViewport"; +import { IGLRenderObject, IGLRenderPass, IGLRenderPipeline, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, IGLViewport, WebGL } from "@feng3d/webgl-renderer"; + import { getShaderSource, loadImage } from "./utility"; const canvas = document.createElement("canvas"); @@ -8,7 +8,7 @@ canvas.width = Math.min(window.innerWidth, window.innerHeight); canvas.height = canvas.width; document.body.appendChild(canvas); -const renderingContext: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; +const renderingContext: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; const webgl = new WebGL(renderingContext); // -- Divide viewport @@ -58,7 +58,7 @@ viewport[Corners.TOP_LEFT] = { // -- Initialize program -const program: IRenderPipeline = { +const program: IGLRenderPipeline = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs"), targets: [{ blend: {} }] }, }; @@ -72,7 +72,7 @@ const positions = new Float32Array([ -1.0, 1.0, -1.0, -1.0 ]); -const vertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; +const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; const texcoords = new Float32Array([ 0.0, 1.0, @@ -82,10 +82,10 @@ const texcoords = new Float32Array([ 0.0, 0.0, 0.0, 1.0 ]); -const vertexTexBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: texcoords, usage: "STATIC_DRAW" }; +const vertexTexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: texcoords, usage: "STATIC_DRAW" }; // -- Initilize vertex array -const vertexArray: IVertexArrayObject = { +const vertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: vertexPosBuffer, numComponents: 2 }, textureCoordinates: { buffer: vertexTexBuffer, numComponents: 2 }, @@ -93,12 +93,12 @@ const vertexArray: IVertexArrayObject = { }; // -- Load texture then render -const sampler: ISampler = { +const sampler: IGLSampler = { minFilter: "LINEAR", magFilter: "LINEAR" }; const imageUrl = "../../assets/img/Di-3d.png"; -let texture: ITexture; +let texture: IGLTexture; loadImage(imageUrl, function (image) { texture = { @@ -121,21 +121,21 @@ function render() 0.0, 0.0, 0.0, 1.0 ]); - const renderObject: IRenderObject = { + const renderObject: IGLRenderObject = { pipeline: program, vertexArray, uniforms: { mvp: matrix, diffuse: { texture, sampler } }, drawArrays: { vertexCount: 6 }, }; - const renderPass: IRenderPass = { + const renderPass: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.5, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [], }; for (let i = 0; i < Corners.MAX; ++i) { - const viewport0: IViewport = { x: viewport[i].x, y: viewport[i].y, width: viewport[i].z, height: viewport[i].w }; + const viewport0: IGLViewport = { x: viewport[i].x, y: viewport[i].y, width: viewport[i].z, height: viewport[i].w }; if (i === Corners.TOP_LEFT) { diff --git a/examples/src/WebGL2Samples/fbo_read_pixels.ts b/examples/src/WebGL2Samples/fbo_read_pixels.ts index a322c5c..9c84615 100644 --- a/examples/src/WebGL2Samples/fbo_read_pixels.ts +++ b/examples/src/WebGL2Samples/fbo_read_pixels.ts @@ -1,4 +1,4 @@ -import { IFramebuffer, IRenderObject, IRenderPass, IRenderPipeline, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLFramebuffer, IGLRenderObject, IGLRenderPass, IGLRenderPipeline, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource } from "./utility"; const canvas = document.createElement("canvas"); @@ -7,7 +7,7 @@ canvas.width = Math.min(window.innerWidth, window.innerHeight); canvas.height = canvas.width; document.body.appendChild(canvas); -const renderingContext: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; +const renderingContext: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; const webgl = new WebGL(renderingContext); // -- Divide viewport @@ -50,13 +50,13 @@ viewport[Textures.BLUE] = { // -- Initialize program // Multiple out shaders -const multipleOutputProgram: IRenderPipeline = { +const multipleOutputProgram: IGLRenderPipeline = { vertex: { code: getShaderSource("vs-multiple-output") }, fragment: { code: getShaderSource("fs-multiple-output") }, primitive: { topology: "TRIANGLES" }, }; // Layer shaders -const layerProgram: IRenderPipeline = { +const layerProgram: IGLRenderPipeline = { vertex: { code: getShaderSource("vs-layer") }, fragment: { code: getShaderSource("fs-layer") }, primitive: { topology: "TRIANGLES" }, }; @@ -71,7 +71,7 @@ const positions = new Float32Array([ -1.0, 1.0, -1.0, -1.0 ]); -const vertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; +const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; const texcoords = new Float32Array([ 0.0, 0.0, @@ -81,17 +81,17 @@ const texcoords = new Float32Array([ 0.0, 1.0, 0.0, 0.0 ]); -const vertexTexBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: texcoords, usage: "STATIC_DRAW" }; +const vertexTexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: texcoords, usage: "STATIC_DRAW" }; // -- Initialize vertex array -const multipleOutputVertexArray: IVertexArrayObject = { +const multipleOutputVertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: vertexPosBuffer, numComponents: 2 }, } }; -const layerVertexArray: IVertexArrayObject = { +const layerVertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: vertexPosBuffer, numComponents: 2 }, textureCoordinates: { buffer: vertexTexBuffer, numComponents: 2 }, @@ -103,18 +103,18 @@ const layerVertexArray: IVertexArrayObject = { const w = 16; const h = 16; -const texture: ITexture = { +const texture: IGLTexture = { target: "TEXTURE_2D_ARRAY", sources: [{ width: w, height: h, level: 0, depth: 3 }], internalformat: "RGB8", format: "RGB", type: "UNSIGNED_BYTE", }; -const sampler: ISampler = { lodMinClamp: 0, lodMaxClamp: 0, minFilter: "NEAREST", magFilter: "NEAREST" }; +const sampler: IGLSampler = { lodMinClamp: 0, lodMaxClamp: 0, minFilter: "NEAREST", magFilter: "NEAREST" }; // -- Initialize frame buffer -const frameBuffer: IFramebuffer = { +const frameBuffer: IGLFramebuffer = { colorAttachments: [ { view: { texture, level: 0, layer: Textures.RED } }, { view: { texture, level: 0, layer: Textures.GREEN } }, @@ -131,7 +131,7 @@ const matrix = new Float32Array([ 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ]); -const rp1: IRenderPass = { +const rp1: IGLRenderPass = { descriptor: frameBuffer, renderObjects: [{ pipeline: multipleOutputProgram, @@ -144,12 +144,12 @@ const rp1: IRenderPass = { webgl.runRenderPass(rp1); // Pass 2 -const rp: IRenderPass = { +const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [] }; -const ro: IRenderObject = { +const ro: IGLRenderObject = { pipeline: layerProgram, uniforms: { mvp: matrix, diff --git a/examples/src/WebGL2Samples/fbo_rtt_depth_texture.ts b/examples/src/WebGL2Samples/fbo_rtt_depth_texture.ts index 8fdf329..129eb5f 100644 --- a/examples/src/WebGL2Samples/fbo_rtt_depth_texture.ts +++ b/examples/src/WebGL2Samples/fbo_rtt_depth_texture.ts @@ -1,4 +1,4 @@ -import { IFramebuffer, IRenderPass, IRenderPipeline, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLFramebuffer, IGLRenderPass, IGLRenderPipeline, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource } from "./utility"; const canvas = document.createElement("canvas"); @@ -7,7 +7,7 @@ canvas.width = window.innerWidth; canvas.height = window.innerHeight; document.body.appendChild(canvas); -const renderingContext: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; +const renderingContext: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; const webgl = new WebGL(renderingContext); const windowSize = { @@ -18,14 +18,14 @@ const windowSize = { // -- Initialize program // Depth shaders -const depthProgram: IRenderPipeline = { +const depthProgram: IGLRenderPipeline = { vertex: { code: getShaderSource("vs-depth") }, fragment: { code: getShaderSource("fs-depth") }, depthStencil: { depth: { depthtest: true } }, primitive: { topology: "TRIANGLES" }, }; // Draw shaders -const drawProgram: IRenderPipeline = { +const drawProgram: IGLRenderPipeline = { vertex: { code: getShaderSource("vs-draw") }, fragment: { code: getShaderSource("fs-draw") }, primitive: { topology: "TRIANGLES" }, }; @@ -37,7 +37,7 @@ const triPositions = new Float32Array([ 0.5, -0.5, -1.0, 0.0, 0.5, 1.0 ]); -const triVertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: triPositions, usage: "STATIC_DRAW" }; +const triVertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: triPositions, usage: "STATIC_DRAW" }; const quadPositions = new Float32Array([ -1.0, -1.0, @@ -47,7 +47,7 @@ const quadPositions = new Float32Array([ -1.0, 1.0, -1.0, -1.0 ]); -const quadVertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: quadPositions, usage: "STATIC_DRAW" }; +const quadVertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: quadPositions, usage: "STATIC_DRAW" }; const quadTexcoords = new Float32Array([ 0.0, 0.0, @@ -57,17 +57,17 @@ const quadTexcoords = new Float32Array([ 0.0, 1.0, 0.0, 0.0 ]); -const quadVertexTexBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: quadTexcoords, usage: "STATIC_DRAW" }; +const quadVertexTexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: quadTexcoords, usage: "STATIC_DRAW" }; // -- Initialize vertex array -const triVertexArray: IVertexArrayObject = { +const triVertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: triVertexPosBuffer, numComponents: 3 }, } }; -const quadVertexArray: IVertexArrayObject = { +const quadVertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: quadVertexPosBuffer, numComponents: 2 }, textureCoordinates: { buffer: quadVertexTexBuffer, numComponents: 2 }, @@ -78,17 +78,17 @@ const quadVertexArray: IVertexArrayObject = { // the proper texture format combination can be found here // https://www.khronos.org/registry/OpenGL-Refpages/es3.0/html/glTexImage2D.xhtml -const depthTexture: ITexture = { +const depthTexture: IGLTexture = { sources: [{ width: windowSize.x, height: windowSize.y, level: 0 }], internalformat: "DEPTH_COMPONENT16", format: "DEPTH_COMPONENT", type: "UNSIGNED_SHORT", }; -const depthSampler: ISampler = { wrapS: "CLAMP_TO_EDGE", wrapT: "CLAMP_TO_EDGE", minFilter: "NEAREST", magFilter: "NEAREST" }; +const depthSampler: IGLSampler = { wrapS: "CLAMP_TO_EDGE", wrapT: "CLAMP_TO_EDGE", minFilter: "NEAREST", magFilter: "NEAREST" }; // -- Initialize frame buffer -const frameBuffer: IFramebuffer = { +const frameBuffer: IGLFramebuffer = { colorAttachments: [], depthStencilAttachment: { view: { texture: depthTexture, level: 0 }, depthLoadOp: "clear" }, }; @@ -96,7 +96,7 @@ const frameBuffer: IFramebuffer = { // -- Render // Pass 1: Depth -const renderPass: IRenderPass = { +const renderPass: IGLRenderPass = { descriptor: frameBuffer, renderObjects: [{ pipeline: depthProgram, @@ -108,7 +108,7 @@ const renderPass: IRenderPass = { webgl.runRenderPass(renderPass); // Pass 2: Draw -const rp2: IRenderPass = { +const rp2: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }], }, diff --git a/examples/src/WebGL2Samples/fbo_rtt_draw_buffers.ts b/examples/src/WebGL2Samples/fbo_rtt_draw_buffers.ts index b94f5e0..4b64ee2 100644 --- a/examples/src/WebGL2Samples/fbo_rtt_draw_buffers.ts +++ b/examples/src/WebGL2Samples/fbo_rtt_draw_buffers.ts @@ -1,4 +1,4 @@ -import { IFramebuffer, IRenderPass, IRenderPipeline, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLFramebuffer, IGLRenderPass, IGLRenderPipeline, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource } from "./utility"; const canvas = document.createElement("canvas"); @@ -7,7 +7,7 @@ canvas.width = window.innerWidth; canvas.height = window.innerHeight; document.body.appendChild(canvas); -const renderingContext: IRenderingContext = { canvasId: "glcanvas" }; +const renderingContext: IGLRenderingContext = { canvasId: "glcanvas" }; const webgl = new WebGL(renderingContext); const windowSize = { @@ -18,14 +18,14 @@ const windowSize = { // -- Initialize program // Draw buffer shaders -const drawBufferProgram: IRenderPipeline = { +const drawBufferProgram: IGLRenderPipeline = { vertex: { code: getShaderSource("vs-draw-buffer") }, fragment: { code: getShaderSource("fs-draw-buffer") }, primitive: { topology: "TRIANGLES" }, }; // Draw shaders -const drawProgram: IRenderPipeline = { +const drawProgram: IGLRenderPipeline = { vertex: { code: getShaderSource("vs-draw") }, fragment: { code: getShaderSource("fs-draw") }, primitive: { topology: "TRIANGLES" }, @@ -38,7 +38,7 @@ const triPositions = new Float32Array([ 0.5, -0.5, -1.0, 0.0, 0.5, 1.0 ]); -const triVertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: triPositions, usage: "STATIC_DRAW" }; +const triVertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: triPositions, usage: "STATIC_DRAW" }; const quadPositions = new Float32Array([ -1.0, -1.0, @@ -48,7 +48,7 @@ const quadPositions = new Float32Array([ -1.0, 1.0, -1.0, -1.0 ]); -const quadVertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: quadPositions, usage: "STATIC_DRAW" }; +const quadVertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: quadPositions, usage: "STATIC_DRAW" }; const quadTexcoords = new Float32Array([ 0.0, 0.0, @@ -58,17 +58,17 @@ const quadTexcoords = new Float32Array([ 0.0, 1.0, 0.0, 0.0 ]); -const quadVertexTexBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: quadTexcoords, usage: "STATIC_DRAW" }; +const quadVertexTexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: quadTexcoords, usage: "STATIC_DRAW" }; // -- Initialize vertex array -const triVertexArray: IVertexArrayObject = { +const triVertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: triVertexPosBuffer, numComponents: 3 } } }; -const quadVertexArray: IVertexArrayObject = { +const quadVertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: quadVertexPosBuffer, numComponents: 2 }, textureCoordinates: { buffer: quadVertexTexBuffer, numComponents: 2 }, @@ -77,25 +77,25 @@ const quadVertexArray: IVertexArrayObject = { // -- Initialize texture targets -const color1Texture: ITexture = { +const color1Texture: IGLTexture = { internalformat: "RGBA", format: "RGBA", type: "UNSIGNED_BYTE", sources: [{ width: windowSize.x, height: windowSize.y }], }; -const color1Sampler: ISampler = { wrapS: "CLAMP_TO_EDGE", wrapT: "CLAMP_TO_EDGE", minFilter: "NEAREST", magFilter: "NEAREST" }; +const color1Sampler: IGLSampler = { wrapS: "CLAMP_TO_EDGE", wrapT: "CLAMP_TO_EDGE", minFilter: "NEAREST", magFilter: "NEAREST" }; -const color2Texture: ITexture = { +const color2Texture: IGLTexture = { internalformat: "RGBA", format: "RGBA", type: "UNSIGNED_BYTE", sources: [{ width: windowSize.x, height: windowSize.y }], }; -const color2Sampler: ISampler = { wrapS: "CLAMP_TO_EDGE", wrapT: "CLAMP_TO_EDGE", minFilter: "NEAREST", magFilter: "NEAREST" }; +const color2Sampler: IGLSampler = { wrapS: "CLAMP_TO_EDGE", wrapT: "CLAMP_TO_EDGE", minFilter: "NEAREST", magFilter: "NEAREST" }; // -- Initialize frame buffer -const frameBuffer: IFramebuffer = { +const frameBuffer: IGLFramebuffer = { colorAttachments: [ { view: { texture: color1Texture, level: 0 } }, { view: { texture: color2Texture, level: 0 } }, @@ -104,7 +104,7 @@ const frameBuffer: IFramebuffer = { // -- Render -const renderPass: IRenderPass = { +const renderPass: IGLRenderPass = { descriptor: frameBuffer, renderObjects: [{ pipeline: drawBufferProgram, @@ -115,7 +115,7 @@ const renderPass: IRenderPass = { webgl.runRenderPass(renderPass); // Pass 2: Draw to screen -const renderPass2: IRenderPass = { +const renderPass2: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [{ pipeline: drawProgram, diff --git a/examples/src/WebGL2Samples/fbo_rtt_texture_array.ts b/examples/src/WebGL2Samples/fbo_rtt_texture_array.ts index 9286c75..7fc9d82 100644 --- a/examples/src/WebGL2Samples/fbo_rtt_texture_array.ts +++ b/examples/src/WebGL2Samples/fbo_rtt_texture_array.ts @@ -1,4 +1,4 @@ -import { IFramebuffer, IRenderObject, IRenderPass, IRenderPipeline, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLFramebuffer, IGLRenderObject, IGLRenderPass, IGLRenderPipeline, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource } from "./utility"; const canvas = document.createElement("canvas"); @@ -7,7 +7,7 @@ canvas.width = Math.min(window.innerWidth, window.innerHeight); canvas.height = canvas.width; document.body.appendChild(canvas); -const renderingContext: IRenderingContext = { canvasId: "glcanvas" }; +const renderingContext: IGLRenderingContext = { canvasId: "glcanvas" }; const webgl = new WebGL(renderingContext); // -- Divide viewport @@ -50,13 +50,13 @@ viewport[Textures.BLUE] = { // -- Initialize program // Multiple out shaders -const multipleOutputProgram: IRenderPipeline = { +const multipleOutputProgram: IGLRenderPipeline = { vertex: { code: getShaderSource("vs-multiple-output") }, fragment: { code: getShaderSource("fs-multiple-output") }, primitive: { topology: "TRIANGLES" }, }; // Layer shaders -const layerProgram: IRenderPipeline = { +const layerProgram: IGLRenderPipeline = { vertex: { code: getShaderSource("vs-layer") }, fragment: { code: getShaderSource("fs-layer") }, primitive: { topology: "TRIANGLES" }, }; @@ -71,7 +71,7 @@ const positions = new Float32Array([ -1.0, 1.0, -1.0, -1.0 ]); -const vertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; +const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; const texcoords = new Float32Array([ 0.0, 0.0, @@ -81,17 +81,17 @@ const texcoords = new Float32Array([ 0.0, 1.0, 0.0, 0.0 ]); -const vertexTexBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: texcoords, usage: "STATIC_DRAW" }; +const vertexTexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: texcoords, usage: "STATIC_DRAW" }; // -- Initialize vertex array -const multipleOutputVertexArray: IVertexArrayObject = { +const multipleOutputVertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: vertexPosBuffer, numComponents: 2 }, } }; -const layerVertexArray: IVertexArrayObject = { +const layerVertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: vertexPosBuffer, numComponents: 2 }, textureCoordinates: { buffer: vertexTexBuffer, numComponents: 2 }, @@ -103,18 +103,18 @@ const layerVertexArray: IVertexArrayObject = { const w = 16; const h = 16; -const texture: ITexture = { +const texture: IGLTexture = { target: "TEXTURE_2D_ARRAY", internalformat: "RGBA", format: "RGBA", type: "UNSIGNED_BYTE", sources: [{ level: 0, width: w, height: h, depth: 3 }], }; -const sampler: ISampler = { minFilter: "NEAREST", magFilter: "NEAREST", lodMinClamp: 0, lodMaxClamp: 0 }; +const sampler: IGLSampler = { minFilter: "NEAREST", magFilter: "NEAREST", lodMinClamp: 0, lodMaxClamp: 0 }; // -- Initialize frame buffer -const frameBuffer: IFramebuffer = { +const frameBuffer: IGLFramebuffer = { colorAttachments: [ { view: { texture, level: 0, layer: Textures.RED } }, { view: { texture, level: 0, layer: Textures.GREEN } }, @@ -133,7 +133,7 @@ const matrix = new Float32Array([ 0.0, 0.0, 0.0, 1.0 ]); -const renderPass1: IRenderPass = { +const renderPass1: IGLRenderPass = { descriptor: frameBuffer, renderObjects: [{ pipeline: multipleOutputProgram, @@ -146,14 +146,14 @@ const renderPass1: IRenderPass = { // Pass 2 -const renderPass: IRenderPass = { +const renderPass: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }], }, renderObjects: [], }; -const renderObject: IRenderObject = { +const renderObject: IGLRenderObject = { pipeline: layerProgram, uniforms: { mvp: matrix, diffuse: { texture, sampler } }, vertexArray: layerVertexArray, diff --git a/examples/src/WebGL2Samples/geo_vertex_format.ts b/examples/src/WebGL2Samples/geo_vertex_format.ts index c0260e3..971c855 100644 --- a/examples/src/WebGL2Samples/geo_vertex_format.ts +++ b/examples/src/WebGL2Samples/geo_vertex_format.ts @@ -1,4 +1,4 @@ -import { IIndexBuffer, IProgram, IRenderObject, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLIndexBuffer, IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { mat4, vec3 } from "gl-matrix"; import { HalfFloat } from "./third-party/HalfFloatUtility"; import { getShaderSource, loadImage } from "./utility"; @@ -11,11 +11,11 @@ import { getShaderSource, loadImage } from "./utility"; canvas.height = canvas.width; document.body.appendChild(canvas); - const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; + const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; const webgl = new WebGL(rc); // -- Init program - const program: IProgram = { + const program: IGLProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") }, primitive: { topology: "TRIANGLES", cullFace: { enableCullFace: true, cullMode: "BACK" } }, depthStencil: { depth: { depthtest: true } }, @@ -59,7 +59,7 @@ import { getShaderSource, loadImage } from "./utility"; -1.0, 1.0, 1.0, -1.0, 1.0, -1.0 ]); - const vertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; + const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; const normals = HalfFloat.Float16Array([ // Front face @@ -98,7 +98,7 @@ import { getShaderSource, loadImage } from "./utility"; 1, 0, 0, 1, 0, 0 ]); - const vertexNorBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: normals, usage: "STATIC_DRAW" }; + const vertexNorBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: normals, usage: "STATIC_DRAW" }; const texCoords = HalfFloat.Float16Array([ // Front face @@ -137,7 +137,7 @@ import { getShaderSource, loadImage } from "./utility"; 1.0, 1.0, 1.0, 0.0 ]); - const vertexTexBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; + const vertexTexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; // Element buffer @@ -150,11 +150,11 @@ import { getShaderSource, loadImage } from "./utility"; 20, 21, 22, 20, 22, 23 // left ]; - const indexBuffer: IIndexBuffer = { target: "ELEMENT_ARRAY_BUFFER", data: new Uint16Array(cubeVertexIndices), usage: "STATIC_DRAW" }; + const indexBuffer: IGLIndexBuffer = { target: "ELEMENT_ARRAY_BUFFER", data: new Uint16Array(cubeVertexIndices), usage: "STATIC_DRAW" }; // -- Init VertexArray - const vertexArray: IVertexArrayObject = { + const vertexArray: IGLVertexArrayObject = { vertices: { a_position: { type: "FLOAT", buffer: vertexPosBuffer, numComponents: 3 }, a_normal: { type: "HALF_FLOAT", buffer: vertexNorBuffer, numComponents: 3 }, @@ -166,8 +166,8 @@ import { getShaderSource, loadImage } from "./utility"; // -- Init Texture const imageUrl = "../../assets/img/Di-3d.png"; - let texture: ITexture; - let sampler: ISampler; + let texture: IGLTexture; + let sampler: IGLSampler; loadImage(imageUrl, function (image) { // -- Init 2D Texture @@ -209,7 +209,7 @@ import { getShaderSource, loadImage } from "./utility"; const lightPosition = [0.0, 0.0, 5.0]; - const ro: IRenderObject = { + const ro: IGLRenderObject = { pipeline: program, vertexArray, uniforms: { @@ -221,7 +221,7 @@ import { getShaderSource, loadImage } from "./utility"; drawElements: { indexCount: 36 }, }; - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [ro], }; diff --git a/examples/src/WebGL2Samples/glsl_centroid.ts b/examples/src/WebGL2Samples/glsl_centroid.ts index d98c6f7..0a14a0b 100644 --- a/examples/src/WebGL2Samples/glsl_centroid.ts +++ b/examples/src/WebGL2Samples/glsl_centroid.ts @@ -1,4 +1,4 @@ -import { IBlitFramebuffer, IFramebuffer, IProgram, IRenderObject, IRenderPass, IRenderbuffer, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLBlitFramebuffer, IGLFramebuffer, IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderbuffer, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { mat4, vec3 } from "gl-matrix"; import { getShaderSource } from "./utility"; @@ -8,7 +8,7 @@ canvas.width = window.innerWidth; canvas.height = window.innerHeight; document.body.appendChild(canvas); -const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; +const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; const webgl = new WebGL(rc); // -- Divide viewport @@ -47,7 +47,7 @@ const PROGRAM = { MAX: 3 }; -const programs: IProgram[] = [ +const programs: IGLProgram[] = [ { vertex: { code: getShaderSource("vs-render") }, fragment: { code: getShaderSource("fs-render") }, primitive: { topology: "TRIANGLES" }, @@ -76,9 +76,9 @@ const data = new Float32Array([ ]); // -- Init buffers -const vertexPositionBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; +const vertexPositionBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; -const vertexDataBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data, usage: "STATIC_DRAW" }; +const vertexDataBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data, usage: "STATIC_DRAW" }; // Draw the rect texture // This can be discarded when gl_VertexID is available @@ -90,7 +90,7 @@ const textureVertexPositions = new Float32Array([ -1.0, 1.0, -1.0, -1.0 ]); -const texVertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: textureVertexPositions, usage: "STATIC_DRAW" }; +const texVertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: textureVertexPositions, usage: "STATIC_DRAW" }; const textureVertexTexCoords = new Float32Array([ 0.0, 1.0, @@ -100,7 +100,7 @@ const textureVertexTexCoords = new Float32Array([ 0.0, 0.0, 0.0, 1.0 ]); -const texVertexTexBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: textureVertexTexCoords, usage: "STATIC_DRAW" }; +const texVertexTexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: textureVertexTexCoords, usage: "STATIC_DRAW" }; // -- Init Texture // used for draw framebuffer storage @@ -108,8 +108,8 @@ const FRAMEBUFFER_SIZE = { x: canvas.width, y: canvas.height }; -const textures: ITexture[] = []; -const samplers: ISampler[] = []; +const textures: IGLTexture[] = []; +const samplers: IGLSampler[] = []; for (let i = 0; i < VIEWPORTS.MAX; ++i) { @@ -125,9 +125,9 @@ for (let i = 0; i < VIEWPORTS.MAX; ++i) // -- Init Frame Buffers // non-centroid -const colorRenderbuffer: IRenderbuffer = { samples: 4, internalformat: "RGBA8", width: FRAMEBUFFER_SIZE.x, height: FRAMEBUFFER_SIZE.y }; +const colorRenderbuffer: IGLRenderbuffer = { samples: 4, internalformat: "RGBA8", width: FRAMEBUFFER_SIZE.x, height: FRAMEBUFFER_SIZE.y }; // centroid -const colorRenderbufferCentroid: IRenderbuffer = { samples: 4, internalformat: "RGBA8", width: FRAMEBUFFER_SIZE.x, height: FRAMEBUFFER_SIZE.y }; +const colorRenderbufferCentroid: IGLRenderbuffer = { samples: 4, internalformat: "RGBA8", width: FRAMEBUFFER_SIZE.x, height: FRAMEBUFFER_SIZE.y }; const FRAMEBUFFER = { RENDERBUFFER: 0, @@ -136,7 +136,7 @@ const FRAMEBUFFER = { COLORBUFFER_CENTROID: 3 }; -const framebuffers: IFramebuffer[] = [ +const framebuffers: IGLFramebuffer[] = [ { colorAttachments: [{ view: colorRenderbuffer, clearValue: [0, 0, 0, 1], loadOp: "clear" }] }, { colorAttachments: [{ view: colorRenderbufferCentroid, clearValue: [0, 0, 0, 1], loadOp: "clear" }] }, { colorAttachments: [{ view: { texture: textures[0], level: 0 }, clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, @@ -144,7 +144,7 @@ const framebuffers: IFramebuffer[] = [ ]; // -- Init VertexArray -const vertexArrays: IVertexArrayObject[] = [ +const vertexArrays: IGLVertexArrayObject[] = [ { vertices: { position: { buffer: vertexPositionBuffer, numComponents: 2 }, @@ -172,7 +172,7 @@ const IDENTITY = mat4.create(); for (let i = 0; i < VIEWPORTS.MAX; ++i) { // render buffers - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: framebuffers[i], renderObjects: [{ pipeline: programs[i], @@ -185,7 +185,7 @@ for (let i = 0; i < VIEWPORTS.MAX; ++i) // Blit framebuffers, no Multisample texture 2d in WebGL 2 // centroid will only work with multisample - const blit: IBlitFramebuffer = { + const blit: IGLBlitFramebuffer = { read: framebuffers[i], draw: framebuffers[i + 2], blitFramebuffers: [[ @@ -198,10 +198,10 @@ for (let i = 0; i < VIEWPORTS.MAX; ++i) } // Pass 2 -const rp2: IRenderPass = { +const rp2: IGLRenderPass = { renderObjects: [], }; -const ro: IRenderObject = { +const ro: IGLRenderObject = { pipeline: programs[PROGRAM.SPLASH], vertexArray: vertexArrays[PROGRAM.SPLASH], }; diff --git a/examples/src/WebGL2Samples/glsl_flat_smooth_interpolators.ts b/examples/src/WebGL2Samples/glsl_flat_smooth_interpolators.ts index fe44e78..741b356 100644 --- a/examples/src/WebGL2Samples/glsl_flat_smooth_interpolators.ts +++ b/examples/src/WebGL2Samples/glsl_flat_smooth_interpolators.ts @@ -1,4 +1,4 @@ -import { IIndexBuffer, IProgram, IRenderPass, IRenderingContext, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLIndexBuffer, IGLProgram, IGLRenderPass, IGLRenderingContext, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { mat4, vec3 } from "gl-matrix"; import { GlTFLoader, Primitive } from "./third-party/gltf-loader"; import { getShaderSource } from "./utility"; @@ -9,7 +9,7 @@ canvas.width = window.innerWidth; canvas.height = window.innerHeight; document.body.appendChild(canvas); -const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; +const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; const webgl = new WebGL(rc); // -- Divide viewport @@ -41,7 +41,7 @@ viewport[VIEWPORTS.RIGHT] = { }; // -- Initialize program -const programs: IProgram[] = [ +const programs: IGLProgram[] = [ { vertex: { code: getShaderSource("vs-flat") }, fragment: { code: getShaderSource("fs-flat") }, primitive: { topology: "TRIANGLES" }, @@ -63,7 +63,7 @@ glTFLoader.loadGLTF(gltfUrl, function (glTF) // -- Initialize vertex array const vertexArrayMaps: { - [key: string]: IVertexArrayObject[] + [key: string]: IGLVertexArrayObject[] } = {}; // var in loop @@ -72,9 +72,9 @@ glTFLoader.loadGLTF(gltfUrl, function (glTF) }; let primitive: Primitive; // { matrix: mat4, attributes: { [key: string]: { size: number, type: number, stride: number, offset: number } }, vertexBuffer, indices }; - let vertexBuffer: IVertexBuffer; - let indicesBuffer: IIndexBuffer; - let vertexArray: IVertexArrayObject; + let vertexBuffer: IGLVertexBuffer; + let indicesBuffer: IGLIndexBuffer; + let vertexArray: IGLVertexArrayObject; let i: number; let len: number; @@ -141,7 +141,7 @@ glTFLoader.loadGLTF(gltfUrl, function (glTF) // -- Render loop (function render() { - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }], depthStencilAttachment: { depthLoadOp: "clear" } diff --git a/examples/src/WebGL2Samples/glsl_non_square_matrix.ts b/examples/src/WebGL2Samples/glsl_non_square_matrix.ts index 82927a6..a8a9905 100644 --- a/examples/src/WebGL2Samples/glsl_non_square_matrix.ts +++ b/examples/src/WebGL2Samples/glsl_non_square_matrix.ts @@ -1,4 +1,4 @@ -import { IProgram, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource, loadImage } from "./utility"; const canvas = document.createElement("canvas"); @@ -7,11 +7,11 @@ canvas.width = Math.min(window.innerWidth, window.innerHeight); canvas.height = canvas.width; document.body.appendChild(canvas); -const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; +const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; const webgl = new WebGL(rc); // -- Init program -const program: IProgram = { +const program: IGLProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") }, primitive: { topology: "TRIANGLES" }, }; @@ -25,7 +25,7 @@ const positions = new Float32Array([ -1.0, 1.0, -1.0, -1.0 ]); -const vertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; +const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; const texCoords = new Float32Array([ 0.0, 1.0, @@ -35,10 +35,10 @@ const texCoords = new Float32Array([ 0.0, 0.0, 0.0, 1.0 ]); -const vertexTexBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; +const vertexTexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; // -- Init VertexArray -const vertexArray: IVertexArrayObject = { +const vertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: vertexPosBuffer, numComponents: 2 }, texcoord: { buffer: vertexTexBuffer, numComponents: 2 }, @@ -48,7 +48,7 @@ const vertexArray: IVertexArrayObject = { loadImage("../../assets/img/Di-3d.png", function (image) { // -- Init Texture - const texture: ITexture = { + const texture: IGLTexture = { target: "TEXTURE_2D", pixelStore: { unpackFlipY: false, @@ -58,7 +58,7 @@ loadImage("../../assets/img/Di-3d.png", function (image) type: "UNSIGNED_BYTE", sources: [{ source: image, level: 0 }] }; - const sampler: ISampler = { minFilter: "NEAREST", magFilter: "NEAREST" }; + const sampler: IGLSampler = { minFilter: "NEAREST", magFilter: "NEAREST" }; // -- Render const matrix = new Float32Array([ @@ -68,7 +68,7 @@ loadImage("../../assets/img/Di-3d.png", function (image) 0.2, -0.2, 0.0 //translation ]); - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [{ pipeline: program, diff --git a/examples/src/WebGL2Samples/query_occlusion.ts b/examples/src/WebGL2Samples/query_occlusion.ts index 285e093..5261153 100644 --- a/examples/src/WebGL2Samples/query_occlusion.ts +++ b/examples/src/WebGL2Samples/query_occlusion.ts @@ -1,4 +1,4 @@ -import { IProgram, IQuery, IRenderObject, IRenderPass, IRenderingContext, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLQuery, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource } from "./utility"; // -- Init Canvas @@ -9,11 +9,11 @@ canvas.height = window.innerHeight; document.body.appendChild(canvas); // -- Init WebGL Context -const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; +const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; const webgl = new WebGL(rc); // -- Init Program -const program: IProgram = { +const program: IGLProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") }, depthStencil: { depth: { depthtest: true } }, primitive: { topology: "TRIANGLES" }, @@ -29,19 +29,19 @@ const vertices = new Float32Array([ 0.3, -0.5, 0.5, 0.0, 0.5, 0.5 ]); -const vertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: vertices, usage: "STATIC_DRAW" }; +const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: vertices, usage: "STATIC_DRAW" }; // -- Init Vertex Array -const vertexArray: IVertexArrayObject = { +const vertexArray: IGLVertexArrayObject = { vertices: { pos: { buffer: vertexPosBuffer, numComponents: 3, normalized: false, vertexSize: 0, offset: 0 }, } }; // -- Init Query -const query: IQuery = {}; +const query: IGLQuery = {}; // -- Render -const rp: IRenderPass = { +const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }], depthStencilAttachment: { depthLoadOp: "clear" }, @@ -49,7 +49,7 @@ const rp: IRenderPass = { renderObjects: [], }; -const ro: IRenderObject = { +const ro: IGLRenderObject = { vertexArray, pipeline: program, drawArrays: { firstVertex: 0, vertexCount: 3 }, diff --git a/examples/src/WebGL2Samples/sampler_filter.ts b/examples/src/WebGL2Samples/sampler_filter.ts index 8fd9bbb..704c291 100644 --- a/examples/src/WebGL2Samples/sampler_filter.ts +++ b/examples/src/WebGL2Samples/sampler_filter.ts @@ -1,4 +1,4 @@ -import { IProgram, IRenderObject, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource, loadImage } from "./utility"; const canvas = document.createElement("canvas"); @@ -7,7 +7,7 @@ canvas.width = Math.min(window.innerWidth, window.innerHeight); canvas.height = canvas.width; document.body.appendChild(canvas); -const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; +const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; const webgl = new WebGL(rc); // -- Divide viewport @@ -57,7 +57,7 @@ viewport[Corners.TOP_LEFT] = { // -- Initialize program -const program: IProgram = { +const program: IGLProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") }, primitive: { topology: "TRIANGLES" }, }; @@ -72,7 +72,7 @@ const positions = new Float32Array([ -1.0, 1.0, -1.0, -1.0 ]); -const vertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; +const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; const texcoords = new Float32Array([ 0.0, 1.0, @@ -82,11 +82,11 @@ const texcoords = new Float32Array([ 0.0, 0.0, 0.0, 1.0 ]); -const vertexTexBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: texcoords, usage: "STATIC_DRAW" }; +const vertexTexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: texcoords, usage: "STATIC_DRAW" }; // -- Initialize vertex array -const vertexArray: IVertexArrayObject = { +const vertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: vertexPosBuffer, numComponents: 2 }, textureCoordinates: { buffer: vertexTexBuffer, numComponents: 2 }, @@ -95,7 +95,7 @@ const vertexArray: IVertexArrayObject = { // -- Initialize samplers -const samplers: ISampler[] = new Array(Corners.MAX); +const samplers: IGLSampler[] = new Array(Corners.MAX); for (let i = 0; i < Corners.MAX; ++i) { samplers[i] = { wrapS: "CLAMP_TO_EDGE", wrapT: "CLAMP_TO_EDGE", wrapR: "CLAMP_TO_EDGE" }; @@ -116,7 +116,7 @@ samplers[Corners.BOTTOM_LEFT].magFilter = "LINEAR"; // -- Load texture then render const imageUrl = "../../assets/img/Di-3d.png"; -let texture: ITexture; +let texture: IGLTexture; loadImage(imageUrl, function (image) { texture = { @@ -140,12 +140,12 @@ function render() 0.0, 0.0, 0.0, 1.0 ]); - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [] }; - const ro: IRenderObject = { + const ro: IGLRenderObject = { pipeline: program, uniforms: { mvp: matrix }, vertexArray, diff --git a/examples/src/WebGL2Samples/sampler_object.ts b/examples/src/WebGL2Samples/sampler_object.ts index 822af41..3fef13c 100644 --- a/examples/src/WebGL2Samples/sampler_object.ts +++ b/examples/src/WebGL2Samples/sampler_object.ts @@ -1,4 +1,4 @@ -import { IProgram, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource, loadImage } from "./utility"; const canvas = document.createElement("canvas"); @@ -7,12 +7,12 @@ canvas.width = Math.min(window.innerWidth, window.innerHeight); canvas.height = canvas.width; document.body.appendChild(canvas); -const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; +const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; const webgl = new WebGL(rc); // -- Initialize program -const program: IProgram = { +const program: IGLProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") }, primitive: { topology: "TRIANGLES" }, }; @@ -27,7 +27,7 @@ const positions = new Float32Array([ -1.0, 1.0, -1.0, -1.0 ]); -const vertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; +const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; const texcoords = new Float32Array([ 0.0, 1.0, @@ -37,11 +37,11 @@ const texcoords = new Float32Array([ 0.0, 0.0, 0.0, 1.0 ]); -const vertexTexBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: texcoords, usage: "STATIC_DRAW" }; +const vertexTexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: texcoords, usage: "STATIC_DRAW" }; // -- Initialize vertex array -const vertexArray: IVertexArrayObject = { +const vertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: vertexPosBuffer, numComponents: 2 }, textureCoordinates: { buffer: vertexTexBuffer, numComponents: 2 }, @@ -50,13 +50,13 @@ const vertexArray: IVertexArrayObject = { // -- Initialize samplers -const samplerA: ISampler = { +const samplerA: IGLSampler = { minFilter: "NEAREST_MIPMAP_NEAREST", magFilter: "NEAREST", wrapS: "CLAMP_TO_EDGE", wrapT: "CLAMP_TO_EDGE", wrapR: "CLAMP_TO_EDGE", lodMinClamp: -1000.0, lodMaxClamp: 1000.0, compareMode: "NONE", compare: "LEQUAL", }; -const samplerB: ISampler = { +const samplerB: IGLSampler = { minFilter: "LINEAR_MIPMAP_LINEAR", magFilter: "LINEAR", wrapS: "CLAMP_TO_EDGE", wrapT: "CLAMP_TO_EDGE", wrapR: "CLAMP_TO_EDGE", lodMinClamp: -1000.0, lodMaxClamp: 1000.0, @@ -66,7 +66,7 @@ const samplerB: ISampler = { // -- Load texture then render const imageUrl = "../../assets/img/Di-3d.png"; -let texture: ITexture; +let texture: IGLTexture; loadImage(imageUrl, function (image) { texture = { @@ -89,7 +89,7 @@ function render() 0.0, 0.0, 0.0, 1.0 ]); - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [{ pipeline: program, diff --git a/examples/src/WebGL2Samples/sampler_wrap.ts b/examples/src/WebGL2Samples/sampler_wrap.ts index 20293e4..af2a563 100644 --- a/examples/src/WebGL2Samples/sampler_wrap.ts +++ b/examples/src/WebGL2Samples/sampler_wrap.ts @@ -1,4 +1,4 @@ -import { IProgram, IRenderObject, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource, loadImage } from "./utility"; const canvas = document.createElement("canvas"); @@ -7,7 +7,7 @@ canvas.width = Math.min(window.innerWidth, window.innerHeight); canvas.height = canvas.width; document.body.appendChild(canvas); -const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; +const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; const webgl = new WebGL(rc); // -- Divide viewport @@ -57,7 +57,7 @@ viewport[Corners.TOP_LEFT] = { // -- Initialize program -const program: IProgram = { +const program: IGLProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") }, primitive: { topology: "TRIANGLES" }, }; @@ -72,7 +72,7 @@ const positions = new Float32Array([ -1.0, 1.0, -1.0, -1.0 ]); -const vertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; +const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; const texcoords = new Float32Array([ -2.0, 2.0, @@ -82,11 +82,11 @@ const texcoords = new Float32Array([ -2.0, -2.0, -2.0, 2.0 ]); -const vertexTexBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: texcoords, usage: "STATIC_DRAW" }; +const vertexTexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: texcoords, usage: "STATIC_DRAW" }; // -- Initilize vertex array -const vertexArray: IVertexArrayObject = { +const vertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: vertexPosBuffer, numComponents: 2 }, textureCoordinates: { buffer: vertexTexBuffer, numComponents: 2 }, @@ -95,7 +95,7 @@ const vertexArray: IVertexArrayObject = { // -- Initialize samplers -const samplers: ISampler[] = new Array(Corners.MAX); +const samplers: IGLSampler[] = new Array(Corners.MAX); for (let i = 0; i < Corners.MAX; ++i) { @@ -115,7 +115,7 @@ samplers[Corners.BOTTOM_LEFT].wrapT = "CLAMP_TO_EDGE"; // -- Load texture then render const imageUrl = "../../assets/img/Di-3d.png"; -let texture: ITexture; +let texture: IGLTexture; loadImage(imageUrl, function (image) { texture = { @@ -131,7 +131,7 @@ loadImage(imageUrl, function (image) function render() { // Clear color buffer - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [], }; @@ -143,7 +143,7 @@ function render() 0.0, 0.0, 0.0, 1.0 ]); - const ro: IRenderObject = { + const ro: IGLRenderObject = { pipeline: program, uniforms: { mvp: matrix }, vertexArray, diff --git a/examples/src/WebGL2Samples/texture_2d_array.ts b/examples/src/WebGL2Samples/texture_2d_array.ts index 54c0fd0..33f47dc 100644 --- a/examples/src/WebGL2Samples/texture_2d_array.ts +++ b/examples/src/WebGL2Samples/texture_2d_array.ts @@ -1,4 +1,4 @@ -import { IVertexBuffer, IProgram, IRenderObject, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource, loadImage } from "./utility"; (function () @@ -9,11 +9,11 @@ import { getShaderSource, loadImage } from "./utility"; canvas.width = canvas.height * 960 / 540; document.body.appendChild(canvas); - const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; + const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; const webgl = new WebGL(rc); // -- Init program - const program: IProgram = { + const program: IGLProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") }, }; @@ -26,7 +26,7 @@ import { getShaderSource, loadImage } from "./utility"; -1.0, 1.0, -1.0, -1.0 ]); - const vertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; + const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; const texCoords = new Float32Array([ 0.0, 1.0, @@ -36,18 +36,18 @@ import { getShaderSource, loadImage } from "./utility"; 0.0, 0.0, 0.0, 1.0 ]); - const vertexTexBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; + const vertexTexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; // -- Init VertexArray - const vertexArray: IVertexArrayObject = { + const vertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: vertexPosBuffer, numComponents: 2 }, texcoord: { buffer: vertexTexBuffer, numComponents: 2 }, } }; - let texture: ITexture; - let sampler: ISampler; + let texture: IGLTexture; + let sampler: IGLSampler; loadImage("../../assets/img/di-animation-array.jpg", function (image) { const NUM_IMAGES = 3; @@ -84,7 +84,7 @@ import { getShaderSource, loadImage } from "./utility"; 0.0, 0.0, 0.0, 1.0 ]); - const ro: IRenderObject = { + const ro: IGLRenderObject = { pipeline: program, vertexArray, uniforms: { @@ -94,7 +94,7 @@ import { getShaderSource, loadImage } from "./utility"; drawArrays: { vertexCount: 6 }, }; - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [1.0, 1.0, 1.0, 1.0], loadOp: "clear" }] }, renderObjects: [ro], }; diff --git a/examples/src/WebGL2Samples/texture_3d.ts b/examples/src/WebGL2Samples/texture_3d.ts index 07005d9..1406263 100644 --- a/examples/src/WebGL2Samples/texture_3d.ts +++ b/examples/src/WebGL2Samples/texture_3d.ts @@ -1,4 +1,4 @@ -import { IProgram, IRenderObject, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { snoise } from "./third-party/noise3D"; import { getShaderSource } from "./utility"; @@ -10,7 +10,7 @@ import { getShaderSource } from "./utility"; canvas.height = canvas.width; document.body.appendChild(canvas); - const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; + const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; const webgl = new WebGL(rc); // -- Divide viewport @@ -78,7 +78,7 @@ import { getShaderSource } from "./utility"; } } - const texture: ITexture = { + const texture: IGLTexture = { target: "TEXTURE_3D", internalformat: "R8", format: "RED", @@ -86,7 +86,7 @@ import { getShaderSource } from "./utility"; generateMipmap: true, sources: [{ level: 0, width: SIZE, height: SIZE, depth: SIZE, border: 0, pixels: data }], }; - const sampler: ISampler = { + const sampler: IGLSampler = { lodMinClamp: 0, lodMaxClamp: Math.log2(SIZE), minFilter: "LINEAR_MIPMAP_LINEAR", @@ -94,7 +94,7 @@ import { getShaderSource } from "./utility"; }; // -- Initialize program - const program: IProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") } }; + const program: IGLProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") } }; // -- Initialize buffer const positions = new Float32Array([ @@ -105,7 +105,7 @@ import { getShaderSource } from "./utility"; -1.0, 1.0, -1.0, -1.0 ]); - const vertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; + const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; const texCoords = new Float32Array([ 0.0, 1.0, @@ -115,11 +115,11 @@ import { getShaderSource } from "./utility"; 0.0, 0.0, 0.0, 1.0 ]); - const vertexTexBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; + const vertexTexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; // -- Initilize vertex array - const vertexArray: IVertexArrayObject = { + const vertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: vertexPosBuffer, numComponents: 2 }, in_texcoord: { buffer: vertexTexBuffer, numComponents: 2 }, @@ -158,7 +158,7 @@ import { getShaderSource } from "./utility"; ]; } - const ro: IRenderObject = { + const ro: IGLRenderObject = { pipeline: program, uniforms: { diffuse: { texture, sampler }, @@ -167,7 +167,7 @@ import { getShaderSource } from "./utility"; drawArrays: { vertexCount: 6 } }; - const renderObjects: IRenderObject[] = []; + const renderObjects: IGLRenderObject[] = []; for (let i = 0; i < Corners.MAX; ++i) { renderObjects.push({ @@ -176,7 +176,7 @@ import { getShaderSource } from "./utility"; }); } - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects, }; diff --git a/examples/src/WebGL2Samples/texture_derivative.ts b/examples/src/WebGL2Samples/texture_derivative.ts index 4cf3019..6a4e116 100644 --- a/examples/src/WebGL2Samples/texture_derivative.ts +++ b/examples/src/WebGL2Samples/texture_derivative.ts @@ -1,4 +1,4 @@ -import { IIndexBuffer, IProgram, IRenderObject, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLIndexBuffer, IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { mat4, vec3 } from "gl-matrix"; import { getShaderSource, loadImage } from "./utility"; @@ -10,11 +10,11 @@ import { getShaderSource, loadImage } from "./utility"; canvas.height = canvas.width; document.body.appendChild(canvas); - const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; + const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; const webgl = new WebGL(rc); // -- Init program - const program: IProgram = { + const program: IGLProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs"), targets: [{ @@ -63,7 +63,7 @@ import { getShaderSource, loadImage } from "./utility"; -1.0, 1.0, 1.0, -1.0, 1.0, -1.0 ]); - const vertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; + const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; const texCoords = new Float32Array([ // Front face @@ -102,7 +102,7 @@ import { getShaderSource, loadImage } from "./utility"; 1.0, 1.0, 1.0, 0.0 ]); - const vertexTexBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; + const vertexTexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; // Element buffer @@ -115,10 +115,10 @@ import { getShaderSource, loadImage } from "./utility"; 20, 21, 22, 20, 22, 23 // left ]; - const indexBuffer: IIndexBuffer = { target: "ELEMENT_ARRAY_BUFFER", data: new Uint16Array(cubeVertexIndices), usage: "STATIC_DRAW" }; + const indexBuffer: IGLIndexBuffer = { target: "ELEMENT_ARRAY_BUFFER", data: new Uint16Array(cubeVertexIndices), usage: "STATIC_DRAW" }; // -- Init VertexArray - const vertexArray: IVertexArrayObject = { + const vertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: vertexPosBuffer, numComponents: 3 }, texcoord: { buffer: vertexTexBuffer, numComponents: 2 }, @@ -129,8 +129,8 @@ import { getShaderSource, loadImage } from "./utility"; // -- Init Texture const imageUrl = "../../assets/img/Di-3d.png"; - let texture: ITexture; - let sampler: ISampler; + let texture: IGLTexture; + let sampler: IGLSampler; loadImage(imageUrl, function (image) { // -- Init 2D Texture @@ -212,14 +212,14 @@ import { getShaderSource, loadImage } from "./utility"; lastMouseY = newY; }; - const ro: IRenderObject = { + const ro: IGLRenderObject = { pipeline: program, vertexArray, uniforms: {}, drawElements: { indexCount: 36 }, }; - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [ro] }; diff --git a/examples/src/WebGL2Samples/texture_fetch.ts b/examples/src/WebGL2Samples/texture_fetch.ts index 8a00f0b..71a420c 100644 --- a/examples/src/WebGL2Samples/texture_fetch.ts +++ b/examples/src/WebGL2Samples/texture_fetch.ts @@ -1,4 +1,4 @@ -import { IProgram, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource, loadImage } from "./utility"; (function () @@ -9,11 +9,11 @@ import { getShaderSource, loadImage } from "./utility"; canvas.height = canvas.width; document.body.appendChild(canvas); - const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; + const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; const webgl = new WebGL(rc); // -- Init program - const program: IProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") } }; + const program: IGLProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") } }; // -- Init buffers: vec2 Position, vec2 Texcoord const positions = new Float32Array([ @@ -24,7 +24,7 @@ import { getShaderSource, loadImage } from "./utility"; -1.0, 1.0, -1.0, -1.0 ]); - const vertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; + const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; const texCoords = new Float32Array([ 0.0, 1.0, @@ -34,10 +34,10 @@ import { getShaderSource, loadImage } from "./utility"; 0.0, 0.0, 0.0, 1.0 ]); - const vertexTexBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; + const vertexTexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; // -- Init VertexArray - const vertexArray: IVertexArrayObject = { + const vertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: vertexPosBuffer, numComponents: 2 }, texcoord: { buffer: vertexTexBuffer, numComponents: 2 }, @@ -47,7 +47,7 @@ import { getShaderSource, loadImage } from "./utility"; loadImage("../../assets/img/Di-3d.png", function (image) { // -- Init Texture - const texture: ITexture = { + const texture: IGLTexture = { target: "TEXTURE_2D", pixelStore: { unpackFlipY: false, @@ -57,7 +57,7 @@ import { getShaderSource, loadImage } from "./utility"; type: "UNSIGNED_BYTE", sources: [{ level: 0, source: image }], }; - const sampler: ISampler = { + const sampler: IGLSampler = { minFilter: "NEAREST", magFilter: "NEAREST", }; @@ -71,7 +71,7 @@ import { getShaderSource, loadImage } from "./utility"; 0.0, 0.0, 0.0, 1.0 ]); - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [ { diff --git a/examples/src/WebGL2Samples/texture_format.ts b/examples/src/WebGL2Samples/texture_format.ts index 38b57b3..0f0c675 100644 --- a/examples/src/WebGL2Samples/texture_format.ts +++ b/examples/src/WebGL2Samples/texture_format.ts @@ -1,4 +1,4 @@ -import { IProgram, IRenderPass, IRenderingContext, ISampler, ITexture, ITextureDataType, ITextureFormat, ITextureInternalFormat, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLTextureDataType, IGLTextureFormat, IGLTextureInternalFormat, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource, loadImage } from "./utility"; (function () @@ -9,7 +9,7 @@ import { getShaderSource, loadImage } from "./utility"; canvas.height = canvas.width; document.body.appendChild(canvas); - const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; + const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; const webgl = new WebGL(rc); // -- Viewport @@ -47,9 +47,9 @@ import { getShaderSource, loadImage } from "./utility"; } // -- Init program - const programUint: IProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs-uint") } }; + const programUint: IGLProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs-uint") } }; - const programNormalized: IProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs-normalized") } }; + const programNormalized: IGLProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs-normalized") } }; // -- Init buffers: vec2 Position, vec2 Texcoord const positions = new Float32Array([ @@ -60,7 +60,7 @@ import { getShaderSource, loadImage } from "./utility"; -1.0, 1.0, -1.0, -1.0 ]); - const vertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; + const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; const texCoords = new Float32Array([ 0.0, 1.0, @@ -70,10 +70,10 @@ import { getShaderSource, loadImage } from "./utility"; 0.0, 0.0, 0.0, 1.0 ]); - const vertexTexBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; + const vertexTexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; // -- Init VertexArray - const vertexArray: IVertexArrayObject = { + const vertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: vertexPosBuffer, numComponents: 2 }, texcoord: { buffer: vertexTexBuffer, numComponents: 2 }, @@ -95,7 +95,7 @@ import { getShaderSource, loadImage } from "./utility"; MAX: 9 }; - const textureFormats: { internalFormat: ITextureInternalFormat, format: ITextureFormat, type: ITextureDataType }[] = new Array(TextureTypes.MAX); + const textureFormats: { internalFormat: IGLTextureInternalFormat, format: IGLTextureFormat, type: IGLTextureDataType }[] = new Array(TextureTypes.MAX); textureFormats[TextureTypes.RGB] = { internalFormat: "RGB", @@ -153,8 +153,8 @@ import { getShaderSource, loadImage } from "./utility"; // -- Init Texture - const textures: ITexture[] = new Array(TextureTypes.MAX); - const samplers: ISampler[] = new Array(TextureTypes.MAX); + const textures: IGLTexture[] = new Array(TextureTypes.MAX); + const samplers: IGLSampler[] = new Array(TextureTypes.MAX); let i = 0; for (i = 0; i < TextureTypes.MAX; ++i) { @@ -184,7 +184,7 @@ import { getShaderSource, loadImage } from "./utility"; 0.0, 0.0, 0.0, 1.0 ]); - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [] }; diff --git a/examples/src/WebGL2Samples/texture_grad.ts b/examples/src/WebGL2Samples/texture_grad.ts index 41a3774..7999284 100644 --- a/examples/src/WebGL2Samples/texture_grad.ts +++ b/examples/src/WebGL2Samples/texture_grad.ts @@ -1,4 +1,4 @@ -import { IIndexBuffer, IProgram, IRenderObject, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLIndexBuffer, IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { mat4, vec3 } from "gl-matrix"; import { getShaderSource, loadImage } from "./utility"; @@ -10,11 +10,11 @@ import { getShaderSource, loadImage } from "./utility"; canvas.height = canvas.width; document.body.appendChild(canvas); - const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; + const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; const webgl = new WebGL(rc); // -- Init program - const program: IProgram = { + const program: IGLProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") }, depthStencil: { depth: { depthtest: true } }, primitive: { cullFace: { enableCullFace: true, cullMode: "BACK" } }, @@ -59,7 +59,7 @@ import { getShaderSource, loadImage } from "./utility"; -1.0, 1.0, 1.0, -1.0, 1.0, -1.0 ]); - const vertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; + const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; const texCoords = new Float32Array([ // Front face @@ -98,7 +98,7 @@ import { getShaderSource, loadImage } from "./utility"; 1.0, 1.0, 1.0, 0.0 ]); - const vertexTexBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; + const vertexTexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; // Element buffer const cubeVertexIndices = [ @@ -109,10 +109,10 @@ import { getShaderSource, loadImage } from "./utility"; 16, 17, 18, 16, 18, 19, // right 20, 21, 22, 20, 22, 23 // left ]; - const indexBuffer: IIndexBuffer = { target: "ELEMENT_ARRAY_BUFFER", data: new Uint16Array(cubeVertexIndices), usage: "STATIC_DRAW" }; + const indexBuffer: IGLIndexBuffer = { target: "ELEMENT_ARRAY_BUFFER", data: new Uint16Array(cubeVertexIndices), usage: "STATIC_DRAW" }; // -- Init VertexArray - const vertexArray: IVertexArrayObject = { + const vertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: vertexPosBuffer, numComponents: 3 }, texcoord: { buffer: vertexTexBuffer, numComponents: 2 }, @@ -123,8 +123,8 @@ import { getShaderSource, loadImage } from "./utility"; // -- Init Texture const imageUrl = "../../assets/img/Di-3d.png"; - let texture: ITexture; - let sampler: ISampler; + let texture: IGLTexture; + let sampler: IGLSampler; loadImage(imageUrl, function (image) { // -- Init 2D Texture @@ -202,14 +202,14 @@ import { getShaderSource, loadImage } from "./utility"; lastMouseY = newY; }; - const ro: IRenderObject = { + const ro: IGLRenderObject = { pipeline: program, vertexArray, uniforms: {}, drawElements: { indexCount: 36 }, }; - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [ro], }; diff --git a/examples/src/WebGL2Samples/texture_immutable.ts b/examples/src/WebGL2Samples/texture_immutable.ts index 29ed72c..d1ccf8e 100644 --- a/examples/src/WebGL2Samples/texture_immutable.ts +++ b/examples/src/WebGL2Samples/texture_immutable.ts @@ -1,4 +1,4 @@ -import { IProgram, IRenderObject, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { snoise } from "./third-party/noise3D"; import { getShaderSource, loadImage } from "./utility"; @@ -10,7 +10,7 @@ import { getShaderSource, loadImage } from "./utility"; canvas.height = canvas.width; document.body.appendChild(canvas); - const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; + const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2" }; const webgl = new WebGL(rc); const Corners = { @@ -36,9 +36,9 @@ import { getShaderSource, loadImage } from "./utility"; }; // -- Init program - const program: IProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") } }; + const program: IGLProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") } }; - const program3D: IProgram = { vertex: { code: getShaderSource("vs-3d") }, fragment: { code: getShaderSource("fs-3d") } }; + const program3D: IGLProgram = { vertex: { code: getShaderSource("vs-3d") }, fragment: { code: getShaderSource("fs-3d") } }; // -- Init buffers: vec2 Position, vec2 Texcoord const positions = new Float32Array([ @@ -49,7 +49,7 @@ import { getShaderSource, loadImage } from "./utility"; -1.0, 1.0, -1.0, -1.0 ]); - const vertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; + const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; const texCoords = new Float32Array([ 0.0, 1.0, @@ -59,10 +59,10 @@ import { getShaderSource, loadImage } from "./utility"; 0.0, 0.0, 0.0, 1.0 ]); - const vertexTexBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; + const vertexTexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; // -- Init VertexArray - const vertexArray: IVertexArrayObject = { + const vertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: vertexPosBuffer, numComponents: 2 }, in_texcoord: { buffer: vertexTexBuffer, numComponents: 2 }, @@ -83,7 +83,7 @@ import { getShaderSource, loadImage } from "./utility"; ]); // -- Init 2D Texture - const texture2D: ITexture = { + const texture2D: IGLTexture = { target: "TEXTURE_2D", pixelStore: { unpackFlipY: false, @@ -94,7 +94,7 @@ import { getShaderSource, loadImage } from "./utility"; storage: { levels: 1, width: 512, height: 512 }, writeTextures: [{ level: 0, xoffset: 0, yoffset: 0, source: image }], }; - const sampler2D: ISampler = { + const sampler2D: IGLSampler = { minFilter: "NEAREST", magFilter: "LINEAR", wrapS: "CLAMP_TO_EDGE", @@ -102,7 +102,7 @@ import { getShaderSource, loadImage } from "./utility"; }; // -- Render - const ro: IRenderObject = { + const ro: IGLRenderObject = { pipeline: program, vertexArray, uniforms: { @@ -111,7 +111,7 @@ import { getShaderSource, loadImage } from "./utility"; drawArrays: { vertexCount: 6 }, }; - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [] }; @@ -169,7 +169,7 @@ import { getShaderSource, loadImage } from "./utility"; } } - const texture3D: ITexture = { + const texture3D: IGLTexture = { target: "TEXTURE_3D", internalformat: "R8", format: "RED", @@ -178,7 +178,7 @@ import { getShaderSource, loadImage } from "./utility"; storage: { levels: Math.log2(SIZE), width: SIZE, height: SIZE, depth: SIZE }, writeTextures: [{ level: 0, xoffset: 0, yoffset: 0, zoffset: 0, width: SIZE, height: SIZE, depth: SIZE, srcData: data }], }; - const sampler3D: ISampler = { + const sampler3D: IGLSampler = { lodMinClamp: 0, lodMaxClamp: Math.log2(SIZE), minFilter: "LINEAR_MIPMAP_LINEAR", diff --git a/examples/src/WebGL2Samples/texture_integer.ts b/examples/src/WebGL2Samples/texture_integer.ts index 9d67ba3..4980976 100644 --- a/examples/src/WebGL2Samples/texture_integer.ts +++ b/examples/src/WebGL2Samples/texture_integer.ts @@ -1,4 +1,4 @@ -import { IProgram, IRenderObject, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource, loadImage } from "./utility"; (function () @@ -9,11 +9,11 @@ import { getShaderSource, loadImage } from "./utility"; canvas.height = canvas.width; document.body.appendChild(canvas); - const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; + const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; const webgl = new WebGL(rc); // -- Init program - const program: IProgram = { + const program: IGLProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") }, }; @@ -26,7 +26,7 @@ import { getShaderSource, loadImage } from "./utility"; -1.0, 1.0, -1.0, -1.0 ]); - const vertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; + const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; const texCoords = new Float32Array([ 0.0, 1.0, @@ -36,10 +36,10 @@ import { getShaderSource, loadImage } from "./utility"; 0.0, 0.0, 0.0, 1.0 ]); - const vertexTexBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; + const vertexTexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; // -- Init VertexArray - const vertexArray: IVertexArrayObject = { + const vertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: vertexPosBuffer, numComponents: 2 }, texcoord: { buffer: vertexTexBuffer, numComponents: 2 }, @@ -49,7 +49,7 @@ import { getShaderSource, loadImage } from "./utility"; loadImage("../../assets/img/Di-3d.png", function (image) { // -- Init Texture - const texture: ITexture = { + const texture: IGLTexture = { target: "TEXTURE_2D", pixelStore: { unpackFlipY: false, @@ -59,7 +59,7 @@ import { getShaderSource, loadImage } from "./utility"; type: "UNSIGNED_BYTE", sources: [{ level: 0, source: image }], }; - const sampler: ISampler = { + const sampler: IGLSampler = { minFilter: "NEAREST", magFilter: "NEAREST", }; @@ -72,7 +72,7 @@ import { getShaderSource, loadImage } from "./utility"; 0.0, 0.0, 0.0, 1.0 ]); - const ro: IRenderObject = { + const ro: IGLRenderObject = { pipeline: program, uniforms: { MVP: matrix, @@ -82,7 +82,7 @@ import { getShaderSource, loadImage } from "./utility"; drawArrays: { vertexCount: 6 }, }; - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [ro], }; diff --git a/examples/src/WebGL2Samples/texture_lod.ts b/examples/src/WebGL2Samples/texture_lod.ts index 01995c5..844ec24 100644 --- a/examples/src/WebGL2Samples/texture_lod.ts +++ b/examples/src/WebGL2Samples/texture_lod.ts @@ -1,4 +1,4 @@ -import { IProgram, IRenderObject, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource, loadImage } from "./utility"; (function () @@ -9,7 +9,7 @@ import { getShaderSource, loadImage } from "./utility"; canvas.height = canvas.width; document.body.appendChild(canvas); - const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; + const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; const webgl = new WebGL(rc); // -- Mouse Behaviour @@ -85,7 +85,7 @@ import { getShaderSource, loadImage } from "./utility"; }; // -- Initialize program - const program: IProgram = { + const program: IGLProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") }, }; @@ -98,7 +98,7 @@ import { getShaderSource, loadImage } from "./utility"; -1.0, 1.0, -1.0, -1.0 ]); - const vertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; + const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; const texcoords = new Float32Array([ 0.0, 1.0, @@ -108,10 +108,10 @@ import { getShaderSource, loadImage } from "./utility"; 0.0, 0.0, 0.0, 1.0 ]); - const vertexTexBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: texcoords, usage: "STATIC_DRAW" }; + const vertexTexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: texcoords, usage: "STATIC_DRAW" }; // -- Initialize vertex array - const vertexArray: IVertexArrayObject = { + const vertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: vertexPosBuffer, numComponents: 2 }, textureCoordinates: { buffer: vertexTexBuffer, numComponents: 2 }, @@ -120,8 +120,8 @@ import { getShaderSource, loadImage } from "./utility"; // -- Load texture then render const imageUrl = "../../assets/img/Di-3d.png"; - const textures: ITexture[] = new Array(Corners.MAX); - const samplers: ISampler[] = new Array(Corners.MAX); + const textures: IGLTexture[] = new Array(Corners.MAX); + const samplers: IGLSampler[] = new Array(Corners.MAX); loadImage(imageUrl, function (image) { textures[Corners.TOP_LEFT] = { @@ -188,7 +188,7 @@ import { getShaderSource, loadImage } from "./utility"; function render() { // Clear color buffer - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [], }; @@ -200,7 +200,7 @@ import { getShaderSource, loadImage } from "./utility"; 0.0, 0.0, 0.0, 1.0 ]); - const ro: IRenderObject = { + const ro: IGLRenderObject = { pipeline: program, uniforms: { mvp: matrix, diff --git a/examples/src/WebGL2Samples/texture_offset.ts b/examples/src/WebGL2Samples/texture_offset.ts index 36f8dbf..a2bc65c 100644 --- a/examples/src/WebGL2Samples/texture_offset.ts +++ b/examples/src/WebGL2Samples/texture_offset.ts @@ -1,4 +1,4 @@ -import { IProgram, IRenderObject, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource, loadImage } from "./utility"; (function () @@ -9,7 +9,7 @@ import { getShaderSource, loadImage } from "./utility"; canvas.height = canvas.width; document.body.appendChild(canvas); - const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; + const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; const webgl = new WebGL(rc); const Corners = { @@ -35,9 +35,9 @@ import { getShaderSource, loadImage } from "./utility"; }; // -- Init program - const programBicubic: IProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs-bicubic") } }; + const programBicubic: IGLProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs-bicubic") } }; - const programOffsetBicubic: IProgram = { + const programOffsetBicubic: IGLProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs-offset-bicubic") }, }; @@ -50,7 +50,7 @@ import { getShaderSource, loadImage } from "./utility"; -1.0, 1.0, -1.0, -1.0 ]); - const vertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; + const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; const texCoords = new Float32Array([ 0.0, 1.0, @@ -60,10 +60,10 @@ import { getShaderSource, loadImage } from "./utility"; 0.0, 0.0, 0.0, 1.0 ]); - const vertexTexBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; + const vertexTexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; // -- Init VertexArray - const vertexArray: IVertexArrayObject = { + const vertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: vertexPosBuffer, numComponents: 2 }, texcoord: { buffer: vertexTexBuffer, numComponents: 2 }, @@ -73,7 +73,7 @@ import { getShaderSource, loadImage } from "./utility"; loadImage("../../assets/img/Di-3d.png", function (image) { // -- Init Texture - const texture: ITexture = { + const texture: IGLTexture = { target: "TEXTURE_2D", pixelStore: { unpackFlipY: false, @@ -83,7 +83,7 @@ import { getShaderSource, loadImage } from "./utility"; type: "UNSIGNED_BYTE", sources: [{ level: 0, source: image }], }; - const sampler: ISampler = { + const sampler: IGLSampler = { minFilter: "NEAREST", magFilter: "NEAREST", wrapS: "CLAMP_TO_EDGE", @@ -91,7 +91,7 @@ import { getShaderSource, loadImage } from "./utility"; }; // -- Render - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [] }; @@ -104,7 +104,7 @@ import { getShaderSource, loadImage } from "./utility"; ]); // No offset - const ro: IRenderObject = { + const ro: IGLRenderObject = { vertexArray, pipeline: programBicubic, uniforms: { diff --git a/examples/src/WebGL2Samples/texture_pixel_store.ts b/examples/src/WebGL2Samples/texture_pixel_store.ts index 9c48633..17a8eec 100644 --- a/examples/src/WebGL2Samples/texture_pixel_store.ts +++ b/examples/src/WebGL2Samples/texture_pixel_store.ts @@ -1,4 +1,4 @@ -import { IProgram, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource, loadImage } from "./utility"; (function () @@ -9,11 +9,11 @@ import { getShaderSource, loadImage } from "./utility"; canvas.height = canvas.width; document.body.appendChild(canvas); - const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; + const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; const webgl = new WebGL(rc); // -- Init program - const program: IProgram = { + const program: IGLProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") }, }; @@ -26,7 +26,7 @@ import { getShaderSource, loadImage } from "./utility"; -1.0, 1.0, -1.0, -1.0 ]); - const vertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; + const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; const texCoords = new Float32Array([ 0.0, 1.0, @@ -36,10 +36,10 @@ import { getShaderSource, loadImage } from "./utility"; 0.0, 0.0, 0.0, 1.0 ]); - const vertexTexBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; + const vertexTexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: texCoords, usage: "STATIC_DRAW" }; // -- Init VertexArray - const vertexArray: IVertexArrayObject = { + const vertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: vertexPosBuffer, numComponents: 2 }, texcoord: { buffer: vertexTexBuffer, numComponents: 2 }, @@ -58,7 +58,7 @@ import { getShaderSource, loadImage } from "./utility"; const pixels = new Uint8Array(imageData.data.buffer); // -- Init Texture - const texture: ITexture = { + const texture: IGLTexture = { target: "TEXTURE_2D", pixelStore: { unpackAlignment: 1, @@ -71,13 +71,13 @@ import { getShaderSource, loadImage } from "./utility"; format: "RGBA", sources: [{ level: 0, width: image.width / 2, height: image.height / 2, pixels }] }; - const sampler: ISampler = { + const sampler: IGLSampler = { minFilter: "NEAREST", magFilter: "NEAREST", }; // -- Render - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [], }; diff --git a/examples/src/WebGL2Samples/texture_srgb.ts b/examples/src/WebGL2Samples/texture_srgb.ts index 9a3c532..126fe22 100644 --- a/examples/src/WebGL2Samples/texture_srgb.ts +++ b/examples/src/WebGL2Samples/texture_srgb.ts @@ -1,4 +1,4 @@ -import { IProgram, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource, loadImage } from "./utility"; (function () @@ -9,12 +9,12 @@ import { getShaderSource, loadImage } from "./utility"; canvas.height = canvas.width; document.body.appendChild(canvas); - const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; + const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; const webgl = new WebGL(rc); // -- Initialize program - const program: IProgram = { + const program: IGLProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") }, }; @@ -28,7 +28,7 @@ import { getShaderSource, loadImage } from "./utility"; -1.0, 1.0, -1.0, -1.0 ]); - const vertexPosBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; + const vertexPosBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }; const texcoords = new Float32Array([ 0.0, 1.0, @@ -38,11 +38,11 @@ import { getShaderSource, loadImage } from "./utility"; 0.0, 0.0, 0.0, 1.0 ]); - const vertexTexBuffer: IVertexBuffer = { target: "ARRAY_BUFFER", data: texcoords, usage: "STATIC_DRAW" }; + const vertexTexBuffer: IGLVertexBuffer = { target: "ARRAY_BUFFER", data: texcoords, usage: "STATIC_DRAW" }; // -- Initialize vertex array - const vertexArray: IVertexArrayObject = { + const vertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: vertexPosBuffer, numComponents: 2 }, textureCoordinates: { buffer: vertexTexBuffer, numComponents: 2 }, @@ -52,8 +52,8 @@ import { getShaderSource, loadImage } from "./utility"; // -- Load texture then render const imageUrl = "../../assets/img/Di-3d.png"; - let texture: ITexture; - let sampler: ISampler; + let texture: IGLTexture; + let sampler: IGLSampler; loadImage(imageUrl, function (image) { texture = { @@ -71,7 +71,7 @@ import { getShaderSource, loadImage } from "./utility"; function render() { // Clear color buffer - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [], }; diff --git a/examples/src/WebGL2Samples/texture_vertex.ts b/examples/src/WebGL2Samples/texture_vertex.ts index c5dacfe..2189ea1 100644 --- a/examples/src/WebGL2Samples/texture_vertex.ts +++ b/examples/src/WebGL2Samples/texture_vertex.ts @@ -1,4 +1,4 @@ -import { IIndexBuffer, IProgram, IRenderObject, IRenderPass, IRenderingContext, ISampler, ITexture, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLIndexBuffer, IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { mat4, vec3 } from "gl-matrix"; import { GlTFLoader, Primitive } from "./third-party/gltf-loader"; import { getShaderSource, loadImage } from "./utility"; @@ -34,11 +34,11 @@ import { getShaderSource, loadImage } from "./utility"; canvas.height = canvas.width; document.body.appendChild(canvas); - const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; + const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; const webgl = new WebGL(rc); // -- Init program - const program: IProgram = { + const program: IGLProgram = { vertex: { code: getShaderSource("vs") }, fragment: { code: getShaderSource("fs") }, depthStencil: { depth: { depthtest: true, depthCompare: "LESS" } }, }; @@ -48,14 +48,14 @@ import { getShaderSource, loadImage } from "./utility"; // var in loop let mesh; let primitive: Primitive; - let vertexBuffer: IVertexBuffer; - let indicesBuffer: IIndexBuffer; - let vertexArray: IVertexArrayObject; + let vertexBuffer: IGLVertexBuffer; + let indicesBuffer: IGLIndexBuffer; + let vertexArray: IGLVertexArrayObject; - let texture: ITexture; - let sampler: ISampler; + let texture: IGLTexture; + let sampler: IGLSampler; - const ro: IRenderObject = { + const ro: IGLRenderObject = { pipeline: program, }; @@ -190,7 +190,7 @@ import { getShaderSource, loadImage } from "./utility"; function render() { // -- Render - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }], depthStencilAttachment: { depthLoadOp: "clear" } diff --git a/examples/src/WebGL2Samples/transform_feedback_instanced.ts b/examples/src/WebGL2Samples/transform_feedback_instanced.ts index 3d8f45b..e58a54a 100644 --- a/examples/src/WebGL2Samples/transform_feedback_instanced.ts +++ b/examples/src/WebGL2Samples/transform_feedback_instanced.ts @@ -1,4 +1,4 @@ -import { IProgram, IRenderObject, IRenderPass, IRenderingContext, ITransformFeedback, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLTransformFeedback, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource } from "./utility"; (function () @@ -11,7 +11,7 @@ import { getShaderSource } from "./utility"; document.body.appendChild(canvas); // -- Init WebGL Context - const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; + const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; const webgl = new WebGL(rc); canvas.addEventListener("webglcontextlost", function (event) @@ -64,12 +64,12 @@ import { getShaderSource } from "./utility"; const COLOR_LOCATION = 3; const NUM_LOCATIONS = 4; - const vertexArrays: IVertexArrayObject[][] = []; + const vertexArrays: IGLVertexArrayObject[][] = []; // Transform feedback objects track output buffer state - const transformFeedbacks: ITransformFeedback[] = []; + const transformFeedbacks: IGLTransformFeedback[] = []; - const vertexBuffers: IVertexBuffer[][] = new Array(vertexArrays.length); + const vertexBuffers: IGLVertexBuffer[][] = new Array(vertexArrays.length); for (let va = 0; va < 2; ++va) { @@ -104,7 +104,7 @@ import { getShaderSource } from "./utility"; }; } - const transformRO: IRenderObject = { + const transformRO: IGLRenderObject = { pipeline: programs[PROGRAM_TRANSFORM], vertexArray: null, transformFeedback: null, @@ -112,13 +112,13 @@ import { getShaderSource } from "./utility"; drawArrays: { vertexCount: NUM_INSTANCES }, }; - const renderRO: IRenderObject = { + const renderRO: IGLRenderObject = { pipeline: programs[PROGRAM_DRAW], uniforms: {}, drawArrays: { vertexCount: 3, instanceCount: NUM_INSTANCES }, }; - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [transformRO, renderRO], }; @@ -127,7 +127,7 @@ import { getShaderSource } from "./utility"; function initPrograms() { - const programTransform: IProgram = { + const programTransform: IGLProgram = { vertex: { code: getShaderSource("vs-emit") }, fragment: { code: getShaderSource("fs-emit") }, transformFeedbackVaryings: { varyings: ["v_offset", "v_rotation"], bufferMode: "SEPARATE_ATTRIBS" }, rasterizerDiscard: true, @@ -135,7 +135,7 @@ import { getShaderSource } from "./utility"; }; // Setup program for draw shader - const programDraw: IProgram = { + const programDraw: IGLProgram = { vertex: { code: getShaderSource("vs-draw") }, fragment: { code: getShaderSource("fs-draw"), targets: [{ diff --git a/examples/src/WebGL2Samples/transform_feedback_interleaved.ts b/examples/src/WebGL2Samples/transform_feedback_interleaved.ts index b278c4e..e85cc70 100644 --- a/examples/src/WebGL2Samples/transform_feedback_interleaved.ts +++ b/examples/src/WebGL2Samples/transform_feedback_interleaved.ts @@ -1,4 +1,4 @@ -import { IProgram, IRenderPass, IRenderingContext, ITransformFeedback, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderPass, IGLRenderingContext, IGLTransformFeedback, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource } from "./utility"; (function () @@ -11,7 +11,7 @@ import { getShaderSource } from "./utility"; document.body.appendChild(canvas); // -- Init WebGL Context - const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; + const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; const webgl = new WebGL(rc); // -- Init Program @@ -20,7 +20,7 @@ import { getShaderSource } from "./utility"; const programTransform = (function (vertexShaderSourceTransform, fragmentShaderSourceTransform) { - const programTransform: IProgram = { + const programTransform: IGLProgram = { vertex: { code: vertexShaderSourceTransform }, fragment: { code: fragmentShaderSourceTransform }, transformFeedbackVaryings: { varyings: ["gl_Position", "v_color"], bufferMode: "INTERLEAVED_ATTRIBS" }, @@ -30,7 +30,7 @@ import { getShaderSource } from "./utility"; return programTransform; })(getShaderSource("vs-transform"), getShaderSource("fs-transform")); - const programFeedback: IProgram = { + const programFeedback: IGLProgram = { vertex: { code: getShaderSource("vs-feedback") }, fragment: { code: getShaderSource("fs-feedback") }, }; @@ -48,7 +48,7 @@ import { getShaderSource } from "./utility"; -1.0, -1.0, 0.0, 1.0 ]); - const buffers: IVertexBuffer[] = [ + const buffers: IGLVertexBuffer[] = [ // Transform buffer { target: "ARRAY_BUFFER", data: vertices, usage: "STATIC_DRAW" }, // Feedback empty buffer @@ -56,7 +56,7 @@ import { getShaderSource } from "./utility"; ]; // -- Init Vertex Array - const vertexArrays: IVertexArrayObject[] = [ + const vertexArrays: IGLVertexArrayObject[] = [ { vertices: { position: { buffer: buffers[PROGRAM_TRANSFORM], numComponents: 4 }, @@ -71,14 +71,14 @@ import { getShaderSource } from "./utility"; ]; // -- Init TransformFeedback - const transformFeedback: ITransformFeedback = { + const transformFeedback: IGLTransformFeedback = { bindBuffers: [ { index: 0, buffer: buffers[PROGRAM_FEEDBACK] } ] }; // -- Render - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [], }; diff --git a/examples/src/WebGL2Samples/transform_feedback_separated.ts b/examples/src/WebGL2Samples/transform_feedback_separated.ts index 24ad099..8d31df8 100644 --- a/examples/src/WebGL2Samples/transform_feedback_separated.ts +++ b/examples/src/WebGL2Samples/transform_feedback_separated.ts @@ -1,4 +1,4 @@ -import { IProgram, IRenderPass, IRenderingContext, ITransformFeedback, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderPass, IGLRenderingContext, IGLTransformFeedback, IGLVertexArrayObject, IGLProgram, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource } from "./utility"; (function () @@ -11,13 +11,13 @@ import { getShaderSource } from "./utility"; document.body.appendChild(canvas); // -- Init WebGL Context - const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; + const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; const webgl = new WebGL(rc); // -- Init Program const programTransform = (function (vertexShaderSourceTransform, fragmentShaderSourceTransform) { - const programTransform: IProgram = { + const programTransform: IGLProgram = { vertex: { code: vertexShaderSourceTransform }, fragment: { code: fragmentShaderSourceTransform }, transformFeedbackVaryings: { varyings: ["gl_Position", "v_color"], bufferMode: "SEPARATE_ATTRIBS" }, @@ -27,7 +27,7 @@ import { getShaderSource } from "./utility"; return programTransform; })(getShaderSource("vs-transform"), getShaderSource("fs-transform")); - const programFeedback: IProgram = { + const programFeedback: IGLProgram = { vertex: { code: getShaderSource("vs-feedback") }, fragment: { code: getShaderSource("fs-feedback") }, }; @@ -54,7 +54,7 @@ import { getShaderSource } from "./utility"; MAX: 3 }; - const buffers: IVertexBuffer[] = [ + const buffers: IGLVertexBuffer[] = [ // Transform buffer { target: "ARRAY_BUFFER", data: positions, usage: "STATIC_DRAW" }, // Feedback empty buffers @@ -65,7 +65,7 @@ import { getShaderSource } from "./utility"; ]; // -- Init Transform Vertex Array - const vertexArrays: IVertexArrayObject[] = [ + const vertexArrays: IGLVertexArrayObject[] = [ { vertices: { position: { buffer: buffers[BufferType.VERTEX], numComponents: 4 }, @@ -80,7 +80,7 @@ import { getShaderSource } from "./utility"; ]; // -- Init TransformFeedback - const transformFeedback: ITransformFeedback = { + const transformFeedback: IGLTransformFeedback = { bindBuffers: [ { index: 0, buffer: buffers[BufferType.POSITION] }, { index: 1, buffer: buffers[BufferType.COLOR] }, @@ -88,7 +88,7 @@ import { getShaderSource } from "./utility"; }; // -- Render - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [], }; diff --git a/examples/src/WebGL2Samples/transform_feedback_separated_2.ts b/examples/src/WebGL2Samples/transform_feedback_separated_2.ts index f4a4ccc..1cab23c 100644 --- a/examples/src/WebGL2Samples/transform_feedback_separated_2.ts +++ b/examples/src/WebGL2Samples/transform_feedback_separated_2.ts @@ -1,4 +1,4 @@ -import { IProgram, IRenderObject, IRenderPass, IRenderingContext, ITransformFeedback, IVertexArrayObject, IVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLTransformFeedback, IGLVertexArrayObject, IGLProgram, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; import { getShaderSource } from "./utility"; (function () @@ -11,7 +11,7 @@ import { getShaderSource } from "./utility"; document.body.appendChild(canvas); // -- Init WebGL Context - const rc: IRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; + const rc: IGLRenderingContext = { canvasId: "glcanvas", contextId: "webgl2", antialias: false }; const webgl = new WebGL(rc); canvas.addEventListener("webglcontextlost", function (event) @@ -56,12 +56,12 @@ import { getShaderSource } from "./utility"; } // -- Init Vertex Arrays and Buffers - const particleVAOs: IVertexArrayObject[] = []; + const particleVAOs: IGLVertexArrayObject[] = []; // Transform feedback objects track output buffer state - const particleTransformFeedbacks: ITransformFeedback[] = []; + const particleTransformFeedbacks: IGLTransformFeedback[] = []; - const particleVBOs: IVertexBuffer[][] = new Array(particleVAOs.length); + const particleVBOs: IGLVertexBuffer[][] = new Array(particleVAOs.length); for (let i = 0; i < 2; ++i) { @@ -101,7 +101,7 @@ import { getShaderSource } from "./utility"; function initProgram() { - const program: IProgram = { + const program: IGLProgram = { vertex: { code: getShaderSource("vs-draw") }, fragment: { code: getShaderSource("fs-draw"), @@ -119,7 +119,7 @@ import { getShaderSource } from "./utility"; return program; } - const ro: IRenderObject = { + const ro: IGLRenderObject = { pipeline: program, uniforms: { u_color: [0.0, 1.0, 1.0, 1.0], @@ -129,7 +129,7 @@ import { getShaderSource } from "./utility"; drawArrays: { vertexCount: NUM_PARTICLES }, }; - const rp: IRenderPass = { + const rp: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, renderObjects: [ro], }; diff --git a/examples/src/regl-examples/basic.ts b/examples/src/regl-examples/basic.ts index e0f417f..22cd313 100644 --- a/examples/src/regl-examples/basic.ts +++ b/examples/src/regl-examples/basic.ts @@ -1,4 +1,4 @@ -import { IRenderObject, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderObject, WebGL } from "@feng3d/webgl-renderer"; /** * 让T中以及所有键值中的所有键都是可选的 @@ -18,7 +18,7 @@ document.body.appendChild(webglcanvas); const webgl = new WebGL({ canvasId: "glcanvas" }); -const renderObject: IRenderObject = { +const renderObject: IGLRenderObject = { vertexArray: { vertices: { position: { diff --git a/examples/src/regl-examples/batch.ts b/examples/src/regl-examples/batch.ts index 210133c..ce1ed4b 100644 --- a/examples/src/regl-examples/batch.ts +++ b/examples/src/regl-examples/batch.ts @@ -1,4 +1,4 @@ -import { WebGL, IRenderObject, IRenderPipeline, IVertexArrayObject } from "@feng3d/webgl-renderer"; +import { IGLRenderObject, IGLRenderPipeline, IGLVertexArrayObject, WebGL } from "@feng3d/webgl-renderer"; const webglcanvas = document.createElement("canvas"); webglcanvas.id = "glcanvas"; @@ -23,7 +23,7 @@ const offsets = [{ offset: [-1, -1] }, { offset: [1, 0] }, { offset: [1, 1] }]; -const pipeline: IRenderPipeline = { +const pipeline: IGLRenderPipeline = { vertex: { code: `precision mediump float; attribute vec2 position; @@ -43,7 +43,7 @@ const pipeline: IRenderPipeline = { depthStencil: { depth: { depthtest: true } }, }; -const vertexArray: IVertexArrayObject = { +const vertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: { @@ -60,7 +60,7 @@ const vertexArray: IVertexArrayObject = { function getRenderObject(tick: number, batchId: number) { - const renderObject: IRenderObject = { + const renderObject: IGLRenderObject = { vertexArray, uniforms: { color: () => [ @@ -83,7 +83,7 @@ function draw() webglcanvas.height = webglcanvas.clientHeight; tick++; - const renderObjects: IRenderObject[] = []; + const renderObjects: IGLRenderObject[] = []; for (let i = 0; i < offsets.length; i++) { batchId = i; diff --git a/examples/src/regl-examples/blur.ts b/examples/src/regl-examples/blur.ts index de606f6..52db7ce 100644 --- a/examples/src/regl-examples/blur.ts +++ b/examples/src/regl-examples/blur.ts @@ -1,4 +1,5 @@ -import { WebGL, IRenderObject, IVertexArrayObject, IRenderPipeline } from "@feng3d/webgl-renderer"; +import { IGLRenderObject, IGLRenderPipeline, IGLVertexArrayObject, WebGL } from "@feng3d/webgl-renderer"; + import { fit } from "./hughsk/canvas-fit"; import { attachCamera } from "./hughsk/canvas-orbit-camera"; @@ -29,7 +30,7 @@ const offsets = [{ offset: [-1, -1] }, { offset: [1, 0] }, { offset: [1, 1] }]; -const vertexArray: IVertexArrayObject = { +const vertexArray: IGLVertexArrayObject = { vertices: { position: { buffer: { @@ -44,7 +45,7 @@ const vertexArray: IVertexArrayObject = { } }; -const pipeline: IRenderPipeline = { +const pipeline: IGLRenderPipeline = { vertex: { code: `precision mediump float; attribute vec2 position; @@ -68,7 +69,7 @@ const pipeline: IRenderPipeline = { function getRenderObject(tick: number, batchId: number) { - const renderObject: IRenderObject = { + const renderObject: IGLRenderObject = { vertexArray, uniforms: { color: () => [ @@ -91,7 +92,7 @@ function draw() canvas.height = canvas.clientHeight; tick++; - const renderObjects: IRenderObject[] = []; + const renderObjects: IGLRenderObject[] = []; for (let i = 0; i < offsets.length; i++) { batchId = i; diff --git a/examples/src/regl-examples/bunny.ts b/examples/src/regl-examples/bunny.ts index 4234c5d..ced111a 100644 --- a/examples/src/regl-examples/bunny.ts +++ b/examples/src/regl-examples/bunny.ts @@ -1,4 +1,5 @@ -import { WebGL, IRenderObject } from "@feng3d/webgl-renderer"; +import { IGLRenderObject, WebGL } from "@feng3d/webgl-renderer"; + import * as bunny from "./mikolalysenko/bunny"; import * as mat4 from "./stackgl/gl-mat4"; @@ -31,7 +32,7 @@ let tick = 0; let viewportWidth = webglcanvas.clientWidth; let viewportHeight = webglcanvas.clientHeight; -const renderObject: IRenderObject = { +const renderObject: IGLRenderObject = { vertexArray: { vertices: { position: { buffer: { target: "ARRAY_BUFFER", data: new Float32Array(positions) }, numComponents: 3 }, diff --git a/examples/src/regl-examples/camera.ts b/examples/src/regl-examples/camera.ts index 26f320f..673522f 100644 --- a/examples/src/regl-examples/camera.ts +++ b/examples/src/regl-examples/camera.ts @@ -1,4 +1,5 @@ -import { WebGL, IRenderObject } from "@feng3d/webgl-renderer"; +import { IGLRenderObject, WebGL } from "@feng3d/webgl-renderer"; + import { angleNormals } from "./mikolalysenko/angle-normals"; import * as bunny from "./mikolalysenko/bunny"; import { createCamera } from "./util/camera"; @@ -39,7 +40,7 @@ const normals = angleNormals(bunny.cells, bunny.positions).reduce((pv: number[], return pv; }, []); -const renderObject: IRenderObject = { +const renderObject: IGLRenderObject = { vertexArray: { vertices: { position: { buffer: { target: "ARRAY_BUFFER", data: new Float32Array(positions) }, numComponents: 3 }, diff --git a/examples/src/regl-examples/cloth.ts b/examples/src/regl-examples/cloth.ts index 3bdd3ea..3df8621 100644 --- a/examples/src/regl-examples/cloth.ts +++ b/examples/src/regl-examples/cloth.ts @@ -1,4 +1,5 @@ -import { IRenderObject, ISamplerTexture, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderObject, IGLSamplerTexture, WebGL } from "@feng3d/webgl-renderer"; + import { fit } from "./hughsk/canvas-fit"; import { attachCamera } from "./hughsk/canvas-orbit-camera"; import * as mat4 from "./stackgl/gl-mat4"; @@ -165,7 +166,7 @@ import * as vec3 from "./stackgl/gl-vec3"; let viewportWidth = 1; let viewportHeight = 1; - const renderObject: IRenderObject = { + const renderObject: IGLRenderObject = { vertexArray: { vertices: { position: { buffer: { target: "ARRAY_BUFFER", data: new Float32Array(positions) }, numComponents: 3 }, @@ -379,7 +380,7 @@ import * as vec3 from "./stackgl/gl-vec3"; img.src = "../../assets/cloth.png"; await img.decode(); - const diffuse: ISamplerTexture = { texture: { generateMipmap: true, sources: [{ source: img }] }, sampler: { minFilter: "LINEAR_MIPMAP_LINEAR", wrapS: "REPEAT", wrapT: "REPEAT" } }; + const diffuse: IGLSamplerTexture = { texture: { generateMipmap: true, sources: [{ source: img }] }, sampler: { minFilter: "LINEAR_MIPMAP_LINEAR", wrapS: "REPEAT", wrapT: "REPEAT" } }; draw(); })(); \ No newline at end of file diff --git a/examples/src/regl-examples/cube.ts b/examples/src/regl-examples/cube.ts index 00164af..8c7ecae 100644 --- a/examples/src/regl-examples/cube.ts +++ b/examples/src/regl-examples/cube.ts @@ -1,5 +1,4 @@ -import { WebGL, IRenderObject } from "@feng3d/webgl-renderer"; -import { ISamplerTexture } from "../../../src/data/ISamplerTexture"; +import { IGLRenderObject, IGLSamplerTexture, WebGL } from "@feng3d/webgl-renderer"; import * as mat4 from "./stackgl/gl-mat4"; (async () => @@ -67,7 +66,7 @@ import * as mat4 from "./stackgl/gl-mat4"; let viewportWidth = 1; let viewportHeight = 1; - const renderObject: IRenderObject = { + const renderObject: IGLRenderObject = { vertexArray: { vertices: { position: { buffer: { target: "ARRAY_BUFFER", data: new Float32Array(positions) }, numComponents: 3 }, @@ -132,7 +131,7 @@ import * as mat4 from "./stackgl/gl-mat4"; img.src = "../../assets/peppers.png"; await img.decode(); - const diffuse: ISamplerTexture = { texture: { sources: [{ source: img }] }, sampler: { minFilter: "LINEAR" } }; + const diffuse: IGLSamplerTexture = { texture: { sources: [{ source: img }] }, sampler: { minFilter: "LINEAR" } }; draw(); })(); \ No newline at end of file diff --git a/examples/src/regl-examples/util/camera.ts b/examples/src/regl-examples/util/camera.ts index 91f3bea..2c614b5 100644 --- a/examples/src/regl-examples/util/camera.ts +++ b/examples/src/regl-examples/util/camera.ts @@ -1,4 +1,5 @@ -import { IRenderObject } from "../../../../src"; +import { IGLRenderObject } from "@feng3d/webgl-renderer"; + import { mouseListen as mouseChange } from "../mikolalysenko/mouse-change"; import { mouseWheelListen as mouseWheel } from "../mikolalysenko/mouse-wheel"; import { identity, lookAt, perspective } from "../stackgl/gl-mat4"; @@ -100,7 +101,7 @@ export function createCamera(props) lookAt(cameraState.view, eye, center, up); } - const injectContext = (renderObject: IRenderObject, viewportWidth: number, viewportHeight: number) => + const injectContext = (renderObject: IGLRenderObject, viewportWidth: number, viewportHeight: number) => { Object.keys(cameraState).forEach(function (name) { @@ -115,7 +116,7 @@ export function createCamera(props) 1000.0); }; - function setupCamera(renderObject: IRenderObject, viewportWidth: number, viewportHeight: number) + function setupCamera(renderObject: IGLRenderObject, viewportWidth: number, viewportHeight: number) { updateCamera(); injectContext(renderObject, viewportWidth, viewportHeight); diff --git a/examples/src/webgl-examples/sample2.ts b/examples/src/webgl-examples/sample2.ts index f73370a..4db9c55 100644 --- a/examples/src/webgl-examples/sample2.ts +++ b/examples/src/webgl-examples/sample2.ts @@ -1,6 +1,5 @@ +import { IGLRenderPass, WebGL } from "@feng3d/webgl-renderer"; import { mat4 } from "gl-matrix"; -import { IRenderPass } from "../../../src/data/IRenderPass"; -import { WebGL } from "@feng3d/webgl-renderer"; main(); @@ -12,7 +11,7 @@ function main() const webgl = new WebGL({ canvasId: "glcanvas", contextId: "webgl" }); - const renderPasss: IRenderPass = { + const renderPasss: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0, 0, 0, 1], diff --git a/examples/src/webgl-examples/sample3.ts b/examples/src/webgl-examples/sample3.ts index 840d208..eda3a39 100644 --- a/examples/src/webgl-examples/sample3.ts +++ b/examples/src/webgl-examples/sample3.ts @@ -1,4 +1,4 @@ -import { IRenderPass, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderPass, WebGL } from "@feng3d/webgl-renderer"; import { mat4 } from "gl-matrix"; main(); @@ -15,7 +15,7 @@ function main() const webgl = new WebGL({ canvasId: "glcanvas", contextId: "webgl" }); - const renderPasss: IRenderPass = { + const renderPasss: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], diff --git a/examples/src/webgl-examples/sample4.ts b/examples/src/webgl-examples/sample4.ts index c06e9fa..1c8d6e4 100644 --- a/examples/src/webgl-examples/sample4.ts +++ b/examples/src/webgl-examples/sample4.ts @@ -1,4 +1,4 @@ -import { WebGL, IRenderObject, IRenderPass } from "@feng3d/webgl-renderer"; +import { IGLRenderObject, IGLRenderPass, WebGL } from "@feng3d/webgl-renderer"; import { mat4 } from "gl-matrix"; let squareRotation = 0.0; @@ -14,7 +14,7 @@ function main() const webgl = new WebGL({ canvasId: "glcanvas", contextId: "webgl" }); - const renderObject: IRenderObject = { + const renderObject: IGLRenderObject = { pipeline: { primitive: { topology: "TRIANGLE_STRIP" }, vertex: { @@ -78,7 +78,7 @@ function main() drawArrays: { firstVertex: 0, vertexCount: 4 }, }; - const renderPasss: IRenderPass = { + const renderPasss: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], diff --git a/examples/src/webgl-examples/sample5.ts b/examples/src/webgl-examples/sample5.ts index 56e4be7..c1a1d1e 100644 --- a/examples/src/webgl-examples/sample5.ts +++ b/examples/src/webgl-examples/sample5.ts @@ -1,4 +1,4 @@ -import { IRenderObject, IRenderPass, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderObject, IGLRenderPass, WebGL } from "@feng3d/webgl-renderer"; import { mat4 } from "gl-matrix"; let cubeRotation = 0.0; @@ -18,7 +18,7 @@ function main() // objects we'll be drawing. const buffers = initBuffers(); - const renderObject: IRenderObject = { + const renderObject: IGLRenderObject = { pipeline: { primitive: { topology: "TRIANGLES" }, vertex: { @@ -74,7 +74,7 @@ function main() drawElements: { firstIndex: 0, indexCount: 36 }, }; - const renderPasss: IRenderPass = { + const renderPasss: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], diff --git a/examples/src/webgl-examples/sample6.ts b/examples/src/webgl-examples/sample6.ts index 738ab10..49770e8 100644 --- a/examples/src/webgl-examples/sample6.ts +++ b/examples/src/webgl-examples/sample6.ts @@ -1,4 +1,4 @@ -import { IRenderObject, IRenderPass, ISampler, ITexture, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderObject, IGLRenderPass, IGLSampler, IGLTexture, WebGL } from "@feng3d/webgl-renderer"; import { mat4 } from "gl-matrix"; let cubeRotation = 0.0; @@ -20,7 +20,7 @@ async function main() const texture = await loadTexture("../../cubetexture.png"); - const renderObject: IRenderObject = { + const renderObject: IGLRenderObject = { pipeline: { primitive: { topology: "TRIANGLES" }, vertex: { @@ -78,7 +78,7 @@ async function main() drawElements: { firstIndex: 0, indexCount: 36 }, }; - const renderPasss: IRenderPass = { + const renderPasss: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], @@ -233,12 +233,12 @@ async function loadTexture(url: string) const generateMipmap = isPowerOf2(img.width) && isPowerOf2(img.height); - const texture: ITexture = { + const texture: IGLTexture = { target: "TEXTURE_2D", internalformat: "RGBA", format: "RGBA", type: "UNSIGNED_BYTE", sources: [{ source: img }], }; - let sampler: ISampler = {}; + let sampler: IGLSampler = {}; if (generateMipmap) { texture.generateMipmap = generateMipmap; diff --git a/examples/src/webgl-examples/sample7.ts b/examples/src/webgl-examples/sample7.ts index 1bef4c8..04f638a 100644 --- a/examples/src/webgl-examples/sample7.ts +++ b/examples/src/webgl-examples/sample7.ts @@ -1,6 +1,5 @@ +import { IGLRenderObject, IGLRenderPass, IGLSampler, IGLSamplerTexture, IGLTexture, WebGL } from "@feng3d/webgl-renderer"; import { mat4 } from "gl-matrix"; -import { ISamplerTexture } from "../../../src/data/ISamplerTexture"; -import { WebGL, IRenderObject, IRenderPass, ITexture, ISampler } from "@feng3d/webgl-renderer"; let cubeRotation = 0.0; @@ -21,7 +20,7 @@ async function main() const texture = await loadTexture("../../cubetexture.png"); - const renderObject: IRenderObject = { + const renderObject: IGLRenderObject = { pipeline: { primitive: { topology: "TRIANGLES" }, vertex: { @@ -106,7 +105,7 @@ async function main() drawElements: { firstIndex: 0, indexCount: 36 }, }; - const renderPasss: IRenderPass = { + const renderPasss: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], @@ -308,12 +307,12 @@ async function loadTexture(url: string) const generateMipmap = isPowerOf2(img.width) && isPowerOf2(img.height); - const texture: ITexture = { + const texture: IGLTexture = { target: "TEXTURE_2D", internalformat: "RGBA", format: "RGBA", type: "UNSIGNED_BYTE", sources: [{ source: img }], }; - let sampler: ISampler = {}; + let sampler: IGLSampler = {}; if (generateMipmap) { @@ -324,7 +323,7 @@ async function loadTexture(url: string) sampler = { wrapS: "CLAMP_TO_EDGE", wrapT: "CLAMP_TO_EDGE", minFilter: "LINEAR" }; } - return { texture, sampler } as ISamplerTexture; + return { texture, sampler } as IGLSamplerTexture; } function isPowerOf2(value: number) diff --git a/examples/src/webgl-examples/sample8.ts b/examples/src/webgl-examples/sample8.ts index 2f2583d..e170561 100644 --- a/examples/src/webgl-examples/sample8.ts +++ b/examples/src/webgl-examples/sample8.ts @@ -1,6 +1,5 @@ -import { IRenderObject, IRenderPass, ISampler, ITexture, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderObject, IGLRenderPass, IGLSampler, IGLSamplerTexture, IGLTexture, WebGL } from "@feng3d/webgl-renderer"; import { mat4 } from "gl-matrix"; -import { ISamplerTexture } from "../../../src/data/ISamplerTexture"; let cubeRotation = 0.0; // will set to true when video can be copied to texture @@ -25,7 +24,7 @@ function main() const video = setupVideo("../../Firefox.mp4"); - const renderObject: IRenderObject = { + const renderObject: IGLRenderObject = { pipeline: { primitive: { topology: "TRIANGLES" }, vertex: { @@ -110,7 +109,7 @@ function main() drawElements: { firstIndex: 0, indexCount: 36 }, }; - const renderPasss: IRenderPass = { + const renderPasss: IGLRenderPass = { descriptor: { colorAttachments: [{ clearValue: [0.0, 0.0, 0.0, 1.0], @@ -338,13 +337,13 @@ function initBuffers() // // Initialize a texture. // -function initTexture(): ISamplerTexture +function initTexture(): IGLSamplerTexture { - const texture: ITexture = { + const texture: IGLTexture = { target: "TEXTURE_2D", internalformat: "RGBA", format: "RGBA", type: "UNSIGNED_BYTE", sources: [{ width: 1, height: 1, pixels: new Uint8Array([0, 0, 255, 255]) }], }; - const sampler: ISampler = { wrapS: "CLAMP_TO_EDGE", wrapT: "CLAMP_TO_EDGE", minFilter: "LINEAR" }; + const sampler: IGLSampler = { wrapS: "CLAMP_TO_EDGE", wrapT: "CLAMP_TO_EDGE", minFilter: "LINEAR" }; return { texture, sampler }; } @@ -352,7 +351,7 @@ function initTexture(): ISamplerTexture // // copy the video texture // -function updateTexture(texture: ITexture, video: HTMLVideoElement) +function updateTexture(texture: IGLTexture, video: HTMLVideoElement) { texture.sources = [{ source: video }]; } diff --git a/src/data/IGLRenderPipeline.ts b/src/data/IGLRenderPipeline.ts index 7f8e2d4..50c19bc 100644 --- a/src/data/IGLRenderPipeline.ts +++ b/src/data/IGLRenderPipeline.ts @@ -5,7 +5,7 @@ import { IGLPrimitiveState } from "./IGLPrimitiveState"; /** * @deprecated 请使用 `IRenderPipeline` 。 */ -export type IProgram = IGLRenderPipeline; +export type IGLProgram = IGLRenderPipeline; /** * 渲染管线。 diff --git a/src/data/IGLVertexAttribute.ts b/src/data/IGLVertexAttribute.ts index 817d7f8..224f082 100644 --- a/src/data/IGLVertexAttribute.ts +++ b/src/data/IGLVertexAttribute.ts @@ -13,7 +13,7 @@ export interface IGLVertexAttribute * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bufferData */ - buffer: IVertexBuffer; + buffer: IGLVertexBuffer; /** * 顶点数据元素数量。 @@ -51,7 +51,7 @@ export interface IGLVertexAttribute vertexSize?: number; } -export interface IVertexBuffer extends IGLBuffer +export interface IGLVertexBuffer extends IGLBuffer { target: "ARRAY_BUFFER"; } diff --git a/src/index.ts b/src/index.ts index 010bdde..95c56ae 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,3 @@ -export * from "./WebGL"; export * from "./data/IGLBlitFramebuffer"; export * from "./data/IGLBuffer"; export * from "./data/IGLCapabilities"; @@ -8,11 +7,11 @@ export * from "./data/IGLIndexBuffer"; export * from "./data/IGLPassDescriptor"; export * from "./data/IGLPrimitiveState"; export * from "./data/IGLQueryAction"; +export * from "./data/IGLRenderbuffer"; +export * from "./data/IGLRenderingContext"; export * from "./data/IGLRenderObject"; export * from "./data/IGLRenderPass"; export * from "./data/IGLRenderPipeline"; -export * from "./data/IGLRenderbuffer"; -export * from "./data/IGLRenderingContext"; export * from "./data/IGLSampler"; export * from "./data/IGLSamplerTexture"; export * from "./data/IGLTexture"; @@ -21,9 +20,11 @@ export * from "./data/IGLUniforms"; export * from "./data/IGLVertexArrayObject"; export * from "./data/IGLVertexAttribute"; export * from "./data/IGLVertexAttributes"; +export * from "./data/IGLViewport"; export * from "./gl/WebGLEnums"; export * from "./runs/runUniforms"; export * from "./shader/Macro"; export * from "./shader/ShaderLib"; export * from "./shader/ShaderMacroUtils"; +export * from "./WebGL"; -- Gitee From a12c34538cd6f2a7c393bf173143f5f261afeb2a Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Mon, 4 Nov 2024 11:49:40 +0800 Subject: [PATCH 16/47] 1 --- src/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 95c56ae..8d9cea5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -22,7 +22,6 @@ export * from "./data/IGLVertexAttribute"; export * from "./data/IGLVertexAttributes"; export * from "./data/IGLViewport"; export * from "./gl/WebGLEnums"; -export * from "./runs/runUniforms"; export * from "./shader/Macro"; export * from "./shader/ShaderLib"; export * from "./shader/ShaderMacroUtils"; -- Gitee From e5d439702e271f4f67e9beebacefa1a5e2b60c41 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Mon, 4 Nov 2024 16:34:31 +0800 Subject: [PATCH 17/47] 1 --- src/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/index.ts b/src/index.ts index 8d9cea5..4832b85 100644 --- a/src/index.ts +++ b/src/index.ts @@ -7,6 +7,7 @@ export * from "./data/IGLIndexBuffer"; export * from "./data/IGLPassDescriptor"; export * from "./data/IGLPrimitiveState"; export * from "./data/IGLQueryAction"; +export * from "./data/IGLReadPixels"; export * from "./data/IGLRenderbuffer"; export * from "./data/IGLRenderingContext"; export * from "./data/IGLRenderObject"; -- Gitee From c4ad6d47771e2e7ded965ef3fd36dc40428b7ef6 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Mon, 4 Nov 2024 22:11:51 +0800 Subject: [PATCH 18/47] gitee --- typedoc.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/typedoc.json b/typedoc.json index ff3f468..1b7c73d 100644 --- a/typedoc.json +++ b/typedoc.json @@ -4,6 +4,6 @@ "entryPoints": [ "src/index.ts" ], - "sourceLinkTemplate": "https://gitlab.com/feng3d/webgl-renderer/tree/master/{path}#L{line}", + "sourceLinkTemplate": "https://gitee.com/feng3d/webgl-renderer/tree/master/{path}#L{line}", "out": "public/docs" } \ No newline at end of file -- Gitee From 82cf7fa9157f1e8d0b0105897f6f40cbbb64c3ea Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Wed, 6 Nov 2024 15:43:48 +0800 Subject: [PATCH 19/47] =?UTF-8?q?=E6=95=B4=E7=90=86=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/index.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/index.ts b/src/index.ts index 4832b85..098b3bf 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,6 +2,9 @@ export * from "./data/IGLBlitFramebuffer"; export * from "./data/IGLBuffer"; export * from "./data/IGLCapabilities"; export * from "./data/IGLCopyBuffer"; +export * from "./data/IGLDepthStencilState"; +export * from "./data/IGLDrawArrays"; +export * from "./data/IGLDrawElements"; export * from "./data/IGLFramebuffer"; export * from "./data/IGLIndexBuffer"; export * from "./data/IGLPassDescriptor"; @@ -12,6 +15,8 @@ export * from "./data/IGLRenderbuffer"; export * from "./data/IGLRenderingContext"; export * from "./data/IGLRenderObject"; export * from "./data/IGLRenderPass"; +export * from "./data/IGLRenderPassColorAttachment"; +export * from "./data/IGLRenderPassDepthStencilAttachment"; export * from "./data/IGLRenderPipeline"; export * from "./data/IGLSampler"; export * from "./data/IGLSamplerTexture"; @@ -22,9 +27,12 @@ export * from "./data/IGLVertexArrayObject"; export * from "./data/IGLVertexAttribute"; export * from "./data/IGLVertexAttributes"; export * from "./data/IGLViewport"; + export * from "./gl/WebGLEnums"; + export * from "./shader/Macro"; export * from "./shader/ShaderLib"; export * from "./shader/ShaderMacroUtils"; + export * from "./WebGL"; -- Gitee From d2e643f99e8f93add1716307fde08a0b7b30a813 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Mon, 11 Nov 2024 16:01:32 +0800 Subject: [PATCH 20/47] 1 --- examples/src/WebGL2Samples/draw_image_space.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/examples/src/WebGL2Samples/draw_image_space.ts b/examples/src/WebGL2Samples/draw_image_space.ts index 77d6a22..bf18846 100644 --- a/examples/src/WebGL2Samples/draw_image_space.ts +++ b/examples/src/WebGL2Samples/draw_image_space.ts @@ -42,13 +42,10 @@ loadImage("../../assets/img/Di-3d.png", (img) => diffuse: { texture, sampler }, u_imageSize: [canvas.width / 2, canvas.height / 2], }, - // drawVertex: { firstVertex: 0, vertexCount: 3 }, + drawArrays: { firstVertex: 0, vertexCount: 3 }, pipeline: program }; - canvas.width = Math.min(window.innerWidth, window.innerHeight); - canvas.height = canvas.width; - webgl.runRenderPass({ descriptor: { colorAttachments: [{ -- Gitee From e4bc0c4e439bdd118fb4a4da7daa1d9660bf0309 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Mon, 11 Nov 2024 16:33:00 +0800 Subject: [PATCH 21/47] IGLTexturePixelStore --- src/caches/getTexture.ts | 7 +- src/data/IGLTexture.ts | 152 +------------------------------ src/data/IGLTexturePixelStore.ts | 148 ++++++++++++++++++++++++++++++ src/index.ts | 1 + src/runs/runTexture.ts | 2 +- 5 files changed, 157 insertions(+), 153 deletions(-) create mode 100644 src/data/IGLTexturePixelStore.ts diff --git a/src/caches/getTexture.ts b/src/caches/getTexture.ts index 81efc27..a8c637c 100644 --- a/src/caches/getTexture.ts +++ b/src/caches/getTexture.ts @@ -1,5 +1,6 @@ import { watcher } from "@feng3d/watcher"; -import { IGLTexture, ITexturePixelStore, GLTextureTarget } from "../data/IGLTexture"; +import { GLTextureTarget, IGLTexture } from "../data/IGLTexture"; +import { IGLTexturePixelStore } from "../data/IGLTexturePixelStore"; import { defaultBufferSource, defaultImageSource, defaultTexture } from "../runs/runTexture"; declare global @@ -25,7 +26,7 @@ declare global } } -const defaultTexturePixelStore: ITexturePixelStore = { +const defaultTexturePixelStore: IGLTexturePixelStore = { packAlignment: 4, unpackAlignment: 4, unpackFlipY: false, @@ -247,7 +248,7 @@ export function deleteTexture(gl: WebGLRenderingContext, texture: IGLTexture) * @param gl * @param pixelStore 像素解包打包时参数。 */ -function setTexturePixelStore(gl: WebGLRenderingContext, pixelStore: ITexturePixelStore) +function setTexturePixelStore(gl: WebGLRenderingContext, pixelStore: IGLTexturePixelStore) { const { packAlignment, diff --git a/src/data/IGLTexture.ts b/src/data/IGLTexture.ts index 3a02528..b2a61f9 100644 --- a/src/data/IGLTexture.ts +++ b/src/data/IGLTexture.ts @@ -1,3 +1,5 @@ +import { IGLTexturePixelStore } from "./IGLTexturePixelStore"; + /** * 纹理视图。 */ @@ -63,7 +65,7 @@ export interface IGLTexture * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/pixelStorei */ - pixelStore?: ITexturePixelStore; + pixelStore?: IGLTexturePixelStore; /** * 内部纹理格式。 @@ -258,154 +260,6 @@ export interface ITextureStorage depth?: number } -/** - * 像素解包打包时参数。 - * - * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/pixelStorei - */ -export interface ITexturePixelStore -{ - /** - * Packing of pixel data into memory - * - * gl.PACK_ALIGNMENT - * - * 默认值为 4 。 - */ - packAlignment?: 1 | 2 | 4 | 8; - - /** - * Unpacking of pixel data from memory. - * - * gl.UNPACK_ALIGNMENT - * - * 默认值为 4 。 - */ - unpackAlignment?: 1 | 2 | 4 | 8; - - /** - * 解包图像数据时进行Y轴反转。 - * - * Flips the source data along its vertical axis if true. - * - * gl.UNPACK_FLIP_Y_WEBGL - * - * 默认为 false。 - */ - unpackFlipY?: boolean; - - /** - * 将图像RGB颜色值得每一个分量乘以A。 - * - * Multiplies the alpha channel into the other color channels - * - * gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL - * - * 默认为 false。 - */ - unpackPremulAlpha?: boolean; - - /** - * Default color space conversion or no color space conversion. - * - * gl.UNPACK_COLORSPACE_CONVERSION_WEBGL - * - * 默认为 "BROWSER_DEFAULT_WEBGL" 。 - */ - unpackColorSpaceConversion?: "BROWSER_DEFAULT_WEBGL" | "NONE"; - - /** - * Number of pixels in a row. - * - * gl.PACK_ROW_LENGTH - * - * 默认值为 0 。 - * - * 仅 WebGL2。 - */ - packRowLength?: number; - - /** - * Number of pixel locations skipped before the first pixel is written into memory. - * - * gl.PACK_SKIP_PIXELS - * - * 默认值为 0 。 - * - * 仅 WebGL2。 - */ - packSkipPixels?: number; - - /** - * Number of rows of pixel locations skipped before the first pixel is written into memory - * - * gl.PACK_SKIP_ROWS - * - * 默认值为 0 。 - * - * 仅 WebGL2。 - */ - packSkipRows?: number; - - /** - * Number of pixels in a row. - * - * gl.UNPACK_ROW_LENGTH - * - * 默认值为 0 。 - * - * 仅 WebGL2。 - */ - unpackRowLength?: number; - - /** - * Image height used for reading pixel data from memory - * - * gl.UNPACK_IMAGE_HEIGHT - * - * 默认值为 0 。 - * - * 仅 WebGL2。 - */ - unpackImageHeight?: number; - - /** - * - * Number of pixel images skipped before the first pixel is read from memory - * - * gl.UNPACK_SKIP_PIXELS - * - * 默认值为 0 。 - * - * 仅 WebGL2。 - */ - unpackSkipPixels?: number; - - /** - * - * Number of rows of pixel locations skipped before the first pixel is read from memory - * - * gl.UNPACK_SKIP_ROWS - * - * 默认值为 0 。 - * - * 仅 WebGL2。 - */ - unpackSkipRows?: number; - - /** - * - * Number of pixel images skipped before the first pixel is read from memory - * - * gl.UNPACK_SKIP_IMAGES - * - * 默认值为 0 。 - * - * 仅 WebGL2。 - */ - unpackSkipImages?: number; -} - /** * 纹理绑定点。 * diff --git a/src/data/IGLTexturePixelStore.ts b/src/data/IGLTexturePixelStore.ts new file mode 100644 index 0000000..ec6ce42 --- /dev/null +++ b/src/data/IGLTexturePixelStore.ts @@ -0,0 +1,148 @@ + +/** + * 像素解包打包时参数。 + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/pixelStorei + */ +export interface IGLTexturePixelStore +{ + /** + * Packing of pixel data into memory + * + * gl.PACK_ALIGNMENT + * + * 默认值为 4 。 + */ + packAlignment?: 1 | 2 | 4 | 8; + + /** + * Unpacking of pixel data from memory. + * + * gl.UNPACK_ALIGNMENT + * + * 默认值为 4 。 + */ + unpackAlignment?: 1 | 2 | 4 | 8; + + /** + * 解包图像数据时进行Y轴反转。 + * + * Flips the source data along its vertical axis if true. + * + * gl.UNPACK_FLIP_Y_WEBGL + * + * 默认为 false。 + */ + unpackFlipY?: boolean; + + /** + * 将图像RGB颜色值得每一个分量乘以A。 + * + * Multiplies the alpha channel into the other color channels + * + * gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL + * + * 默认为 false。 + */ + unpackPremulAlpha?: boolean; + + /** + * Default color space conversion or no color space conversion. + * + * gl.UNPACK_COLORSPACE_CONVERSION_WEBGL + * + * 默认为 "BROWSER_DEFAULT_WEBGL" 。 + */ + unpackColorSpaceConversion?: "BROWSER_DEFAULT_WEBGL" | "NONE"; + + /** + * Number of pixels in a row. + * + * gl.PACK_ROW_LENGTH + * + * 默认值为 0 。 + * + * 仅 WebGL2。 + */ + packRowLength?: number; + + /** + * Number of pixel locations skipped before the first pixel is written into memory. + * + * gl.PACK_SKIP_PIXELS + * + * 默认值为 0 。 + * + * 仅 WebGL2。 + */ + packSkipPixels?: number; + + /** + * Number of rows of pixel locations skipped before the first pixel is written into memory + * + * gl.PACK_SKIP_ROWS + * + * 默认值为 0 。 + * + * 仅 WebGL2。 + */ + packSkipRows?: number; + + /** + * Number of pixels in a row. + * + * gl.UNPACK_ROW_LENGTH + * + * 默认值为 0 。 + * + * 仅 WebGL2。 + */ + unpackRowLength?: number; + + /** + * Image height used for reading pixel data from memory + * + * gl.UNPACK_IMAGE_HEIGHT + * + * 默认值为 0 。 + * + * 仅 WebGL2。 + */ + unpackImageHeight?: number; + + /** + * + * Number of pixel images skipped before the first pixel is read from memory + * + * gl.UNPACK_SKIP_PIXELS + * + * 默认值为 0 。 + * + * 仅 WebGL2。 + */ + unpackSkipPixels?: number; + + /** + * + * Number of rows of pixel locations skipped before the first pixel is read from memory + * + * gl.UNPACK_SKIP_ROWS + * + * 默认值为 0 。 + * + * 仅 WebGL2。 + */ + unpackSkipRows?: number; + + /** + * + * Number of pixel images skipped before the first pixel is read from memory + * + * gl.UNPACK_SKIP_IMAGES + * + * 默认值为 0 。 + * + * 仅 WebGL2。 + */ + unpackSkipImages?: number; +} diff --git a/src/index.ts b/src/index.ts index 098b3bf..0b1a269 100644 --- a/src/index.ts +++ b/src/index.ts @@ -21,6 +21,7 @@ export * from "./data/IGLRenderPipeline"; export * from "./data/IGLSampler"; export * from "./data/IGLSamplerTexture"; export * from "./data/IGLTexture"; +export * from "./data/IGLTexturePixelStore"; export * from "./data/IGLTransformFeedback"; export * from "./data/IGLUniforms"; export * from "./data/IGLVertexArrayObject"; diff --git a/src/runs/runTexture.ts b/src/runs/runTexture.ts index 4755e7c..a1b1001 100644 --- a/src/runs/runTexture.ts +++ b/src/runs/runTexture.ts @@ -1,6 +1,6 @@ import { getTexture } from "../caches/getTexture"; import { IGLSamplerTexture } from "../data/IGLSamplerTexture"; -import { IGLBufferSource, IGLImageSource, IGLTexture, ITexturePixelStore, IGLTextureSource } from "../data/IGLTexture"; +import { IGLBufferSource, IGLImageSource, IGLTexture, IGLTextureSource } from "../data/IGLTexture"; import { IUniformItemInfo } from "../data/IGLUniformInfo"; import { runSampler } from "./runSampler"; -- Gitee From 1a21ecb422bdd246a509dfa87f58b8fbc649998a Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Mon, 11 Nov 2024 16:34:24 +0800 Subject: [PATCH 22/47] IGLTextureStorage --- src/data/IGLTexture.ts | 17 ++--------------- src/data/IGLTextureStorage.ts | 13 +++++++++++++ 2 files changed, 15 insertions(+), 15 deletions(-) create mode 100644 src/data/IGLTextureStorage.ts diff --git a/src/data/IGLTexture.ts b/src/data/IGLTexture.ts index b2a61f9..c517328 100644 --- a/src/data/IGLTexture.ts +++ b/src/data/IGLTexture.ts @@ -1,4 +1,5 @@ import { IGLTexturePixelStore } from "./IGLTexturePixelStore"; +import { IGLTextureStorage } from "./IGLTextureStorage"; /** * 纹理视图。 @@ -46,7 +47,7 @@ export interface IGLTexture * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/texStorage2D * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/texStorage3D */ - storage?: ITextureStorage; + storage?: IGLTextureStorage; /** * 写入纹理。 @@ -246,20 +247,6 @@ export interface IWriteTexture srcOffset?: number } -/** - * 初始纹理时指定纹理存储的各个级别。 - * - * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/texStorage2D - */ -export interface ITextureStorage -{ - levels: number, width: number, height: number; - /** - * 3D纹理深度。 - */ - depth?: number -} - /** * 纹理绑定点。 * diff --git a/src/data/IGLTextureStorage.ts b/src/data/IGLTextureStorage.ts new file mode 100644 index 0000000..50a6e17 --- /dev/null +++ b/src/data/IGLTextureStorage.ts @@ -0,0 +1,13 @@ +/** + * 初始纹理时指定纹理存储的各个级别。 + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/texStorage2D + */ +export interface IGLTextureStorage +{ + levels: number, width: number, height: number; + /** + * 3D纹理深度。 + */ + depth?: number +} \ No newline at end of file -- Gitee From cff90b4a5ba6c570cc03e76c9605d3dbb7d652ed Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Mon, 11 Nov 2024 16:54:52 +0800 Subject: [PATCH 23/47] IGLTextureStorage --- src/data/IGLTextureStorage.ts | 1 + src/index.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/src/data/IGLTextureStorage.ts b/src/data/IGLTextureStorage.ts index 50a6e17..417f134 100644 --- a/src/data/IGLTextureStorage.ts +++ b/src/data/IGLTextureStorage.ts @@ -2,6 +2,7 @@ * 初始纹理时指定纹理存储的各个级别。 * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/texStorage2D + * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/texStorage3D */ export interface IGLTextureStorage { diff --git a/src/index.ts b/src/index.ts index 0b1a269..5620f79 100644 --- a/src/index.ts +++ b/src/index.ts @@ -22,6 +22,7 @@ export * from "./data/IGLSampler"; export * from "./data/IGLSamplerTexture"; export * from "./data/IGLTexture"; export * from "./data/IGLTexturePixelStore"; +export * from "./data/IGLTextureStorage"; export * from "./data/IGLTransformFeedback"; export * from "./data/IGLUniforms"; export * from "./data/IGLVertexArrayObject"; -- Gitee From 18894fe317e88cc31f2e490290999c7ed7f9bf4f Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Tue, 12 Nov 2024 11:51:52 +0800 Subject: [PATCH 24/47] getIGLTextureSize --- src/caches/getIGLTextureSize.ts | 23 +++++++++++++++++++++++ src/caches/getIGLTextureSourceSize.ts | 25 +++++++++++++++++++++++++ src/caches/getTexImageSourceSize.ts | 21 +++++++++++++++++++++ src/data/IGLTexture.ts | 3 +++ 4 files changed, 72 insertions(+) create mode 100644 src/caches/getIGLTextureSize.ts create mode 100644 src/caches/getIGLTextureSourceSize.ts create mode 100644 src/caches/getTexImageSourceSize.ts diff --git a/src/caches/getIGLTextureSize.ts b/src/caches/getIGLTextureSize.ts new file mode 100644 index 0000000..bf782d8 --- /dev/null +++ b/src/caches/getIGLTextureSize.ts @@ -0,0 +1,23 @@ +import { IGLTexture } from "@feng3d/webgl-renderer"; +import { getIGLTextureSourceSize } from "./getIGLTextureSourceSize"; + +export function getIGLTextureSize(glTexture: IGLTexture) +{ + let size: [width: number, height?: number, depthOrArrayLayers?: number]; + if (glTexture.storage) + { + size = [glTexture.storage.width, glTexture.storage.height]; + if (glTexture.storage.depth) + { + size.push(glTexture.storage.depth); + } + } + + // + if (glTexture.sources) + { + size = getIGLTextureSourceSize(glTexture.sources[0]); + } + + return size; +} \ No newline at end of file diff --git a/src/caches/getIGLTextureSourceSize.ts b/src/caches/getIGLTextureSourceSize.ts new file mode 100644 index 0000000..c472cd3 --- /dev/null +++ b/src/caches/getIGLTextureSourceSize.ts @@ -0,0 +1,25 @@ +import { IGLBufferSource, IGLImageSource, IGLTextureSource } from "../data/IGLTexture"; +import { getTexImageSourceSize } from "./getTexImageSourceSize"; + +export function getIGLTextureSourceSize(glTextureSource: IGLTextureSource) +{ + const size: [width: number, height?: number, depthOrArrayLayers?: number] = [] as any; + + // + const glImageSource = glTextureSource as IGLImageSource; + const glBufferSource = glTextureSource as IGLBufferSource; + const source = glImageSource.source; + if (source) + { + const texImageSourceSize = getTexImageSourceSize(source); + size[0] = texImageSourceSize.width; + size[1] = texImageSourceSize.height; + } + else + { + size[0] = glBufferSource.width; + size[1] = glBufferSource.height; + } + + return size; +} diff --git a/src/caches/getTexImageSourceSize.ts b/src/caches/getTexImageSourceSize.ts new file mode 100644 index 0000000..235ae20 --- /dev/null +++ b/src/caches/getTexImageSourceSize.ts @@ -0,0 +1,21 @@ +export function getTexImageSourceSize(texImageSource: TexImageSource) +{ + let width: number; + let height: number; + if (texImageSource instanceof VideoFrame) + { + width = texImageSource.codedWidth; + height = texImageSource.codedHeight; + } + else if (texImageSource instanceof HTMLVideoElement) + { + width = texImageSource.videoWidth; + height = texImageSource.videoHeight; + } + else + { + width = texImageSource.width; + height = texImageSource.height; + } + return { width, height }; +} \ No newline at end of file diff --git a/src/data/IGLTexture.ts b/src/data/IGLTexture.ts index c517328..0c6dac6 100644 --- a/src/data/IGLTexture.ts +++ b/src/data/IGLTexture.ts @@ -119,6 +119,9 @@ export interface IGLImageSource * 纹理图片资源。 */ source: TexImageSource + + width?: number; + height?: number; } /** -- Gitee From d36b0781f52ebefd4bb96d562b7df139c7dd0e32 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Tue, 12 Nov 2024 15:24:13 +0800 Subject: [PATCH 25/47] getTexture --- src/caches/getTexture.ts | 33 +++++++++++++++++++++++++++------ src/data/IGLTexture.ts | 17 +++++++++++++++++ 2 files changed, 44 insertions(+), 6 deletions(-) diff --git a/src/caches/getTexture.ts b/src/caches/getTexture.ts index a8c637c..4c4d898 100644 --- a/src/caches/getTexture.ts +++ b/src/caches/getTexture.ts @@ -96,13 +96,27 @@ export function getTexture(gl: WebGLRenderingContext, texture: IGLTexture) if ("source" in sourceItem) { - const { level, source } = { ...defaultImageSource, ...sourceItem }; - gl.texImage2D(gl[bindTarget], level, gl[internalformat], gl[format], gl[type], source); + const { level, source, width, height, border } = { ...defaultImageSource, ...sourceItem }; + if (width && height) + { + (gl as any as WebGL2RenderingContext).texImage2D(gl[bindTarget], level, gl[internalformat], width, height, border, gl[format], gl[type], source); + } + else + { + gl.texImage2D(gl[bindTarget], level, gl[internalformat], gl[format], gl[type], source); + } } else { - const { level, width, height, border, pixels } = { ...defaultBufferSource, ...sourceItem }; - gl.texImage2D(gl[bindTarget], level, gl[internalformat], width, height, border, gl[format], gl[type], pixels); + const { level, width, height, border, pixels, srcOffset } = { ...defaultBufferSource, ...sourceItem }; + if (srcOffset) + { + (gl as any as WebGL2RenderingContext).texImage2D(gl[bindTarget], level, gl[internalformat], width, height, border, gl[format], gl[type], pixels, srcOffset); + } + else + { + gl.texImage2D(gl[bindTarget], level, gl[internalformat], width, height, border, gl[format], gl[type], pixels); + } } } else if (target === "TEXTURE_2D_ARRAY" || target === "TEXTURE_3D") @@ -116,8 +130,15 @@ export function getTexture(gl: WebGLRenderingContext, texture: IGLTexture) } else { - const { level, width, height, depth, border, pixels } = { ...defaultBufferSource, ...sourceItem }; - gl.texImage3D(gl[target], level, gl[internalformat], width, height, depth, border, gl[format], gl[type], pixels); + const { level, width, height, depth, border, pixels, srcOffset } = { ...defaultBufferSource, ...sourceItem }; + if (srcOffset) + { + gl.texImage3D(gl[target], level, gl[internalformat], width, height, depth, border, gl[format], gl[type], pixels, srcOffset); + } + else + { + gl.texImage3D(gl[target], level, gl[internalformat], width, height, depth, border, gl[format], gl[type], pixels); + } } } } diff --git a/src/data/IGLTexture.ts b/src/data/IGLTexture.ts index 0c6dac6..a536ded 100644 --- a/src/data/IGLTexture.ts +++ b/src/data/IGLTexture.ts @@ -120,8 +120,20 @@ export interface IGLImageSource */ source: TexImageSource + /** + * WebGL2支持 + */ width?: number; + + /** + * WebGL2支持 + */ height?: number; + + /** + * WebGL2支持 + */ + border?: number; } /** @@ -175,6 +187,11 @@ export interface IGLBufferSource * 默认为 undefined。 */ pixels?: ArrayBufferView; + + /** + * 默认为 0。 + */ + srcOffset?: number; } /** -- Gitee From 49fd3b797f3b8e6d0f5669658921228e7a0bdafe Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Tue, 12 Nov 2024 15:38:11 +0800 Subject: [PATCH 26/47] internal --- src/index.ts | 2 ++ src/internal.ts | 2 ++ 2 files changed, 4 insertions(+) create mode 100644 src/internal.ts diff --git a/src/index.ts b/src/index.ts index 5620f79..a44780b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -38,3 +38,5 @@ export * from "./shader/ShaderMacroUtils"; export * from "./WebGL"; +export * as internal from "./internal"; + diff --git a/src/internal.ts b/src/internal.ts new file mode 100644 index 0000000..2c978ea --- /dev/null +++ b/src/internal.ts @@ -0,0 +1,2 @@ +export * from "./caches/getIGLTextureSize"; +export * from "./caches/getTexImageSourceSize"; \ No newline at end of file -- Gitee From 461255fabe58278a4dc820f3fe044c7e0e8833f1 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Tue, 12 Nov 2024 17:02:14 +0800 Subject: [PATCH 27/47] getIGPUTexture --- src/caches/getTexture.ts | 2 +- src/internal.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/caches/getTexture.ts b/src/caches/getTexture.ts index 4c4d898..caa9623 100644 --- a/src/caches/getTexture.ts +++ b/src/caches/getTexture.ts @@ -26,7 +26,7 @@ declare global } } -const defaultTexturePixelStore: IGLTexturePixelStore = { +export const defaultTexturePixelStore: IGLTexturePixelStore = { packAlignment: 4, unpackAlignment: 4, unpackFlipY: false, diff --git a/src/internal.ts b/src/internal.ts index 2c978ea..70c0d28 100644 --- a/src/internal.ts +++ b/src/internal.ts @@ -1,2 +1,3 @@ export * from "./caches/getIGLTextureSize"; -export * from "./caches/getTexImageSourceSize"; \ No newline at end of file +export * from "./caches/getTexImageSourceSize"; +export * from "./caches/getTexture"; \ No newline at end of file -- Gitee From 4c013a3ae320ff972b702cc219be96f974d7b794 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Wed, 13 Nov 2024 10:52:05 +0800 Subject: [PATCH 28/47] defaultGLSampler --- src/caches/getSampler.ts | 4 ++-- src/internal.ts | 5 ++++- src/runs/runSampler.ts | 6 +++--- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/caches/getSampler.ts b/src/caches/getSampler.ts index 4f246ff..55adf85 100644 --- a/src/caches/getSampler.ts +++ b/src/caches/getSampler.ts @@ -1,5 +1,5 @@ import { IGLSampler } from "../data/IGLSampler"; -import { defaultSampler } from "../runs/runSampler"; +import { defaultGLSampler } from "../runs/runSampler"; declare global { @@ -19,7 +19,7 @@ export function getSampler(gl: WebGLRenderingContext, sampler?: IGLSampler) webGLSampler = gl.createSampler(); gl._samplers.set(sampler, webGLSampler); - const { minFilter, magFilter, wrapS, wrapT, wrapR, lodMinClamp, lodMaxClamp, compareMode, compare } = { ...defaultSampler, ...sampler }; + const { minFilter, magFilter, wrapS, wrapT, wrapR, lodMinClamp, lodMaxClamp, compareMode, compare } = { ...defaultGLSampler, ...sampler }; gl.samplerParameteri(webGLSampler, gl.TEXTURE_MIN_FILTER, gl[minFilter]); gl.samplerParameteri(webGLSampler, gl.TEXTURE_MAG_FILTER, gl[magFilter]); diff --git a/src/internal.ts b/src/internal.ts index 70c0d28..c038fe1 100644 --- a/src/internal.ts +++ b/src/internal.ts @@ -1,3 +1,6 @@ +export { defaultGLSampler } from "./runs/runSampler"; + export * from "./caches/getIGLTextureSize"; export * from "./caches/getTexImageSourceSize"; -export * from "./caches/getTexture"; \ No newline at end of file +export * from "./caches/getTexture"; + diff --git a/src/runs/runSampler.ts b/src/runs/runSampler.ts index be4e2f2..786bd43 100644 --- a/src/runs/runSampler.ts +++ b/src/runs/runSampler.ts @@ -16,7 +16,7 @@ declare global } } -export const defaultSampler: IGLSampler = { +export const defaultGLSampler: IGLSampler = { minFilter: "LINEAR_MIPMAP_LINEAR", magFilter: "LINEAR", wrapS: "REPEAT", wrapT: "REPEAT", wrapR: "REPEAT", lodMinClamp: 0, lodMaxClamp: 16, @@ -39,7 +39,7 @@ export function runSampler(gl: WebGLRenderingContext, webGLTexture: WebGLTexture } else { - const { minFilter, magFilter, wrapS, wrapT } = { ...defaultSampler, ...sampler }; + const { minFilter, magFilter, wrapS, wrapT } = { ...defaultGLSampler, ...sampler }; // 设置纹理参数 if (webGLTexture.minFilter !== minFilter) @@ -65,7 +65,7 @@ export function runSampler(gl: WebGLRenderingContext, webGLTexture: WebGLTexture } // - const anisotropy = sampler?.anisotropy || defaultSampler.anisotropy; + const anisotropy = sampler?.anisotropy || defaultGLSampler.anisotropy; if (webGLTexture.anisotropy !== anisotropy) { const extension = gl.getExtension("EXT_texture_filter_anisotropic"); -- Gitee From cd0f1ae26a86cd815f452440f174d821f3ae3d38 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Wed, 13 Nov 2024 11:43:23 +0800 Subject: [PATCH 29/47] IGLSampler.compareMode --- src/data/IGLSampler.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/IGLSampler.ts b/src/data/IGLSampler.ts index 784a87d..ac348bd 100644 --- a/src/data/IGLSampler.ts +++ b/src/data/IGLSampler.ts @@ -37,7 +37,7 @@ export interface IGLSampler */ lodMaxClamp?: number; - compareMode?: "NONE"; + compareMode?: "NONE" | "COMPARE_REF_TO_TEXTURE"; /** * 比较函数。 */ -- Gitee From 55f1069ae16e6d7d2ba10e91d21173ab0c5edcbc Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Wed, 13 Nov 2024 12:12:52 +0800 Subject: [PATCH 30/47] glSamplerMap --- src/data/IGLSampler.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/data/IGLSampler.ts b/src/data/IGLSampler.ts index ac348bd..31a080b 100644 --- a/src/data/IGLSampler.ts +++ b/src/data/IGLSampler.ts @@ -37,13 +37,15 @@ export interface IGLSampler */ lodMaxClamp?: number; - compareMode?: "NONE" | "COMPARE_REF_TO_TEXTURE"; + compareMode?: GLSamplerCompareMode; /** * 比较函数。 */ compare?: GLCompareFunction; } +export type GLSamplerCompareMode = "NONE" | "COMPARE_REF_TO_TEXTURE"; + /** * 纹理放大滤波器 * Texture magnification filter -- Gitee From 77674210c442ad532c9c974467a8b3ba5afb51b2 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Wed, 13 Nov 2024 15:49:37 +0800 Subject: [PATCH 31/47] 1 --- src/data/IGLBuffer.ts | 10 +++++++--- src/data/IGLIndexBuffer.ts | 4 +++- src/runs/runIndexBuffer.ts | 5 ++++- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/data/IGLBuffer.ts b/src/data/IGLBuffer.ts index 6b1bbf7..cdf302c 100644 --- a/src/data/IGLBuffer.ts +++ b/src/data/IGLBuffer.ts @@ -5,8 +5,7 @@ */ export interface IGLBuffer { - // target: BufferTarget; - target: "ARRAY_BUFFER" | "ELEMENT_ARRAY_BUFFER" | "UNIFORM_BUFFER"; + target: GLBufferTarget; /** * 缓冲区数据。 @@ -38,7 +37,11 @@ export interface IGLWriteBuffer /** * 写入缓冲区数据。 */ - data: IAttributeBufferSourceTypes; + data: BufferSource; + + dataOffset?: number + + size?: number } /** @@ -93,3 +96,4 @@ export type GLBufferUsage = "STATIC_DRAW" | "DYNAMIC_DRAW" | "STREAM_DRAW" // We export type GLBufferTarget = "ARRAY_BUFFER" | "ELEMENT_ARRAY_BUFFER" // WebGL1 | "COPY_READ_BUFFER" | "COPY_WRITE_BUFFER" | "TRANSFORM_FEEDBACK_BUFFER"// WebGL2 | "UNIFORM_BUFFER" | "PIXEL_PACK_BUFFER" | "PIXEL_UNPACK_BUFFER"; // WebGL2 +// export type GLBufferTarget = "ARRAY_BUFFER" | "ELEMENT_ARRAY_BUFFER" | "UNIFORM_BUFFER"; \ No newline at end of file diff --git a/src/data/IGLIndexBuffer.ts b/src/data/IGLIndexBuffer.ts index d384afc..9062be8 100644 --- a/src/data/IGLIndexBuffer.ts +++ b/src/data/IGLIndexBuffer.ts @@ -1,4 +1,4 @@ -import { GLBufferUsage } from "./IGLBuffer"; +import { GLBufferUsage, IGLBuffer } from "./IGLBuffer"; /** * WebGL元素缓冲,顶点索引缓冲。 @@ -12,6 +12,8 @@ export interface IGLIndexBuffer { target: "ELEMENT_ARRAY_BUFFER"; + buffer: IGLBuffer; + /** * 顶点索引数据。 */ diff --git a/src/runs/runIndexBuffer.ts b/src/runs/runIndexBuffer.ts index 13495ac..b50b9e4 100644 --- a/src/runs/runIndexBuffer.ts +++ b/src/runs/runIndexBuffer.ts @@ -10,5 +10,8 @@ export function runIndexBuffer(gl: WebGLRenderingContext, index?: IGLIndexBuffer } } -export const defaultIndexBuffer: IGLIndexBuffer = { target: "ELEMENT_ARRAY_BUFFER", usage: "STATIC_DRAW", data: new Uint16Array([0, 1, 2, 2, 1, 3]) }; +export const defaultIndexBuffer: IGLIndexBuffer = { + target: "ELEMENT_ARRAY_BUFFER", usage: "STATIC_DRAW", + data: new Uint16Array([0, 1, 2, 2, 1, 3]) +}; Object.freeze(defaultIndexBuffer); -- Gitee From bd6ef8e8d55880afe27540db6e9b2389371fa4df Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Wed, 13 Nov 2024 16:31:58 +0800 Subject: [PATCH 32/47] getBufferType --- src/caches/getWebGLBuffer.ts | 71 ++++++++-------------------------- src/data/IGLBuffer.ts | 2 +- src/data/IGLIndexBuffer.ts | 15 +------ src/data/IGLVertexAttribute.ts | 7 +++- src/runs/runDrawCall.ts | 12 ++---- src/runs/runVertexAttribute.ts | 8 ++-- 6 files changed, 32 insertions(+), 83 deletions(-) diff --git a/src/caches/getWebGLBuffer.ts b/src/caches/getWebGLBuffer.ts index c7d8425..5003fba 100644 --- a/src/caches/getWebGLBuffer.ts +++ b/src/caches/getWebGLBuffer.ts @@ -10,65 +10,13 @@ declare global interface WebGLBuffer { - data: IAttributeBufferSourceTypes; - /** * 销毁。 */ destroy: () => void; } - - interface Float32Array - { - bufferType: "FLOAT"; - } - interface Uint32Array - { - bufferType: "UNSIGNED_INT"; - } - interface Int32Array - { - bufferType: "INT"; - } - interface Uint16Array - { - bufferType: "UNSIGNED_SHORT"; - } - interface Int16Array - { - bufferType: "SHORT"; - } - interface Uint8Array - { - bufferType: "UNSIGNED_BYTE"; - } - interface Int8Array - { - bufferType: "BYTE"; - } - interface Uint8ClampedArray - { - bufferType: "BYTE"; - } } -// eslint-disable-next-line no-extend-native -Float32Array.prototype.bufferType = "FLOAT"; -// eslint-disable-next-line no-extend-native -Uint32Array.prototype.bufferType = "UNSIGNED_INT"; -// eslint-disable-next-line no-extend-native -Int32Array.prototype.bufferType = "INT"; -// eslint-disable-next-line no-extend-native -Uint16Array.prototype.bufferType = "UNSIGNED_SHORT"; -// eslint-disable-next-line no-extend-native -Int16Array.prototype.bufferType = "SHORT"; -// eslint-disable-next-line no-extend-native -Uint8Array.prototype.bufferType = "UNSIGNED_BYTE"; -// eslint-disable-next-line no-extend-native -Int8Array.prototype.bufferType = "BYTE"; -// eslint-disable-next-line no-extend-native -Uint8ClampedArray.prototype.bufferType = "BYTE"; - export function getWebGLBuffer(gl: WebGLRenderingContext, buffer: IGLBuffer) { let webGLBuffer = gl._buffers.get(buffer); @@ -101,9 +49,6 @@ export function getWebGLBuffer(gl: WebGLRenderingContext, buffer: IGLBuffer) { console.log(`初始化缓冲区时必须提供数据或者尺寸!`); } - - // - webGLBuffer.data = data; }; const writeBuffer = () => @@ -159,3 +104,19 @@ export function deleteBuffer(gl: WebGLRenderingContext, buffer: IGLBuffer) gl.deleteBuffer(webGLBuffer); } } + +export function getBufferType(data?: IAttributeBufferSourceTypes) +{ + return bufferTypeMap[data?.constructor.name]; +} + +const bufferTypeMap = { + Float32Array: "FLOAT", + Uint32Array: "UNSIGNED_INT", + Int32Array: "INT", + Uint16Array: "UNSIGNED_SHORT", + Int16Array: "SHORT", + Uint8Array: "UNSIGNED_BYTE", + Int8Array: "BYTE", + Uint8ClampedArray: "BYTE", +}; diff --git a/src/data/IGLBuffer.ts b/src/data/IGLBuffer.ts index cdf302c..f7ff44b 100644 --- a/src/data/IGLBuffer.ts +++ b/src/data/IGLBuffer.ts @@ -10,7 +10,7 @@ export interface IGLBuffer /** * 缓冲区数据。 */ - data?: IAttributeBufferSourceTypes; + data?: BufferSource; /** * 创建指定尺寸的空缓冲区。 diff --git a/src/data/IGLIndexBuffer.ts b/src/data/IGLIndexBuffer.ts index 9062be8..632586b 100644 --- a/src/data/IGLIndexBuffer.ts +++ b/src/data/IGLIndexBuffer.ts @@ -1,4 +1,4 @@ -import { GLBufferUsage, IGLBuffer } from "./IGLBuffer"; +import { IGLBuffer } from "./IGLBuffer"; /** * WebGL元素缓冲,顶点索引缓冲。 @@ -8,25 +8,14 @@ import { GLBufferUsage, IGLBuffer } from "./IGLBuffer"; * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bindBuffer * */ -export interface IGLIndexBuffer +export interface IGLIndexBuffer extends IGLBuffer { target: "ELEMENT_ARRAY_BUFFER"; - buffer: IGLBuffer; - /** * 顶点索引数据。 */ data: IElementBufferSourceTypes; - - /** - * A GLenum specifying the intended usage pattern of the data store for optimization purposes. - * - * 为优化目的指定数据存储的预期使用模式的GLenum。 - * - * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bufferData - */ - usage?: GLBufferUsage; } /** diff --git a/src/data/IGLVertexAttribute.ts b/src/data/IGLVertexAttribute.ts index 224f082..d7dbbcf 100644 --- a/src/data/IGLVertexAttribute.ts +++ b/src/data/IGLVertexAttribute.ts @@ -1,4 +1,4 @@ -import { IGLBuffer } from "./IGLBuffer"; +import { IAttributeBufferSourceTypes, IGLBuffer } from "./IGLBuffer"; /** * 顶点属性数据。 @@ -54,6 +54,11 @@ export interface IGLVertexAttribute export interface IGLVertexBuffer extends IGLBuffer { target: "ARRAY_BUFFER"; + + /** + * 缓冲区数据。 + */ + data?: IAttributeBufferSourceTypes; } /** diff --git a/src/runs/runDrawCall.ts b/src/runs/runDrawCall.ts index e1fef68..8efbc10 100644 --- a/src/runs/runDrawCall.ts +++ b/src/runs/runDrawCall.ts @@ -1,4 +1,4 @@ -import { getWebGLBuffer } from "../caches/getWebGLBuffer"; +import { getBufferType } from "../caches/getWebGLBuffer"; import { ElementTypeMap } from "../const/WebGLUniformType"; import { IGLDrawArrays } from "../data/IGLDrawArrays"; import { IGLDrawElements } from "../data/IGLDrawElements"; @@ -37,10 +37,8 @@ export const defaultDrawIndexed: IGLDrawElements = Object.freeze({ firstIndex: 0 function _runDrawElements(gl: WebGLRenderingContext, drawMode: IGLDrawMode, index: IGLIndexBuffer, drawElements: IGLDrawElements) { - // - const webGLBuffer = getWebGLBuffer(gl, index); - const type = webGLBuffer.data.bufferType; - const dataLength = webGLBuffer.data.length; + const type = getBufferType(index.data); + const dataLength = index.data.length; // let { indexCount, instanceCount, firstIndex } = drawElements || {}; firstIndex = firstIndex || defaultDrawIndexed.firstIndex; @@ -106,9 +104,7 @@ function getAttributeVertexNum(gl: WebGLRenderingContext, vertices: IGLVertexAtt { if (vertices.hasOwnProperty(attr)) { - const buffer = getWebGLBuffer(gl, vertices[attr].buffer); - - return buffer.data.length; + return vertices[attr].buffer.data.length; } } diff --git a/src/runs/runVertexAttribute.ts b/src/runs/runVertexAttribute.ts index 2b17244..53ee6f0 100644 --- a/src/runs/runVertexAttribute.ts +++ b/src/runs/runVertexAttribute.ts @@ -1,4 +1,4 @@ -import { getWebGLBuffer } from "../caches/getWebGLBuffer"; +import { getBufferType, getWebGLBuffer } from "../caches/getWebGLBuffer"; import { IGLVertexAttribute } from "../data/IGLVertexAttribute"; export function runVertexAttribute(gl: WebGLRenderingContext, location: number, attribute: IGLVertexAttribute) @@ -22,16 +22,14 @@ export function runVertexAttribute(gl: WebGLRenderingContext, location: number, } // - const webGLBuffer = getWebGLBuffer(gl, attribute.buffer); - - // - const type = attribute.type || webGLBuffer.data?.bufferType || "FLOAT"; + const type = attribute.type || getBufferType(attribute.buffer.data) || "FLOAT"; // vertexSize = vertexSize || 0; offset = offset || 0; // + const webGLBuffer = getWebGLBuffer(gl, attribute.buffer); gl.bindBuffer(gl.ARRAY_BUFFER, webGLBuffer); // -- Gitee From b41008cffbd7ffda3524f354e1fa8cd064a735ca Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Thu, 14 Nov 2024 14:18:33 +0800 Subject: [PATCH 33/47] IGLBuffer.targets --- src/data/IGLBuffer.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/data/IGLBuffer.ts b/src/data/IGLBuffer.ts index f7ff44b..720cde9 100644 --- a/src/data/IGLBuffer.ts +++ b/src/data/IGLBuffer.ts @@ -7,6 +7,13 @@ export interface IGLBuffer { target: GLBufferTarget; + /** + * 被bindBuffer多次绑定到不同位置时,需要填入多个值。 + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/bindBuffer) + */ + targets?: GLBufferTarget[]; + /** * 缓冲区数据。 */ -- Gitee From 150aa4aca3d81620c109582da5f9c88b681405d1 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Thu, 14 Nov 2024 15:39:40 +0800 Subject: [PATCH 34/47] IGLImageSource.depth --- src/data/IGLTexture.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/data/IGLTexture.ts b/src/data/IGLTexture.ts index a536ded..015f8c9 100644 --- a/src/data/IGLTexture.ts +++ b/src/data/IGLTexture.ts @@ -130,6 +130,13 @@ export interface IGLImageSource */ height?: number; + /** + * 纹理深度,默认为 1。 + * + * WebGL2 支持。 + */ + depth?: number; + /** * WebGL2支持 */ -- Gitee From 87f8cefc49a506d125acb50427db5365fc15eef0 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Fri, 15 Nov 2024 12:29:39 +0800 Subject: [PATCH 35/47] drawArrays --- examples/src/WebGL2Samples/draw_primitive_restart.ts | 2 +- src/index.ts | 2 ++ src/runs/runDrawCall.ts | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/examples/src/WebGL2Samples/draw_primitive_restart.ts b/examples/src/WebGL2Samples/draw_primitive_restart.ts index 48217d9..6f68714 100644 --- a/examples/src/WebGL2Samples/draw_primitive_restart.ts +++ b/examples/src/WebGL2Samples/draw_primitive_restart.ts @@ -52,7 +52,7 @@ const vertexArray: IGLVertexArrayObject = { const renderObject: IGLRenderObject = { vertexArray, uniforms: {}, - drawArrays: { instanceCount: 2 }, + drawElements: { instanceCount: 2 }, pipeline: program, }; diff --git a/src/index.ts b/src/index.ts index a44780b..7f2c288 100644 --- a/src/index.ts +++ b/src/index.ts @@ -38,5 +38,7 @@ export * from "./shader/ShaderMacroUtils"; export * from "./WebGL"; +export * from "./runs/runDrawCall"; + export * as internal from "./internal"; diff --git a/src/runs/runDrawCall.ts b/src/runs/runDrawCall.ts index 8efbc10..61b0ab9 100644 --- a/src/runs/runDrawCall.ts +++ b/src/runs/runDrawCall.ts @@ -72,7 +72,7 @@ function _runDrawArrays(gl: WebGLRenderingContext, drawMode: IGLDrawMode, vertic let { firstVertex, vertexCount, instanceCount } = drawArrays || {}; // firstVertex = firstVertex || defaultDrawVertex.firstVertex; - vertexCount = vertexCount || getAttributeVertexNum(gl, vertices) || defaultDrawVertex.vertexCount; + vertexCount = vertexCount || getAttributeVertexNum(vertices) || defaultDrawVertex.vertexCount; instanceCount = instanceCount || defaultDrawVertex.instanceCount; if (instanceCount > 1) @@ -96,7 +96,7 @@ function _runDrawArrays(gl: WebGLRenderingContext, drawMode: IGLDrawMode, vertic /** * 获取属性顶点属性。 */ -function getAttributeVertexNum(gl: WebGLRenderingContext, vertices: IGLVertexAttributes) +export function getAttributeVertexNum(vertices: IGLVertexAttributes) { const vertexNum = ((vertices) => { -- Gitee From dac4e2bdb4a3fbb816107249e7f82d5b8aa1608f Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Mon, 18 Nov 2024 19:28:19 +0800 Subject: [PATCH 36/47] =?UTF-8?q?IGLRenderbuffer.samples=20=E8=BD=AC?= =?UTF-8?q?=E7=A7=BB=E8=87=B3=20IGLRenderPassDescriptor.multisample?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/src/WebGL2Samples/glsl_centroid.ts | 8 ++++---- src/caches/getFramebuffer.ts | 4 +++- src/caches/getRenderbuffer.ts | 6 +++--- src/data/IGLPassDescriptor.ts | 9 +++++++++ src/data/IGLRenderbuffer.ts | 9 --------- 5 files changed, 19 insertions(+), 17 deletions(-) diff --git a/examples/src/WebGL2Samples/glsl_centroid.ts b/examples/src/WebGL2Samples/glsl_centroid.ts index 0a14a0b..73482ff 100644 --- a/examples/src/WebGL2Samples/glsl_centroid.ts +++ b/examples/src/WebGL2Samples/glsl_centroid.ts @@ -125,9 +125,9 @@ for (let i = 0; i < VIEWPORTS.MAX; ++i) // -- Init Frame Buffers // non-centroid -const colorRenderbuffer: IGLRenderbuffer = { samples: 4, internalformat: "RGBA8", width: FRAMEBUFFER_SIZE.x, height: FRAMEBUFFER_SIZE.y }; +const colorRenderbuffer: IGLRenderbuffer = { internalformat: "RGBA8", width: FRAMEBUFFER_SIZE.x, height: FRAMEBUFFER_SIZE.y }; // centroid -const colorRenderbufferCentroid: IGLRenderbuffer = { samples: 4, internalformat: "RGBA8", width: FRAMEBUFFER_SIZE.x, height: FRAMEBUFFER_SIZE.y }; +const colorRenderbufferCentroid: IGLRenderbuffer = { internalformat: "RGBA8", width: FRAMEBUFFER_SIZE.x, height: FRAMEBUFFER_SIZE.y }; const FRAMEBUFFER = { RENDERBUFFER: 0, @@ -137,8 +137,8 @@ const FRAMEBUFFER = { }; const framebuffers: IGLFramebuffer[] = [ - { colorAttachments: [{ view: colorRenderbuffer, clearValue: [0, 0, 0, 1], loadOp: "clear" }] }, - { colorAttachments: [{ view: colorRenderbufferCentroid, clearValue: [0, 0, 0, 1], loadOp: "clear" }] }, + { colorAttachments: [{ view: colorRenderbuffer, clearValue: [0, 0, 0, 1], loadOp: "clear" }], multisample: 4 }, + { colorAttachments: [{ view: colorRenderbufferCentroid, clearValue: [0, 0, 0, 1], loadOp: "clear" }], multisample: 4 }, { colorAttachments: [{ view: { texture: textures[0], level: 0 }, clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, { colorAttachments: [{ view: { texture: textures[1], level: 0 }, clearValue: [0.0, 0.0, 0.0, 1.0], loadOp: "clear" }] }, ]; diff --git a/src/caches/getFramebuffer.ts b/src/caches/getFramebuffer.ts index 5918f9e..c4df381 100644 --- a/src/caches/getFramebuffer.ts +++ b/src/caches/getFramebuffer.ts @@ -25,6 +25,8 @@ export function getFramebuffer(gl: WebGLRenderingContext, passDescriptor: IGLRen let webGLFramebuffer = gl._framebuffers.get(passDescriptor); if (webGLFramebuffer) return webGLFramebuffer; + const multisample = passDescriptor.multisample; + webGLFramebuffer = gl.createFramebuffer(); gl.bindFramebuffer(gl.FRAMEBUFFER, webGLFramebuffer); gl._framebuffers.set(passDescriptor, webGLFramebuffer); @@ -61,7 +63,7 @@ export function getFramebuffer(gl: WebGLRenderingContext, passDescriptor: IGLRen } else { - const renderbuffer = getRenderbuffer(gl, view as IGLRenderbuffer); + const renderbuffer = getRenderbuffer(gl, view as IGLRenderbuffer, multisample); gl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachment, gl.RENDERBUFFER, renderbuffer); } }); diff --git a/src/caches/getRenderbuffer.ts b/src/caches/getRenderbuffer.ts index 79bf775..39afdbb 100644 --- a/src/caches/getRenderbuffer.ts +++ b/src/caches/getRenderbuffer.ts @@ -8,7 +8,7 @@ declare global } } -export function getRenderbuffer(gl: WebGLRenderingContext, renderbuffer: IGLRenderbuffer) +export function getRenderbuffer(gl: WebGLRenderingContext, renderbuffer: IGLRenderbuffer, multisample?: 4) { let webGLRenderbuffer = gl._renderbuffers.get(renderbuffer); if (webGLRenderbuffer) return webGLRenderbuffer; @@ -16,10 +16,10 @@ export function getRenderbuffer(gl: WebGLRenderingContext, renderbuffer: IGLRend webGLRenderbuffer = gl.createRenderbuffer(); gl._renderbuffers.set(renderbuffer, webGLRenderbuffer); - const { samples, internalformat, width, height } = renderbuffer; + const { internalformat, width, height } = renderbuffer; gl.bindRenderbuffer(gl.RENDERBUFFER, webGLRenderbuffer); - if (samples && gl instanceof WebGL2RenderingContext) + if (multisample === 4 && gl instanceof WebGL2RenderingContext) { gl.renderbufferStorageMultisample(gl.RENDERBUFFER, 4, gl[internalformat], width, height); } diff --git a/src/data/IGLPassDescriptor.ts b/src/data/IGLPassDescriptor.ts index 6a17ce8..8abc5ed 100644 --- a/src/data/IGLPassDescriptor.ts +++ b/src/data/IGLPassDescriptor.ts @@ -15,4 +15,13 @@ export interface IGLRenderPassDescriptor * 深度模板附件。 */ depthStencilAttachment?: IGLRenderPassDepthStencilAttachment; + + /** + * 采用次数。 + * + * 注意: WebGL2 支持。 + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/renderbufferStorageMultisample + */ + multisample?: 4; } \ No newline at end of file diff --git a/src/data/IGLRenderbuffer.ts b/src/data/IGLRenderbuffer.ts index 913c71d..798c790 100644 --- a/src/data/IGLRenderbuffer.ts +++ b/src/data/IGLRenderbuffer.ts @@ -6,15 +6,6 @@ */ export interface IGLRenderbuffer { - /** - * 采用次数。 - * - * 注意: WebGL2 支持。 - * - * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/renderbufferStorageMultisample - */ - samples?: number; - /** * 渲染缓冲区内部格式。 */ -- Gitee From aabf959b0818da222f7322f4cb342370b3164b69 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Tue, 19 Nov 2024 11:10:29 +0800 Subject: [PATCH 37/47] defaultBlendState --- src/index.ts | 4 ++++ src/runs/runColorTargetStates.ts | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 7f2c288..4036e05 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,8 @@ +export * from "./data/IGLBlendState"; export * from "./data/IGLBlitFramebuffer"; export * from "./data/IGLBuffer"; export * from "./data/IGLCapabilities"; +export * from "./data/IGLColorTargetState"; export * from "./data/IGLCopyBuffer"; export * from "./data/IGLDepthStencilState"; export * from "./data/IGLDrawArrays"; @@ -30,6 +32,8 @@ export * from "./data/IGLVertexAttribute"; export * from "./data/IGLVertexAttributes"; export * from "./data/IGLViewport"; +export * from "./runs/runColorTargetStates"; + export * from "./gl/WebGLEnums"; export * from "./shader/Macro"; diff --git a/src/runs/runColorTargetStates.ts b/src/runs/runColorTargetStates.ts index 569a9f4..0aaa0d2 100644 --- a/src/runs/runColorTargetStates.ts +++ b/src/runs/runColorTargetStates.ts @@ -28,6 +28,6 @@ export function runColorTargetStates(gl: WebGLRenderingContext, targets?: IGLCol const defaultWriteMask: IGLWriteMask = Object.freeze([true, true, true, true]) as any; const defaultBlendComponent: IGLBlendComponent = Object.freeze({ operation: "FUNC_ADD", srcFactor: "SRC_ALPHA", dstFactor: "ONE_MINUS_SRC_ALPHA" }); -const defaultBlendState: IGLBlendState = Object.freeze({ color: defaultBlendComponent, alpha: defaultBlendComponent }); +export const defaultBlendState: IGLBlendState = Object.freeze({ color: defaultBlendComponent, alpha: defaultBlendComponent }); const defaultColorTargetState: IGLColorTargetState = Object.freeze({ writeMask: defaultWriteMask, blend: defaultBlendState }); export const defaultColorTargetStates: IGLColorTargetState[] = Object.freeze([defaultColorTargetState]) as any; \ No newline at end of file -- Gitee From 5d9c319bca7b215fde12c1f9d47836f36b099800 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Tue, 19 Nov 2024 15:07:40 +0800 Subject: [PATCH 38/47] getIGLTextureSourceSize --- src/caches/getIGLTextureSourceSize.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/caches/getIGLTextureSourceSize.ts b/src/caches/getIGLTextureSourceSize.ts index c472cd3..72583a6 100644 --- a/src/caches/getIGLTextureSourceSize.ts +++ b/src/caches/getIGLTextureSourceSize.ts @@ -21,5 +21,10 @@ export function getIGLTextureSourceSize(glTextureSource: IGLTextureSource) size[1] = glBufferSource.height; } + if (glTextureSource.depth) + { + size[2] = glTextureSource.depth; + } + return size; } -- Gitee From 131fbf92da360d23b6144c5a2c7df0366b412934 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Tue, 19 Nov 2024 16:06:39 +0800 Subject: [PATCH 39/47] defaultDepthStencilAttachment --- src/index.ts | 1 + src/runs/runPassDescriptor.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 4036e05..46b6480 100644 --- a/src/index.ts +++ b/src/index.ts @@ -33,6 +33,7 @@ export * from "./data/IGLVertexAttributes"; export * from "./data/IGLViewport"; export * from "./runs/runColorTargetStates"; +export * from "./runs/runPassDescriptor"; export * from "./gl/WebGLEnums"; diff --git a/src/runs/runPassDescriptor.ts b/src/runs/runPassDescriptor.ts index 52d3b56..1d3c60c 100644 --- a/src/runs/runPassDescriptor.ts +++ b/src/runs/runPassDescriptor.ts @@ -4,7 +4,7 @@ import { IGLRenderPassDescriptor } from "../data/IGLPassDescriptor"; import { runFramebuffer } from "./runFramebuffer"; const defaultRenderPassColorAttachment: IGLRenderPassColorAttachment = { clearValue: [0, 0, 0, 0], loadOp: "clear" }; -const defaultDepthStencilAttachment: IGLRenderPassDepthStencilAttachment = { depthClearValue: 1, depthLoadOp: "load", stencilClearValue: 0, stencilLoadOp: "load" }; +export const defaultDepthStencilAttachment: IGLRenderPassDepthStencilAttachment = { depthClearValue: 1, depthLoadOp: "load", stencilClearValue: 0, stencilLoadOp: "load" }; export function runPassDescriptor(gl: WebGLRenderingContext, passDescriptor: IGLRenderPassDescriptor) { -- Gitee From d8864536976854ec0c95e5489f86ed0ee2c2bb20 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Tue, 19 Nov 2024 16:59:01 +0800 Subject: [PATCH 40/47] IGLWriteTexture --- src/data/IGLTexture.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/data/IGLTexture.ts b/src/data/IGLTexture.ts index 015f8c9..ed06c31 100644 --- a/src/data/IGLTexture.ts +++ b/src/data/IGLTexture.ts @@ -54,7 +54,7 @@ export interface IGLTexture * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texSubImage2D */ - writeTextures?: IWriteTexture[]; + writeTextures?: IGLWriteTexture[]; /** * 是否生成mipmap @@ -226,7 +226,7 @@ export type TextureCubeMapTarget = * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texSubImage2D */ -export interface IWriteTexture +export interface IGLWriteTexture { /** * 当上传CubeMap纹理数据时指定位置。 -- Gitee From 68d2e5b40f0e5d9f613f3ed09638ae07e827bc8b Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Tue, 19 Nov 2024 18:27:17 +0800 Subject: [PATCH 41/47] GLBlendFactor --- src/data/IGLBlendState.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/IGLBlendState.ts b/src/data/IGLBlendState.ts index aa20a3a..928f35b 100644 --- a/src/data/IGLBlendState.ts +++ b/src/data/IGLBlendState.ts @@ -68,7 +68,7 @@ export interface IGLBlendComponent * * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/blendFunc */ -export type GLBlendFactor = "ZERO" | "ONE" | "SRC_COLOR" | "ONE_MINUS_SRC_COLOR" | "DST_COLOR" | "ONE_MINUS_DST_COLOR" | "SRC_ALPHA" | "ONE_MINUS_SRC_ALPHA" | "DST_ALPHA" | "ONE_MINUS_DST_ALPHA" | "SRC_ALPHA_SATURATE"; +export type GLBlendFactor = "ZERO" | "ONE" | "SRC_COLOR" | "ONE_MINUS_SRC_COLOR" | "DST_COLOR" | "ONE_MINUS_DST_COLOR" | "SRC_ALPHA" | "ONE_MINUS_SRC_ALPHA" | "DST_ALPHA" | "ONE_MINUS_DST_ALPHA" | "SRC_ALPHA_SATURATE" | "CONSTANT_COLOR" | "ONE_MINUS_CONSTANT_COLOR" | "CONSTANT_ALPHA" | "ONE_MINUS_CONSTANT_ALPHA"; /** * 混合方法 -- Gitee From 7ae2052d5dd8b8f28e30d70b14c4733148fd424b Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Tue, 19 Nov 2024 19:14:59 +0800 Subject: [PATCH 42/47] =?UTF-8?q?=E6=95=B4=E7=90=86=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/index.ts b/src/index.ts index 46b6480..5db721e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,6 +4,7 @@ export * from "./data/IGLBuffer"; export * from "./data/IGLCapabilities"; export * from "./data/IGLColorTargetState"; export * from "./data/IGLCopyBuffer"; +export * from "./data/IGLCullFace"; export * from "./data/IGLDepthStencilState"; export * from "./data/IGLDrawArrays"; export * from "./data/IGLDrawElements"; -- Gitee From 7c348c57a87bf13a8b257001df4fc60d27cc31a5 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Tue, 19 Nov 2024 22:32:56 +0800 Subject: [PATCH 43/47] IGLScissor.enable --- src/data/IGLScissor.ts | 5 +++++ src/index.ts | 1 + 2 files changed, 6 insertions(+) diff --git a/src/data/IGLScissor.ts b/src/data/IGLScissor.ts index 00d6d81..0f0b3f3 100644 --- a/src/data/IGLScissor.ts +++ b/src/data/IGLScissor.ts @@ -7,6 +7,11 @@ */ export interface IGLScissor { + /** + * 是否开启 + */ + enable?: boolean; + /** * 剪刀盒X轴最小值(像素)。 */ diff --git a/src/index.ts b/src/index.ts index 5db721e..4257138 100644 --- a/src/index.ts +++ b/src/index.ts @@ -23,6 +23,7 @@ export * from "./data/IGLRenderPassDepthStencilAttachment"; export * from "./data/IGLRenderPipeline"; export * from "./data/IGLSampler"; export * from "./data/IGLSamplerTexture"; +export * from "./data/IGLScissor"; export * from "./data/IGLTexture"; export * from "./data/IGLTexturePixelStore"; export * from "./data/IGLTextureStorage"; -- Gitee From b1a05ec020cf882bfd522b6ccf31390b85e60909 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Wed, 20 Nov 2024 16:45:29 +0800 Subject: [PATCH 44/47] runReadPixels --- src/runs/runReadPixels.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/runs/runReadPixels.ts b/src/runs/runReadPixels.ts index 56099ef..213fab6 100644 --- a/src/runs/runReadPixels.ts +++ b/src/runs/runReadPixels.ts @@ -7,7 +7,7 @@ export function runReadPixels(gl: WebGLRenderingContext, readPixels: IGLReadPixe { const { frameBuffer, attachmentPoint, x, y, width, height, format, type, dstData, dstOffset } = readPixels; - const webGLFramebuffer = getFramebuffer(gl, readPixels.frameBuffer); + const webGLFramebuffer = getFramebuffer(gl, frameBuffer); gl.bindFramebuffer(gl.FRAMEBUFFER, webGLFramebuffer); gl.readBuffer(gl[attachmentPoint]); -- Gitee From d90d580aa5a791e5f911ca35c37068448c14b4a0 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Thu, 21 Nov 2024 10:58:21 +0800 Subject: [PATCH 45/47] defaultRenderPassColorAttachment --- src/runs/runPassDescriptor.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/runs/runPassDescriptor.ts b/src/runs/runPassDescriptor.ts index 1d3c60c..1f558bb 100644 --- a/src/runs/runPassDescriptor.ts +++ b/src/runs/runPassDescriptor.ts @@ -3,7 +3,7 @@ import { IGLRenderPassDepthStencilAttachment } from "../data/IGLRenderPassDepthS import { IGLRenderPassDescriptor } from "../data/IGLPassDescriptor"; import { runFramebuffer } from "./runFramebuffer"; -const defaultRenderPassColorAttachment: IGLRenderPassColorAttachment = { clearValue: [0, 0, 0, 0], loadOp: "clear" }; +export const defaultRenderPassColorAttachment: IGLRenderPassColorAttachment = { clearValue: [0, 0, 0, 0], loadOp: "clear" }; export const defaultDepthStencilAttachment: IGLRenderPassDepthStencilAttachment = { depthClearValue: 1, depthLoadOp: "load", stencilClearValue: 0, stencilLoadOp: "load" }; export function runPassDescriptor(gl: WebGLRenderingContext, passDescriptor: IGLRenderPassDescriptor) -- Gitee From 0fe8a47a50bb93411447e11e6476c955119c3379 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Tue, 3 Dec 2024 14:50:10 +0800 Subject: [PATCH 46/47] @feng3d/webgl-renderer -> @feng3d/webgl --- examples/package.json | 2 +- examples/src/WebGL2Samples/buffer_copy.ts | 2 +- examples/src/WebGL2Samples/buffer_uniform.ts | 2 +- examples/src/WebGL2Samples/draw_image_space.ts | 2 +- examples/src/WebGL2Samples/draw_instanced.ts | 2 +- examples/src/WebGL2Samples/draw_instanced_ubo.ts | 2 +- examples/src/WebGL2Samples/draw_primitive_restart.ts | 2 +- examples/src/WebGL2Samples/draw_range_arrays.ts | 2 +- examples/src/WebGL2Samples/fbo_blit.ts | 2 +- examples/src/WebGL2Samples/fbo_multisample.ts | 2 +- examples/src/WebGL2Samples/fbo_new_blend_equation.ts | 2 +- examples/src/WebGL2Samples/fbo_read_pixels.ts | 2 +- examples/src/WebGL2Samples/fbo_rtt_depth_texture.ts | 2 +- examples/src/WebGL2Samples/fbo_rtt_draw_buffers.ts | 2 +- examples/src/WebGL2Samples/fbo_rtt_texture_array.ts | 2 +- examples/src/WebGL2Samples/geo_vertex_format.ts | 2 +- examples/src/WebGL2Samples/glsl_centroid.ts | 2 +- examples/src/WebGL2Samples/glsl_flat_smooth_interpolators.ts | 2 +- examples/src/WebGL2Samples/glsl_non_square_matrix.ts | 2 +- examples/src/WebGL2Samples/query_occlusion.ts | 2 +- examples/src/WebGL2Samples/sampler_filter.ts | 2 +- examples/src/WebGL2Samples/sampler_object.ts | 2 +- examples/src/WebGL2Samples/sampler_wrap.ts | 2 +- examples/src/WebGL2Samples/texture_2d_array.ts | 2 +- examples/src/WebGL2Samples/texture_3d.ts | 2 +- examples/src/WebGL2Samples/texture_derivative.ts | 2 +- examples/src/WebGL2Samples/texture_fetch.ts | 2 +- examples/src/WebGL2Samples/texture_format.ts | 2 +- examples/src/WebGL2Samples/texture_grad.ts | 2 +- examples/src/WebGL2Samples/texture_immutable.ts | 2 +- examples/src/WebGL2Samples/texture_integer.ts | 2 +- examples/src/WebGL2Samples/texture_lod.ts | 2 +- examples/src/WebGL2Samples/texture_offset.ts | 2 +- examples/src/WebGL2Samples/texture_pixel_store.ts | 2 +- examples/src/WebGL2Samples/texture_srgb.ts | 2 +- examples/src/WebGL2Samples/texture_vertex.ts | 2 +- examples/src/WebGL2Samples/transform_feedback_instanced.ts | 2 +- examples/src/WebGL2Samples/transform_feedback_interleaved.ts | 2 +- examples/src/WebGL2Samples/transform_feedback_separated.ts | 2 +- examples/src/WebGL2Samples/transform_feedback_separated_2.ts | 2 +- examples/src/regl-examples/basic.ts | 2 +- examples/src/regl-examples/batch.ts | 2 +- examples/src/regl-examples/blur.ts | 2 +- examples/src/regl-examples/bunny.ts | 2 +- examples/src/regl-examples/camera.ts | 2 +- examples/src/regl-examples/cloth.ts | 2 +- examples/src/regl-examples/cube.ts | 2 +- examples/src/regl-examples/util/camera.ts | 2 +- examples/src/webgl-examples/sample1.ts | 2 +- examples/src/webgl-examples/sample2.ts | 2 +- examples/src/webgl-examples/sample3.ts | 2 +- examples/src/webgl-examples/sample4.ts | 2 +- examples/src/webgl-examples/sample5.ts | 2 +- examples/src/webgl-examples/sample6.ts | 2 +- examples/src/webgl-examples/sample7.ts | 2 +- examples/src/webgl-examples/sample8.ts | 2 +- package.json | 2 +- src/caches/getIGLTextureSize.ts | 2 +- 58 files changed, 58 insertions(+), 58 deletions(-) diff --git a/examples/package.json b/examples/package.json index 5c6077a..97ac916 100644 --- a/examples/package.json +++ b/examples/package.json @@ -13,6 +13,6 @@ }, "dependencies": { "gl-matrix": "^3.4.3", - "@feng3d/webgl-renderer": "0.0.2" + "@feng3d/webgl": "0.0.2" } } \ No newline at end of file diff --git a/examples/src/WebGL2Samples/buffer_copy.ts b/examples/src/WebGL2Samples/buffer_copy.ts index b6d551b..ae77b53 100644 --- a/examples/src/WebGL2Samples/buffer_copy.ts +++ b/examples/src/WebGL2Samples/buffer_copy.ts @@ -1,4 +1,4 @@ -import { IGLCopyBuffer, IGLRenderPass, IGLRenderPipeline, IGLRenderingContext, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLCopyBuffer, IGLRenderPass, IGLRenderPipeline, IGLRenderingContext, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource } from "./utility"; (function () diff --git a/examples/src/WebGL2Samples/buffer_uniform.ts b/examples/src/WebGL2Samples/buffer_uniform.ts index 4552ec2..2dcfe8a 100644 --- a/examples/src/WebGL2Samples/buffer_uniform.ts +++ b/examples/src/WebGL2Samples/buffer_uniform.ts @@ -1,4 +1,4 @@ -import { IGLIndexBuffer, IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLUniformBuffer, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLIndexBuffer, IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLUniformBuffer, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource } from "./utility"; (function () diff --git a/examples/src/WebGL2Samples/draw_image_space.ts b/examples/src/WebGL2Samples/draw_image_space.ts index bf18846..f7b9d66 100644 --- a/examples/src/WebGL2Samples/draw_image_space.ts +++ b/examples/src/WebGL2Samples/draw_image_space.ts @@ -1,4 +1,4 @@ -import { IGLRenderingContext, IGLRenderObject, IGLRenderPipeline, IGLSampler, IGLTexture, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderingContext, IGLRenderObject, IGLRenderPipeline, IGLSampler, IGLTexture, WebGL } from "@feng3d/webgl"; import { getShaderSource } from "./utility"; const canvas = document.createElement("canvas"); diff --git a/examples/src/WebGL2Samples/draw_instanced.ts b/examples/src/WebGL2Samples/draw_instanced.ts index c59fd4a..6f10f68 100644 --- a/examples/src/WebGL2Samples/draw_instanced.ts +++ b/examples/src/WebGL2Samples/draw_instanced.ts @@ -1,4 +1,4 @@ -import { IGLRenderingContext, IGLRenderObject, IGLRenderPipeline, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderingContext, IGLRenderObject, IGLRenderPipeline, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource } from "./utility"; const canvas = document.createElement("canvas"); diff --git a/examples/src/WebGL2Samples/draw_instanced_ubo.ts b/examples/src/WebGL2Samples/draw_instanced_ubo.ts index 3657518..08fe2e6 100644 --- a/examples/src/WebGL2Samples/draw_instanced_ubo.ts +++ b/examples/src/WebGL2Samples/draw_instanced_ubo.ts @@ -1,4 +1,4 @@ -import { IGLProgram, IGLRenderPass, IGLRenderingContext, IGLUniformBuffer, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderPass, IGLRenderingContext, IGLUniformBuffer, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource } from "./utility"; const canvas = document.createElement("canvas"); diff --git a/examples/src/WebGL2Samples/draw_primitive_restart.ts b/examples/src/WebGL2Samples/draw_primitive_restart.ts index 6f68714..7e1da9b 100644 --- a/examples/src/WebGL2Samples/draw_primitive_restart.ts +++ b/examples/src/WebGL2Samples/draw_primitive_restart.ts @@ -1,4 +1,4 @@ -import { IGLIndexBuffer, IGLRenderingContext, IGLRenderObject, IGLRenderPipeline, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLIndexBuffer, IGLRenderingContext, IGLRenderObject, IGLRenderPipeline, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource } from "./utility"; const canvas = document.createElement("canvas"); diff --git a/examples/src/WebGL2Samples/draw_range_arrays.ts b/examples/src/WebGL2Samples/draw_range_arrays.ts index a576eb7..75fa1c6 100644 --- a/examples/src/WebGL2Samples/draw_range_arrays.ts +++ b/examples/src/WebGL2Samples/draw_range_arrays.ts @@ -1,4 +1,4 @@ -import { IGLRenderingContext, IGLRenderObject, IGLRenderPass, IGLRenderPipeline, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderingContext, IGLRenderObject, IGLRenderPass, IGLRenderPipeline, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource } from "./utility"; const canvas = document.createElement("canvas"); diff --git a/examples/src/WebGL2Samples/fbo_blit.ts b/examples/src/WebGL2Samples/fbo_blit.ts index 693a28e..3b0a553 100644 --- a/examples/src/WebGL2Samples/fbo_blit.ts +++ b/examples/src/WebGL2Samples/fbo_blit.ts @@ -1,4 +1,4 @@ -import { IGLBlitFramebuffer, IGLBlitFramebufferItem, IGLRenderObject, IGLRenderPass, IGLRenderPassDescriptor, IGLRenderPipeline, IGLRenderbuffer, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexAttributes, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLBlitFramebuffer, IGLBlitFramebufferItem, IGLRenderObject, IGLRenderPass, IGLRenderPassDescriptor, IGLRenderPipeline, IGLRenderbuffer, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexAttributes, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource, loadImage } from "./utility"; const canvas = document.createElement("canvas"); diff --git a/examples/src/WebGL2Samples/fbo_multisample.ts b/examples/src/WebGL2Samples/fbo_multisample.ts index 87478ae..8958be0 100644 --- a/examples/src/WebGL2Samples/fbo_multisample.ts +++ b/examples/src/WebGL2Samples/fbo_multisample.ts @@ -1,4 +1,4 @@ -import { IGLBlitFramebuffer, IGLRenderPass, IGLRenderPassDescriptor, IGLRenderPipeline, IGLRenderbuffer, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLBlitFramebuffer, IGLRenderPass, IGLRenderPassDescriptor, IGLRenderPipeline, IGLRenderbuffer, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { mat4, vec3 } from "gl-matrix"; import { getShaderSource } from "./utility"; diff --git a/examples/src/WebGL2Samples/fbo_new_blend_equation.ts b/examples/src/WebGL2Samples/fbo_new_blend_equation.ts index 689efb4..4ae8383 100644 --- a/examples/src/WebGL2Samples/fbo_new_blend_equation.ts +++ b/examples/src/WebGL2Samples/fbo_new_blend_equation.ts @@ -1,4 +1,4 @@ -import { IGLRenderObject, IGLRenderPass, IGLRenderPipeline, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, IGLViewport, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderObject, IGLRenderPass, IGLRenderPipeline, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, IGLViewport, WebGL } from "@feng3d/webgl"; import { getShaderSource, loadImage } from "./utility"; diff --git a/examples/src/WebGL2Samples/fbo_read_pixels.ts b/examples/src/WebGL2Samples/fbo_read_pixels.ts index 9c84615..eb058da 100644 --- a/examples/src/WebGL2Samples/fbo_read_pixels.ts +++ b/examples/src/WebGL2Samples/fbo_read_pixels.ts @@ -1,4 +1,4 @@ -import { IGLFramebuffer, IGLRenderObject, IGLRenderPass, IGLRenderPipeline, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLFramebuffer, IGLRenderObject, IGLRenderPass, IGLRenderPipeline, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource } from "./utility"; const canvas = document.createElement("canvas"); diff --git a/examples/src/WebGL2Samples/fbo_rtt_depth_texture.ts b/examples/src/WebGL2Samples/fbo_rtt_depth_texture.ts index 129eb5f..2edc8da 100644 --- a/examples/src/WebGL2Samples/fbo_rtt_depth_texture.ts +++ b/examples/src/WebGL2Samples/fbo_rtt_depth_texture.ts @@ -1,4 +1,4 @@ -import { IGLFramebuffer, IGLRenderPass, IGLRenderPipeline, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLFramebuffer, IGLRenderPass, IGLRenderPipeline, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource } from "./utility"; const canvas = document.createElement("canvas"); diff --git a/examples/src/WebGL2Samples/fbo_rtt_draw_buffers.ts b/examples/src/WebGL2Samples/fbo_rtt_draw_buffers.ts index 4b64ee2..146e5b8 100644 --- a/examples/src/WebGL2Samples/fbo_rtt_draw_buffers.ts +++ b/examples/src/WebGL2Samples/fbo_rtt_draw_buffers.ts @@ -1,4 +1,4 @@ -import { IGLFramebuffer, IGLRenderPass, IGLRenderPipeline, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLFramebuffer, IGLRenderPass, IGLRenderPipeline, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource } from "./utility"; const canvas = document.createElement("canvas"); diff --git a/examples/src/WebGL2Samples/fbo_rtt_texture_array.ts b/examples/src/WebGL2Samples/fbo_rtt_texture_array.ts index 7fc9d82..03583ce 100644 --- a/examples/src/WebGL2Samples/fbo_rtt_texture_array.ts +++ b/examples/src/WebGL2Samples/fbo_rtt_texture_array.ts @@ -1,4 +1,4 @@ -import { IGLFramebuffer, IGLRenderObject, IGLRenderPass, IGLRenderPipeline, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLFramebuffer, IGLRenderObject, IGLRenderPass, IGLRenderPipeline, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource } from "./utility"; const canvas = document.createElement("canvas"); diff --git a/examples/src/WebGL2Samples/geo_vertex_format.ts b/examples/src/WebGL2Samples/geo_vertex_format.ts index 971c855..a70aebb 100644 --- a/examples/src/WebGL2Samples/geo_vertex_format.ts +++ b/examples/src/WebGL2Samples/geo_vertex_format.ts @@ -1,4 +1,4 @@ -import { IGLIndexBuffer, IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLIndexBuffer, IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { mat4, vec3 } from "gl-matrix"; import { HalfFloat } from "./third-party/HalfFloatUtility"; import { getShaderSource, loadImage } from "./utility"; diff --git a/examples/src/WebGL2Samples/glsl_centroid.ts b/examples/src/WebGL2Samples/glsl_centroid.ts index 73482ff..3d109fa 100644 --- a/examples/src/WebGL2Samples/glsl_centroid.ts +++ b/examples/src/WebGL2Samples/glsl_centroid.ts @@ -1,4 +1,4 @@ -import { IGLBlitFramebuffer, IGLFramebuffer, IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderbuffer, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLBlitFramebuffer, IGLFramebuffer, IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderbuffer, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { mat4, vec3 } from "gl-matrix"; import { getShaderSource } from "./utility"; diff --git a/examples/src/WebGL2Samples/glsl_flat_smooth_interpolators.ts b/examples/src/WebGL2Samples/glsl_flat_smooth_interpolators.ts index 741b356..e93414f 100644 --- a/examples/src/WebGL2Samples/glsl_flat_smooth_interpolators.ts +++ b/examples/src/WebGL2Samples/glsl_flat_smooth_interpolators.ts @@ -1,4 +1,4 @@ -import { IGLIndexBuffer, IGLProgram, IGLRenderPass, IGLRenderingContext, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLIndexBuffer, IGLProgram, IGLRenderPass, IGLRenderingContext, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { mat4, vec3 } from "gl-matrix"; import { GlTFLoader, Primitive } from "./third-party/gltf-loader"; import { getShaderSource } from "./utility"; diff --git a/examples/src/WebGL2Samples/glsl_non_square_matrix.ts b/examples/src/WebGL2Samples/glsl_non_square_matrix.ts index a8a9905..1ba15b9 100644 --- a/examples/src/WebGL2Samples/glsl_non_square_matrix.ts +++ b/examples/src/WebGL2Samples/glsl_non_square_matrix.ts @@ -1,4 +1,4 @@ -import { IGLProgram, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource, loadImage } from "./utility"; const canvas = document.createElement("canvas"); diff --git a/examples/src/WebGL2Samples/query_occlusion.ts b/examples/src/WebGL2Samples/query_occlusion.ts index 5261153..0ffc26b 100644 --- a/examples/src/WebGL2Samples/query_occlusion.ts +++ b/examples/src/WebGL2Samples/query_occlusion.ts @@ -1,4 +1,4 @@ -import { IGLProgram, IGLQuery, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLQuery, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource } from "./utility"; // -- Init Canvas diff --git a/examples/src/WebGL2Samples/sampler_filter.ts b/examples/src/WebGL2Samples/sampler_filter.ts index 704c291..719df28 100644 --- a/examples/src/WebGL2Samples/sampler_filter.ts +++ b/examples/src/WebGL2Samples/sampler_filter.ts @@ -1,4 +1,4 @@ -import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource, loadImage } from "./utility"; const canvas = document.createElement("canvas"); diff --git a/examples/src/WebGL2Samples/sampler_object.ts b/examples/src/WebGL2Samples/sampler_object.ts index 3fef13c..f8a8019 100644 --- a/examples/src/WebGL2Samples/sampler_object.ts +++ b/examples/src/WebGL2Samples/sampler_object.ts @@ -1,4 +1,4 @@ -import { IGLProgram, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource, loadImage } from "./utility"; const canvas = document.createElement("canvas"); diff --git a/examples/src/WebGL2Samples/sampler_wrap.ts b/examples/src/WebGL2Samples/sampler_wrap.ts index af2a563..c0b380c 100644 --- a/examples/src/WebGL2Samples/sampler_wrap.ts +++ b/examples/src/WebGL2Samples/sampler_wrap.ts @@ -1,4 +1,4 @@ -import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource, loadImage } from "./utility"; const canvas = document.createElement("canvas"); diff --git a/examples/src/WebGL2Samples/texture_2d_array.ts b/examples/src/WebGL2Samples/texture_2d_array.ts index 33f47dc..1f5b317 100644 --- a/examples/src/WebGL2Samples/texture_2d_array.ts +++ b/examples/src/WebGL2Samples/texture_2d_array.ts @@ -1,4 +1,4 @@ -import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource, loadImage } from "./utility"; (function () diff --git a/examples/src/WebGL2Samples/texture_3d.ts b/examples/src/WebGL2Samples/texture_3d.ts index 1406263..dc1fda5 100644 --- a/examples/src/WebGL2Samples/texture_3d.ts +++ b/examples/src/WebGL2Samples/texture_3d.ts @@ -1,4 +1,4 @@ -import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { snoise } from "./third-party/noise3D"; import { getShaderSource } from "./utility"; diff --git a/examples/src/WebGL2Samples/texture_derivative.ts b/examples/src/WebGL2Samples/texture_derivative.ts index 6a4e116..9dc9e30 100644 --- a/examples/src/WebGL2Samples/texture_derivative.ts +++ b/examples/src/WebGL2Samples/texture_derivative.ts @@ -1,4 +1,4 @@ -import { IGLIndexBuffer, IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLIndexBuffer, IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { mat4, vec3 } from "gl-matrix"; import { getShaderSource, loadImage } from "./utility"; diff --git a/examples/src/WebGL2Samples/texture_fetch.ts b/examples/src/WebGL2Samples/texture_fetch.ts index 71a420c..bc2eddb 100644 --- a/examples/src/WebGL2Samples/texture_fetch.ts +++ b/examples/src/WebGL2Samples/texture_fetch.ts @@ -1,4 +1,4 @@ -import { IGLProgram, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource, loadImage } from "./utility"; (function () diff --git a/examples/src/WebGL2Samples/texture_format.ts b/examples/src/WebGL2Samples/texture_format.ts index 0f0c675..95453fd 100644 --- a/examples/src/WebGL2Samples/texture_format.ts +++ b/examples/src/WebGL2Samples/texture_format.ts @@ -1,4 +1,4 @@ -import { IGLProgram, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLTextureDataType, IGLTextureFormat, IGLTextureInternalFormat, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLTextureDataType, IGLTextureFormat, IGLTextureInternalFormat, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource, loadImage } from "./utility"; (function () diff --git a/examples/src/WebGL2Samples/texture_grad.ts b/examples/src/WebGL2Samples/texture_grad.ts index 7999284..17d74c5 100644 --- a/examples/src/WebGL2Samples/texture_grad.ts +++ b/examples/src/WebGL2Samples/texture_grad.ts @@ -1,4 +1,4 @@ -import { IGLIndexBuffer, IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLIndexBuffer, IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { mat4, vec3 } from "gl-matrix"; import { getShaderSource, loadImage } from "./utility"; diff --git a/examples/src/WebGL2Samples/texture_immutable.ts b/examples/src/WebGL2Samples/texture_immutable.ts index d1ccf8e..17a240c 100644 --- a/examples/src/WebGL2Samples/texture_immutable.ts +++ b/examples/src/WebGL2Samples/texture_immutable.ts @@ -1,4 +1,4 @@ -import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { snoise } from "./third-party/noise3D"; import { getShaderSource, loadImage } from "./utility"; diff --git a/examples/src/WebGL2Samples/texture_integer.ts b/examples/src/WebGL2Samples/texture_integer.ts index 4980976..1086e8f 100644 --- a/examples/src/WebGL2Samples/texture_integer.ts +++ b/examples/src/WebGL2Samples/texture_integer.ts @@ -1,4 +1,4 @@ -import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource, loadImage } from "./utility"; (function () diff --git a/examples/src/WebGL2Samples/texture_lod.ts b/examples/src/WebGL2Samples/texture_lod.ts index 844ec24..eff3879 100644 --- a/examples/src/WebGL2Samples/texture_lod.ts +++ b/examples/src/WebGL2Samples/texture_lod.ts @@ -1,4 +1,4 @@ -import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource, loadImage } from "./utility"; (function () diff --git a/examples/src/WebGL2Samples/texture_offset.ts b/examples/src/WebGL2Samples/texture_offset.ts index a2bc65c..0b21a62 100644 --- a/examples/src/WebGL2Samples/texture_offset.ts +++ b/examples/src/WebGL2Samples/texture_offset.ts @@ -1,4 +1,4 @@ -import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource, loadImage } from "./utility"; (function () diff --git a/examples/src/WebGL2Samples/texture_pixel_store.ts b/examples/src/WebGL2Samples/texture_pixel_store.ts index 17a8eec..59292f9 100644 --- a/examples/src/WebGL2Samples/texture_pixel_store.ts +++ b/examples/src/WebGL2Samples/texture_pixel_store.ts @@ -1,4 +1,4 @@ -import { IGLProgram, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource, loadImage } from "./utility"; (function () diff --git a/examples/src/WebGL2Samples/texture_srgb.ts b/examples/src/WebGL2Samples/texture_srgb.ts index 126fe22..ab999a4 100644 --- a/examples/src/WebGL2Samples/texture_srgb.ts +++ b/examples/src/WebGL2Samples/texture_srgb.ts @@ -1,4 +1,4 @@ -import { IGLProgram, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource, loadImage } from "./utility"; (function () diff --git a/examples/src/WebGL2Samples/texture_vertex.ts b/examples/src/WebGL2Samples/texture_vertex.ts index 2189ea1..edc7d0d 100644 --- a/examples/src/WebGL2Samples/texture_vertex.ts +++ b/examples/src/WebGL2Samples/texture_vertex.ts @@ -1,4 +1,4 @@ -import { IGLIndexBuffer, IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLIndexBuffer, IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLSampler, IGLTexture, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { mat4, vec3 } from "gl-matrix"; import { GlTFLoader, Primitive } from "./third-party/gltf-loader"; import { getShaderSource, loadImage } from "./utility"; diff --git a/examples/src/WebGL2Samples/transform_feedback_instanced.ts b/examples/src/WebGL2Samples/transform_feedback_instanced.ts index e58a54a..f3c3ca3 100644 --- a/examples/src/WebGL2Samples/transform_feedback_instanced.ts +++ b/examples/src/WebGL2Samples/transform_feedback_instanced.ts @@ -1,4 +1,4 @@ -import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLTransformFeedback, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLTransformFeedback, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource } from "./utility"; (function () diff --git a/examples/src/WebGL2Samples/transform_feedback_interleaved.ts b/examples/src/WebGL2Samples/transform_feedback_interleaved.ts index e85cc70..8cadd25 100644 --- a/examples/src/WebGL2Samples/transform_feedback_interleaved.ts +++ b/examples/src/WebGL2Samples/transform_feedback_interleaved.ts @@ -1,4 +1,4 @@ -import { IGLProgram, IGLRenderPass, IGLRenderingContext, IGLTransformFeedback, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLProgram, IGLRenderPass, IGLRenderingContext, IGLTransformFeedback, IGLVertexArrayObject, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource } from "./utility"; (function () diff --git a/examples/src/WebGL2Samples/transform_feedback_separated.ts b/examples/src/WebGL2Samples/transform_feedback_separated.ts index 8d31df8..8122b2d 100644 --- a/examples/src/WebGL2Samples/transform_feedback_separated.ts +++ b/examples/src/WebGL2Samples/transform_feedback_separated.ts @@ -1,4 +1,4 @@ -import { IGLRenderPass, IGLRenderingContext, IGLTransformFeedback, IGLVertexArrayObject, IGLProgram, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderPass, IGLRenderingContext, IGLTransformFeedback, IGLVertexArrayObject, IGLProgram, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource } from "./utility"; (function () diff --git a/examples/src/WebGL2Samples/transform_feedback_separated_2.ts b/examples/src/WebGL2Samples/transform_feedback_separated_2.ts index 1cab23c..c91e468 100644 --- a/examples/src/WebGL2Samples/transform_feedback_separated_2.ts +++ b/examples/src/WebGL2Samples/transform_feedback_separated_2.ts @@ -1,4 +1,4 @@ -import { IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLTransformFeedback, IGLVertexArrayObject, IGLProgram, IGLVertexBuffer, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderObject, IGLRenderPass, IGLRenderingContext, IGLTransformFeedback, IGLVertexArrayObject, IGLProgram, IGLVertexBuffer, WebGL } from "@feng3d/webgl"; import { getShaderSource } from "./utility"; (function () diff --git a/examples/src/regl-examples/basic.ts b/examples/src/regl-examples/basic.ts index 22cd313..187b4c7 100644 --- a/examples/src/regl-examples/basic.ts +++ b/examples/src/regl-examples/basic.ts @@ -1,4 +1,4 @@ -import { IGLRenderObject, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderObject, WebGL } from "@feng3d/webgl"; /** * 让T中以及所有键值中的所有键都是可选的 diff --git a/examples/src/regl-examples/batch.ts b/examples/src/regl-examples/batch.ts index ce1ed4b..61ea0aa 100644 --- a/examples/src/regl-examples/batch.ts +++ b/examples/src/regl-examples/batch.ts @@ -1,4 +1,4 @@ -import { IGLRenderObject, IGLRenderPipeline, IGLVertexArrayObject, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderObject, IGLRenderPipeline, IGLVertexArrayObject, WebGL } from "@feng3d/webgl"; const webglcanvas = document.createElement("canvas"); webglcanvas.id = "glcanvas"; diff --git a/examples/src/regl-examples/blur.ts b/examples/src/regl-examples/blur.ts index 52db7ce..f4c048d 100644 --- a/examples/src/regl-examples/blur.ts +++ b/examples/src/regl-examples/blur.ts @@ -1,4 +1,4 @@ -import { IGLRenderObject, IGLRenderPipeline, IGLVertexArrayObject, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderObject, IGLRenderPipeline, IGLVertexArrayObject, WebGL } from "@feng3d/webgl"; import { fit } from "./hughsk/canvas-fit"; import { attachCamera } from "./hughsk/canvas-orbit-camera"; diff --git a/examples/src/regl-examples/bunny.ts b/examples/src/regl-examples/bunny.ts index ced111a..f0474ce 100644 --- a/examples/src/regl-examples/bunny.ts +++ b/examples/src/regl-examples/bunny.ts @@ -1,4 +1,4 @@ -import { IGLRenderObject, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderObject, WebGL } from "@feng3d/webgl"; import * as bunny from "./mikolalysenko/bunny"; import * as mat4 from "./stackgl/gl-mat4"; diff --git a/examples/src/regl-examples/camera.ts b/examples/src/regl-examples/camera.ts index 673522f..ee0069b 100644 --- a/examples/src/regl-examples/camera.ts +++ b/examples/src/regl-examples/camera.ts @@ -1,4 +1,4 @@ -import { IGLRenderObject, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderObject, WebGL } from "@feng3d/webgl"; import { angleNormals } from "./mikolalysenko/angle-normals"; import * as bunny from "./mikolalysenko/bunny"; diff --git a/examples/src/regl-examples/cloth.ts b/examples/src/regl-examples/cloth.ts index 3df8621..ba5792b 100644 --- a/examples/src/regl-examples/cloth.ts +++ b/examples/src/regl-examples/cloth.ts @@ -1,4 +1,4 @@ -import { IGLRenderObject, IGLSamplerTexture, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderObject, IGLSamplerTexture, WebGL } from "@feng3d/webgl"; import { fit } from "./hughsk/canvas-fit"; import { attachCamera } from "./hughsk/canvas-orbit-camera"; diff --git a/examples/src/regl-examples/cube.ts b/examples/src/regl-examples/cube.ts index 8c7ecae..854a4c5 100644 --- a/examples/src/regl-examples/cube.ts +++ b/examples/src/regl-examples/cube.ts @@ -1,4 +1,4 @@ -import { IGLRenderObject, IGLSamplerTexture, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderObject, IGLSamplerTexture, WebGL } from "@feng3d/webgl"; import * as mat4 from "./stackgl/gl-mat4"; (async () => diff --git a/examples/src/regl-examples/util/camera.ts b/examples/src/regl-examples/util/camera.ts index 2c614b5..ac1fdfd 100644 --- a/examples/src/regl-examples/util/camera.ts +++ b/examples/src/regl-examples/util/camera.ts @@ -1,4 +1,4 @@ -import { IGLRenderObject } from "@feng3d/webgl-renderer"; +import { IGLRenderObject } from "@feng3d/webgl"; import { mouseListen as mouseChange } from "../mikolalysenko/mouse-change"; import { mouseWheelListen as mouseWheel } from "../mikolalysenko/mouse-wheel"; diff --git a/examples/src/webgl-examples/sample1.ts b/examples/src/webgl-examples/sample1.ts index 6a5b38b..b9a171d 100644 --- a/examples/src/webgl-examples/sample1.ts +++ b/examples/src/webgl-examples/sample1.ts @@ -1,7 +1,7 @@ // see https://github.com/mdn/dom-examples/blob/main/webgl-examples/tutorial/sample1/webgl-demo.js // https://mdn.github.io/dom-examples/webgl-examples/tutorial/sample1/ -import { WebGL } from "@feng3d/webgl-renderer"; +import { WebGL } from "@feng3d/webgl"; function main() { diff --git a/examples/src/webgl-examples/sample2.ts b/examples/src/webgl-examples/sample2.ts index 4db9c55..c1e0c17 100644 --- a/examples/src/webgl-examples/sample2.ts +++ b/examples/src/webgl-examples/sample2.ts @@ -1,4 +1,4 @@ -import { IGLRenderPass, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderPass, WebGL } from "@feng3d/webgl"; import { mat4 } from "gl-matrix"; main(); diff --git a/examples/src/webgl-examples/sample3.ts b/examples/src/webgl-examples/sample3.ts index eda3a39..2a15a71 100644 --- a/examples/src/webgl-examples/sample3.ts +++ b/examples/src/webgl-examples/sample3.ts @@ -1,4 +1,4 @@ -import { IGLRenderPass, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderPass, WebGL } from "@feng3d/webgl"; import { mat4 } from "gl-matrix"; main(); diff --git a/examples/src/webgl-examples/sample4.ts b/examples/src/webgl-examples/sample4.ts index 1c8d6e4..b3629e6 100644 --- a/examples/src/webgl-examples/sample4.ts +++ b/examples/src/webgl-examples/sample4.ts @@ -1,4 +1,4 @@ -import { IGLRenderObject, IGLRenderPass, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderObject, IGLRenderPass, WebGL } from "@feng3d/webgl"; import { mat4 } from "gl-matrix"; let squareRotation = 0.0; diff --git a/examples/src/webgl-examples/sample5.ts b/examples/src/webgl-examples/sample5.ts index c1a1d1e..c9f9633 100644 --- a/examples/src/webgl-examples/sample5.ts +++ b/examples/src/webgl-examples/sample5.ts @@ -1,4 +1,4 @@ -import { IGLRenderObject, IGLRenderPass, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderObject, IGLRenderPass, WebGL } from "@feng3d/webgl"; import { mat4 } from "gl-matrix"; let cubeRotation = 0.0; diff --git a/examples/src/webgl-examples/sample6.ts b/examples/src/webgl-examples/sample6.ts index 49770e8..f16c76f 100644 --- a/examples/src/webgl-examples/sample6.ts +++ b/examples/src/webgl-examples/sample6.ts @@ -1,4 +1,4 @@ -import { IGLRenderObject, IGLRenderPass, IGLSampler, IGLTexture, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderObject, IGLRenderPass, IGLSampler, IGLTexture, WebGL } from "@feng3d/webgl"; import { mat4 } from "gl-matrix"; let cubeRotation = 0.0; diff --git a/examples/src/webgl-examples/sample7.ts b/examples/src/webgl-examples/sample7.ts index 04f638a..9d8c13d 100644 --- a/examples/src/webgl-examples/sample7.ts +++ b/examples/src/webgl-examples/sample7.ts @@ -1,4 +1,4 @@ -import { IGLRenderObject, IGLRenderPass, IGLSampler, IGLSamplerTexture, IGLTexture, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderObject, IGLRenderPass, IGLSampler, IGLSamplerTexture, IGLTexture, WebGL } from "@feng3d/webgl"; import { mat4 } from "gl-matrix"; let cubeRotation = 0.0; diff --git a/examples/src/webgl-examples/sample8.ts b/examples/src/webgl-examples/sample8.ts index e170561..8b12c3e 100644 --- a/examples/src/webgl-examples/sample8.ts +++ b/examples/src/webgl-examples/sample8.ts @@ -1,4 +1,4 @@ -import { IGLRenderObject, IGLRenderPass, IGLSampler, IGLSamplerTexture, IGLTexture, WebGL } from "@feng3d/webgl-renderer"; +import { IGLRenderObject, IGLRenderPass, IGLSampler, IGLSamplerTexture, IGLTexture, WebGL } from "@feng3d/webgl"; import { mat4 } from "gl-matrix"; let cubeRotation = 0.0; diff --git a/package.json b/package.json index 2552939..ebaad3b 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "@feng3d/webgl-renderer", + "name": "@feng3d/webgl", "version": "0.0.2", "description": "渲染库", "author": "feng", diff --git a/src/caches/getIGLTextureSize.ts b/src/caches/getIGLTextureSize.ts index bf782d8..a79b381 100644 --- a/src/caches/getIGLTextureSize.ts +++ b/src/caches/getIGLTextureSize.ts @@ -1,4 +1,4 @@ -import { IGLTexture } from "@feng3d/webgl-renderer"; +import { IGLTexture } from "@feng3d/webgl"; import { getIGLTextureSourceSize } from "./getIGLTextureSourceSize"; export function getIGLTextureSize(glTexture: IGLTexture) -- Gitee From 0cde1ff2bf1c3defc9a7a41047c83194ae681144 Mon Sep 17 00:00:00 2001 From: feng <908087098@qq.com> Date: Tue, 3 Dec 2024 14:57:49 +0800 Subject: [PATCH 47/47] IGLRenderPassDescriptor.multisample --- examples/src/WebGL2Samples/fbo_multisample.ts | 5 +++-- src/caches/getRenderbuffer.ts | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/examples/src/WebGL2Samples/fbo_multisample.ts b/examples/src/WebGL2Samples/fbo_multisample.ts index 8958be0..ec8686a 100644 --- a/examples/src/WebGL2Samples/fbo_multisample.ts +++ b/examples/src/WebGL2Samples/fbo_multisample.ts @@ -83,15 +83,16 @@ const FRAMEBUFFER = { RENDERBUFFER: 0, COLORBUFFER: 1 }; -const colorRenderbuffer: IGLRenderbuffer = { samples: 4, internalformat: "RGBA8", width: FRAMEBUFFER_SIZE.x, height: FRAMEBUFFER_SIZE.y }; +const colorRenderbuffer: IGLRenderbuffer = { internalformat: "RGBA8", width: FRAMEBUFFER_SIZE.x, height: FRAMEBUFFER_SIZE.y }; const framebuffers: IGLRenderPassDescriptor[] = [ { colorAttachments: [{ view: colorRenderbuffer, clearValue: [0.0, 0.0, 0.0, 1.0] }], + multisample: 4 // 多重采样 }, { colorAttachments: [{ view: { texture, level: 0 }, clearValue: [0.0, 0.0, 0.0, 1.0] }], - }, + } ]; // -- Init VertexArray diff --git a/src/caches/getRenderbuffer.ts b/src/caches/getRenderbuffer.ts index 39afdbb..3180b8b 100644 --- a/src/caches/getRenderbuffer.ts +++ b/src/caches/getRenderbuffer.ts @@ -21,7 +21,7 @@ export function getRenderbuffer(gl: WebGLRenderingContext, renderbuffer: IGLRend gl.bindRenderbuffer(gl.RENDERBUFFER, webGLRenderbuffer); if (multisample === 4 && gl instanceof WebGL2RenderingContext) { - gl.renderbufferStorageMultisample(gl.RENDERBUFFER, 4, gl[internalformat], width, height); + gl.renderbufferStorageMultisample(gl.RENDERBUFFER, multisample, gl[internalformat], width, height); } else { -- Gitee