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; projectionMatrix?: Readonly; cameraPositionWorld?: Readonly; }; /** * @note Projection uniforms are normally constant across draw calls, * at least for each view. */ export type ProjectionUniforms = { viewMatrix?: Readonly; projectionMatrix?: Readonly; viewProjectionMatrix?: Readonly; cameraPositionWorld?: Readonly; }; declare function getUniforms(opts?: ProjectionProps, prevUniforms?: ProjectionUniforms): ProjectionUniforms; /** * Projects coordinates */ export declare const projection: { readonly name: "projection"; readonly uniformTypes: { readonly viewMatrix: "mat4x4"; readonly projectionMatrix: "mat4x4"; readonly viewProjectionMatrix: "mat4x4"; readonly cameraPositionWorld: "vec3"; }; 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