From 476a3fb432336abfdc48c274420a31ac6ee33b70 Mon Sep 17 00:00:00 2001 From: Igor Dykhta Date: Thu, 8 Apr 2021 17:59:45 +0300 Subject: [PATCH] ts and related fixes --- .../shadertools/src/lib/assembe-shaders.d.ts | 27 ------------------- .../shadertools/src/lib/assemble-shaders.js | 2 +- modules/shadertools/src/lib/inject-shader.js | 6 ++++- .../image-warp-filters/bulgepinch.d.ts | 1 - .../src/modules/image-warp-filters/swirl.d.ts | 4 +-- .../shadertools/src/modules/picking/README.md | 2 +- modules/shadertools/src/utils/webgl-info.js | 2 +- modules/webgl/src/classes/clear.d.ts | 11 ++++++++ modules/webgl/src/classes/clear.js | 2 ++ modules/webgl/src/classes/framebuffer.js | 2 +- .../webgl/src/classes/texture-2d-array.d.ts | 10 ------- .../webgl/src/webgl-utils/texture-utils.d.ts | 14 ++++++++++ .../webgl/src/webgl-utils/texture-utils.js | 2 ++ 13 files changed, 40 insertions(+), 45 deletions(-) delete mode 100644 modules/shadertools/src/lib/assembe-shaders.d.ts create mode 100644 modules/webgl/src/classes/clear.d.ts delete mode 100644 modules/webgl/src/classes/texture-2d-array.d.ts create mode 100644 modules/webgl/src/webgl-utils/texture-utils.d.ts diff --git a/modules/shadertools/src/lib/assembe-shaders.d.ts b/modules/shadertools/src/lib/assembe-shaders.d.ts deleted file mode 100644 index 33dd3cf6b0..0000000000 --- a/modules/shadertools/src/lib/assembe-shaders.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -export type HookFunction = { - vs: string; - fs: string; -}; - -export type AssembleShaderOptions = { - id: string; - source: any; - type: any; - modules: any[]; - defines?: object; - hookFunctions?: HookFunction[]; - inject?: object; - transpileToGLSL100?: boolean; - prologue?: boolean; - log: any; -}; - -export function assembleShaders( - gl: WebGLRenderingContext, - opts: AssembleShaderOptions -): { - gl: WebGLRenderingContext; - vs: string; - fs: string; - getUniforms: any; -}; diff --git a/modules/shadertools/src/lib/assemble-shaders.js b/modules/shadertools/src/lib/assemble-shaders.js index 8c66933fa6..8f9cc040d5 100644 --- a/modules/shadertools/src/lib/assemble-shaders.js +++ b/modules/shadertools/src/lib/assemble-shaders.js @@ -59,7 +59,7 @@ function assembleShader( // Extract any version directive string from source. // TODO : keep all pre-processor statements at the begining of the shader. if (sourceLines[0].indexOf('#version ') === 0) { - glslVersion = 300; // TODO - regexp that matches atual version number + glslVersion = 300; // TODO - regexp that matches actual version number versionLine = sourceLines[0]; coreSource = sourceLines.slice(1).join('\n'); } else { diff --git a/modules/shadertools/src/lib/inject-shader.js b/modules/shadertools/src/lib/inject-shader.js index fa11773dac..d6ca825891 100644 --- a/modules/shadertools/src/lib/inject-shader.js +++ b/modules/shadertools/src/lib/inject-shader.js @@ -35,27 +35,31 @@ export default function injectShader(source, type, inject, injectStandardStubs = source = source.replace(DECLARATION_INJECT_MARKER, fragmentString); } break; - // main code is injected at the end of main function + // inject code at the begining of the main function case 'vs:#main-start': if (isVertex) { source = source.replace(REGEX_START_OF_MAIN, match => match + fragmentString); } break; + // inject code at the end of main function case 'vs:#main-end': if (isVertex) { source = source.replace(REGEX_END_OF_MAIN, match => fragmentString + match); } break; + // declarations are injected before the main function case 'fs:#decl': if (!isVertex) { source = source.replace(DECLARATION_INJECT_MARKER, fragmentString); } break; + // inject code at the begining of the main function case 'fs:#main-start': if (!isVertex) { source = source.replace(REGEX_START_OF_MAIN, match => match + fragmentString); } break; + // inject code at the end of main function case 'fs:#main-end': if (!isVertex) { source = source.replace(REGEX_END_OF_MAIN, match => fragmentString + match); diff --git a/modules/shadertools/src/modules/image-warp-filters/bulgepinch.d.ts b/modules/shadertools/src/modules/image-warp-filters/bulgepinch.d.ts index 7eb86069cd..9fe102685e 100644 --- a/modules/shadertools/src/modules/image-warp-filters/bulgepinch.d.ts +++ b/modules/shadertools/src/modules/image-warp-filters/bulgepinch.d.ts @@ -1,4 +1,3 @@ -import {ShaderModule} from '../../types'; import {ShaderPass} from '../../types'; /** diff --git a/modules/shadertools/src/modules/image-warp-filters/swirl.d.ts b/modules/shadertools/src/modules/image-warp-filters/swirl.d.ts index 03959e9bc6..1b336f9940 100644 --- a/modules/shadertools/src/modules/image-warp-filters/swirl.d.ts +++ b/modules/shadertools/src/modules/image-warp-filters/swirl.d.ts @@ -1,4 +1,4 @@ -import {ShaderModule} from '../../types'; +import {ShaderPass} from '../../types'; /** * Warps a circular region of the image in a swirl. @@ -7,4 +7,4 @@ import {ShaderModule} from '../../types'; * @param angle The angle in radians that the pixels in the center of * the circular region will be rotated by. */ -export const swirl: ShaderModule; +export const swirl: ShaderPass; diff --git a/modules/shadertools/src/modules/picking/README.md b/modules/shadertools/src/modules/picking/README.md index e2bcd5879e..d1e2dcaf16 100644 --- a/modules/shadertools/src/modules/picking/README.md +++ b/modules/shadertools/src/modules/picking/README.md @@ -51,7 +51,7 @@ main() { ### getUniforms -`getUniforms` takes an object takes a set of key/value pairs, returns an object with key/value pairs representing the uniforms that the `picking` module shaders need. +`getUniforms` takes an object with key/value pairs, returns an object with key/value pairs representing the uniforms that the `picking` module shaders need. `getUniforms(opts)` opts can contain following keys: diff --git a/modules/shadertools/src/utils/webgl-info.js b/modules/shadertools/src/utils/webgl-info.js index 9ed4ab7ed9..fb0f368897 100644 --- a/modules/shadertools/src/utils/webgl-info.js +++ b/modules/shadertools/src/utils/webgl-info.js @@ -81,7 +81,7 @@ const compiledGlslExtensions = {}; * gl : WebGL context * cap : Key of WEBGL_FEATURES object identifying the extension * opts : -* behavior : behavor of extension to be tested, by defualt `enable` is used +* behavior : behavior of extension to be tested, by defualt `enable` is used * Returns : true, if shader is compiled successfully, false otherwise */ export function canCompileGLGSExtension(gl, cap, opts = {}) { diff --git a/modules/webgl/src/classes/clear.d.ts b/modules/webgl/src/classes/clear.d.ts new file mode 100644 index 0000000000..7170a650a6 --- /dev/null +++ b/modules/webgl/src/classes/clear.d.ts @@ -0,0 +1,11 @@ +import Framebuffer from './framebuffer'; + +export function clear( + gl: WebGLRenderingContext, + options?: {framebuffer?: Framebuffer; color?: any; depth?: any; stencil?: any} +): void; + +export function clearBuffer( + gl: any, + options?: {framebuffer?: Framebuffer; buffer?: any; drawBuffer?: any; value?: any} +); diff --git a/modules/webgl/src/classes/clear.js b/modules/webgl/src/classes/clear.js index 9ed3e61a18..8c72cf8c0e 100644 --- a/modules/webgl/src/classes/clear.js +++ b/modules/webgl/src/classes/clear.js @@ -15,6 +15,7 @@ const GL_DEPTH_STENCIL = 0x84f9; const ERR_ARGUMENTS = 'clear: bad arguments'; // Optionally clears depth, color and stencil buffers +/** @type {import('./clear').clear} */ export function clear(gl, {framebuffer = null, color = null, depth = null, stencil = null} = {}) { const parameters = {}; @@ -54,6 +55,7 @@ export function clear(gl, {framebuffer = null, color = null, depth = null, stenc } // WebGL2 - clear a specific drawing buffer +/** @type {import('./clear').clearBuffer} */ export function clearBuffer( gl, {framebuffer = null, buffer = GL_COLOR, drawBuffer = 0, value = [0, 0, 0, 0]} = {} diff --git a/modules/webgl/src/classes/framebuffer.js b/modules/webgl/src/classes/framebuffer.js index 93dc5b9ad5..48b34c1a00 100644 --- a/modules/webgl/src/classes/framebuffer.js +++ b/modules/webgl/src/classes/framebuffer.js @@ -289,7 +289,7 @@ export default class Framebuffer extends Resource { } drawBuffers.forEach((value, drawBuffer) => { - clearBuffer({drawBuffer, value}); + clearBuffer(this.gl, {drawBuffer, value}); }); // @ts-ignore diff --git a/modules/webgl/src/classes/texture-2d-array.d.ts b/modules/webgl/src/classes/texture-2d-array.d.ts deleted file mode 100644 index cdd0e25eff..0000000000 --- a/modules/webgl/src/classes/texture-2d-array.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import Texture, {TextureProps} from './texture'; - -export type Texture2DArrayProps = TextureProps & { -}; - -export default class Texture2DArray extends Texture { - static isSupported(gl: WebGLRenderingContext, opts?: object): boolean; - - constructor(gl: WebGLRenderingContext, props?: Texture2DArrayProps); -} diff --git a/modules/webgl/src/webgl-utils/texture-utils.d.ts b/modules/webgl/src/webgl-utils/texture-utils.d.ts new file mode 100644 index 0000000000..fe9ff4fb5e --- /dev/null +++ b/modules/webgl/src/webgl-utils/texture-utils.d.ts @@ -0,0 +1,14 @@ +import Texture2D from '../classes/texture-2d'; +import TextureCube from '../classes/texture-cube'; +import Texture3D from '../classes/texture-3d'; +import Texture from '../classes/texture'; +import Framebuffer, {FramebufferProps} from '../classes/framebuffer'; + +type TextureToCloneType = Texture2D | TextureCube | Texture3D; + +export function cloneTextureFrom( + refTexture: TextureType, + overrides?: any +): TextureType; + +export function toFramebuffer(texture: Texture, opts?: FramebufferProps): Framebuffer; diff --git a/modules/webgl/src/webgl-utils/texture-utils.js b/modules/webgl/src/webgl-utils/texture-utils.js index e8ab185bad..1d71b759d4 100644 --- a/modules/webgl/src/webgl-utils/texture-utils.js +++ b/modules/webgl/src/webgl-utils/texture-utils.js @@ -7,6 +7,7 @@ import GL from '@luma.gl/constants'; import {assert} from '../utils'; // Clone a new texture object from a reference texture object. +/** @type {import('./texture-utils').cloneTextureFrom} */ export function cloneTextureFrom(refTexture, overrides) { assert( refTexture instanceof Texture2D || @@ -37,6 +38,7 @@ export function cloneTextureFrom(refTexture, overrides) { // Wraps a given texture into a framebuffer object, that can be further used // to read data from the texture object. +/** @type {import('./texture-utils').toFramebuffer} */ export function toFramebuffer(texture, opts) { const {gl, width, height, id} = texture; const framebuffer = new Framebuffer(