diff --git a/.gitignore b/.gitignore index 070094f9..03c3e8dc 100644 --- a/.gitignore +++ b/.gitignore @@ -18,4 +18,5 @@ npm-debug.log # Misc deploy_key -deploy_key.pub \ No newline at end of file +deploy_key.pub +.vscode/settings.json diff --git a/lib/aglsl/AGALTokenizer.ts b/lib/aglsl/AGALTokenizer.ts index 52c1f2a4..1f9e0a5d 100644 --- a/lib/aglsl/AGALTokenizer.ts +++ b/lib/aglsl/AGALTokenizer.ts @@ -12,17 +12,16 @@ export class AGALTokenizer { } public decribeAGALPart(array: ByteArray | Part): Description { - if (array instanceof ByteArray) { + if (array instanceof Part) { + const desc = this.decribeAGALByteArray(array.data); + desc.native = array.native; + return desc; + } else return this.decribeAGALByteArray(array); - } - - const desc = this.decribeAGALByteArray(array.data); - desc.native = array.native; - - return desc; } public decribeAGALByteArray(bytes: ByteArray): Description { + bytes.position = 0; const header: Header = new Header(); if (bytes.readUnsignedByte() != 0xa0) { diff --git a/lib/base/ContextGLProfile.ts b/lib/base/ContextGLProfile.ts index 776ee8b0..593e4b87 100644 --- a/lib/base/ContextGLProfile.ts +++ b/lib/base/ContextGLProfile.ts @@ -2,5 +2,9 @@ export enum ContextGLProfile { BASELINE, BASELINE_CONSTRAINED, - BASELINE_EXTENDED + BASELINE_EXTENDED, + STANDARD, + STANDARD_CONSTRAINED, + STANDARD_EXTENDED, + ENHANCED } \ No newline at end of file diff --git a/lib/base/IContextGL.ts b/lib/base/IContextGL.ts index 651fbdf5..bd027468 100644 --- a/lib/base/IContextGL.ts +++ b/lib/base/IContextGL.ts @@ -99,7 +99,7 @@ export interface IContextGL setTextureAt(sampler: number, texture: ITextureBase); - setVertexBufferAt(index: number, buffer: IVertexBuffer, bufferOffset?: number, format?: number); + setVertexBufferAt(index: number, buffer: IVertexBuffer, bufferOffset?: number, format?: number, safeAttributeLocation?: boolean); setRenderToTexture( target: ITextureBase, diff --git a/lib/filters/tasks/TaskBase.ts b/lib/filters/tasks/TaskBase.ts index 6c70d3b9..fe13a44f 100644 --- a/lib/filters/tasks/TaskBase.ts +++ b/lib/filters/tasks/TaskBase.ts @@ -10,7 +10,7 @@ import { ContextGLProgramType } from '../../base/ContextGLProgramType'; import { _Stage_ImageBase, Image2D } from '../../image'; export class TaskBase { - protected _vertexConstantData = new Float32Array([ + protected _vertexConstantData:Float32Array = new Float32Array([ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]); diff --git a/lib/webgl/ContextWebGL.ts b/lib/webgl/ContextWebGL.ts index 51e240e9..9f7f5ccb 100644 --- a/lib/webgl/ContextWebGL.ts +++ b/lib/webgl/ContextWebGL.ts @@ -25,6 +25,7 @@ import { Settings } from '../Settings'; import { FenceContextWebGL } from './FenceContextWebGL'; import * as GL_MAP from './ConstantsWebGL'; import { StatsWebGL } from './StatsWebGL'; +import { IVertexBuffer } from '../base/IVertexBuffer'; let _DEBUG_renderMode: '' | 'line' = ''; @@ -744,11 +745,11 @@ export class ContextWebGL implements IContextGL { } public setVertexBufferAt( - index: number, buffer: VertexBufferWebGL, bufferOffset: number = 0, format: number = 4 + index: number, buffer: VertexBufferWebGL, bufferOffset: number = 0, format: number = 4, safeAttributeLocation: boolean = true ): void { this.stateChangeCallback && this.stateChangeCallback('setVertexBufferAt'); - const location = this._currentProgram ? this._currentProgram.getAttribLocation(index) : -1; + const location = safeAttributeLocation ? this._currentProgram ? this._currentProgram.getAttribLocation(index) : -1 : index; const gl = this._gl; // when we try bind any buffers without VAO we should unbound VAO