Adds types for gl-shader (#25200)

* init gl-shader types

* adds tests

* fixes file name

* adds additional signature

* fixes definitions url
This commit is contained in:
Mathias Paumgarten
2018-04-24 17:17:17 -07:00
committed by Wesley Wigham
parent 248e3140ec
commit 0823873176
4 changed files with 119 additions and 0 deletions
+41
View File
@@ -0,0 +1,41 @@
import createShader = require("gl-shader");
const gl = new WebGLRenderingContext();
let shader = createShader(gl, "", "");
shader = createShader(gl, "", "", []);
shader = createShader(gl, "", "", [], []);
shader = createShader(gl, "", "", [{name: "foo", type: "bool"}]);
shader = createShader(gl, "", "", [{name: "foo", type: "bool"}, {name: "bar", type: "float"}]);
shader = createShader(gl, "", "", [{name: "foo", type: "bool"}], [{name: "bar", type: "float"}]);
shader = createShader(gl, {vertex: "", fragment: ""});
shader = createShader(gl, {vertex: "", fragment: "", uniforms: [{name: "foo", type: "bool"}]});
shader = createShader(gl, {vertex: "", fragment: "", uniforms: [{name: "foo", type: "bool"}]});
shader = createShader(gl, {
vertex: "",
fragment: "",
uniforms: [{name: "foo", type: "bool"}],
attributes: [{name: "bar", type: "float"}]
});
shader.bind();
shader.dispose();
shader.update("", "");
shader.update("", "", [{name: "foo", type: "bool"}]);
shader.update("", "", [{name: "foo", type: "bool"}], [{name: "foo", type: "bool"}]);
shader.uniforms;
shader.uniforms.color;
shader.uniforms.color = 4;
shader.uniforms.color = [ 1, 0, 0, 0 ];
shader.uniforms = {
model: [ 1, 2, 3, 4 ],
foo: 13
};
shader.attributes;
shader.attributes.position.length;
shader.attributes.position.pointer();
+51
View File
@@ -0,0 +1,51 @@
// Type definitions for gl-shader 4.2
// Project: https://github.com/stackgl/gl-shader
// Definitions by: Mathias Paumgarten <https://github.com/MathiasPaumgarten>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.2
interface Parameter {
type: string;
name: string;
}
interface Attribute {
location: number[] | number;
pointer(type?: number, normalized?: boolean, stride?: number, offset?: number): number;
}
declare class Shader {
readonly gl: WebGLRenderingContext;
readonly program: WebGLProgram;
readonly vertShader: WebGLShader;
readonly fragShader: WebGLShader;
readonly attributes: {[key: string]: Attribute & any[]};
uniforms: {[key: string]: any};
constructor(gl: WebGLRenderingContext);
bind(): void;
dispose(): void;
update(vertex: string, fragment: string, uniforms?: Parameter[], attributes?: Parameter[]): void;
update(obj: {vertex: string, fragment: string, uniforms: Parameter[], attributes: Parameter[]}): void;
}
declare function createShader(
gl: WebGLRenderingContext,
vertex: string,
fragment: string,
uniforms?: Parameter[],
attributes?: Parameter[]): Shader;
declare function createShader(
gl: WebGLRenderingContext,
options: {
vertex: string,
fragment: string,
uniforms?: Parameter[],
attributes?: Parameter[],
}): Shader;
export = createShader;
+24
View File
@@ -0,0 +1,24 @@
{
"files": [
"index.d.ts",
"gl-shader-tests.ts"
],
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6",
"dom"
],
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
}
}
+3
View File
@@ -0,0 +1,3 @@
{
"extends": "dtslint/dt.json"
}