UNPKG

@luma.gl/shadertools

Version:

Shader module system for luma.gl

39 lines 3.01 kB
import { Matrix4, Vector3 } from '@math.gl/core'; import type { NumberArray3, NumberArray16 } from '@math.gl/core'; /** * @note Projection uniforms are normally constant across draw calls, * at least for each view. */ export type ProjectionProps = { viewMatrix?: Readonly<Matrix4 | NumberArray16>; projectionMatrix?: Readonly<Matrix4 | NumberArray16>; cameraPositionWorld?: Readonly<Vector3 | NumberArray3>; }; /** * @note Projection uniforms are normally constant across draw calls, * at least for each view. */ export type ProjectionUniforms = { viewMatrix?: Readonly<Matrix4 | NumberArray16>; projectionMatrix?: Readonly<Matrix4 | NumberArray16>; viewProjectionMatrix?: Readonly<Matrix4 | NumberArray16>; cameraPositionWorld?: Readonly<Vector3 | NumberArray3>; }; declare function getUniforms(opts?: ProjectionProps, prevUniforms?: ProjectionUniforms): ProjectionUniforms; /** * Projects coordinates */ export declare const projection: { readonly name: "projection"; readonly uniformTypes: { readonly viewMatrix: "mat4x4<f32>"; readonly projectionMatrix: "mat4x4<f32>"; readonly viewProjectionMatrix: "mat4x4<f32>"; readonly cameraPositionWorld: "vec3<f32>"; }; readonly getUniforms: typeof getUniforms; readonly vs: "varying vec4 project_vPositionWorld;\nvarying vec3 project_vNormalWorld;\n\n// Project uniform block\nuniform Project {\n mat4 viewMatrix;\n mat4 projectionMatrix;\n mat4 viewProjectionMatrix;\n vec3 cameraPositionWorld;\n} project;\n\nstruct World {\n vec3 position;\n vec3 normal;\n};\n\nWorld world;\n\nvoid project_setPosition(vec4 position) {\n project_vPositionWorld = position;\n}\n\nvoid project_setNormal(vec3 normal) {\n project_vNormalWorld = normal;\n}\n\nvoid project_setPositionAndNormal_World(vec3 position, vec3 normal) {\n world.position = position;\n world.normal = normal;\n}\n\nvoid project_setPositionAndNormal_Model(vec3 position, vec3 normal, mat4 modelMatrix) {\n world.position = (modelMatrix * vec4(position, 1.)).xyz;\n world.normal = mat3(modelMatrix) * normal;\n}\n\nvec4 project_model_to_clipspace(vec4 position) {\n return project.viewProjectionMatrix * position;\n}\n\nvec4 project_model_to_clipspace_Model(vec3 position, mat4 modelMatrix) {\n return project.viewProjectionMatrix * modelMatrix * vec4(position, 1.);\n}\n\nvec4 project_world_to_clipspace(vec3 position) {\n return project.viewProjectionMatrix * vec4(position, 1.);\n}\n\nvec4 project_view_to_clipspace(vec3 position) {\n return project.projectionMatrix * vec4(position, 1.);\n}\n\nvec4 project_to_clipspace(vec3 position) {\n return project.viewProjectionMatrix * vec4(position, 1.);\n}\n"; readonly fs: "varying vec4 project_vPositionWorld;\nvarying vec3 project_vNormalWorld;\n\nvec4 project_getPosition_World() {\n return project_vPositionWorld;\n}\n\nvec3 project_getNormal_World() {\n return project_vNormalWorld;\n}\n"; }; export {}; //# sourceMappingURL=project.d.ts.map