AURA

JSGG

AuraJS
DOCSEXAMPLESGITHUB
Draw3D, Camera, Lighting, and PostFX Exact Reference
Narrow exact-reference page for draw3d submission, camera3d, light, shadows, and post-processing surfaces.
docs/reference/draw3d-camera-lighting-and-postfx-exact-reference.md

Draw3D, Camera, Lighting, and PostFX Exact Reference

Use this page when the scene is already in the native 3D render path and you need exact routing for draw submission, camera control, lights, shadows, or post-processing.

Table of Contents

  1. Covers
  2. Open These Handbook Pages First
  3. Canonical Contracts
  4. Namespace Coverage Summary
  5. Namespaces
  6. Non-Namespace Contract Topics

Covers

  • aura.draw3d
  • aura.camera3d
  • aura.light
  • Shadow and post-processing controls are covered by the aura.light and aura.draw3d sections in the canonical 3D contract.

Open These Handbook Pages First

Canonical Contracts

Namespace Coverage Summary

Namespace Exact Signatures Additional Method Names Native Web
aura.draw3d 13 0 supported unsupported
aura.camera3d 10 0 supported unsupported
aura.light 14 0 supported unsupported

Namespaces

`aura.draw3d`

3D draw submission, fog, skybox, billboards, and postfx controls.

  • Native support: supported
  • Web support: unsupported
  • Exact signatures in generated schema: 13
  • Additional known method names: 0
  • Contract source: api-contract-3d.md

Exact Signatures

aura.draw3d.billboard( textureHandleOrSource: | number | { dataTextureHandle: number; }, options: { x: number; y: number; z: number; width: number; height: number; mode?: "face" | "axis"; color?: Color; frameX?: number; frameY?: number; frameW?: number; frameH?: number; atlasWidth?: number; atlasHeight?: number; } ): void
aura.draw3d.clear3d(color?: Color): void
aura.draw3d.clearFog(): void
aura.draw3d.createMesh( vertices: Array<{ position: [number, number, number]; normal?: [number, number, number]; uv?: [number, number]; color?: [number, number, number, number]; jointIndices?: [number, number, number, number]; jointWeights?: [number, number, number, number]; }>, indices: number[] ): MeshHandle
aura.draw3d.drawMesh(mesh: MeshHandle, material: MaterialHandle, transform?: { position?: Vec3; rotation?: Vec3; scale?: Vec3; }): void
aura.draw3d.drawMeshInstanced( mesh: MeshHandle, material: MaterialHandle, transforms: Array<{ position?: Vec3; rotation?: Vec3; scale?: Vec3; }> ): void
aura.draw3d.drawSkybox(path: string): void
aura.draw3d.getPostFXState(): { passes: Array<{ pass: string; enabled: boolean; strength: number; radius: number; threshold: number; customParams: Record<string, number>; index: number; isCustom: boolean; }>; resolvedSteps: Array<{ pass: string; targetSlot: string | null; pingPongPhase: boolean; usesShaderPipeline: boolean; inputMatchesOriginalScene: boolean; index: number; }>; targetChain: { intermediateTargets: string[]; intermediateTargetCount: number; pingPong: boolean; composeMode: "replace" | "additive" | "multiply"; }; customShaderBindings: Array<{ binding: number; name: string; type: string; semantic: string; }>; customShaderContract: { deterministicOrder: boolean; supportsDepthTexture: boolean; supportsOriginalSceneTexture: boolean; supportsCameraInfoInUniform: boolean; supportsNormalBuffer: boolean; supportsIntermediateBufferReads: boolean; customParamSlots: number; inputTextureSemantic: string; originalSceneSemantic: string; orderingSemantic: string; }; totalPasses: number; enabledPasses: number; mutationCount: number; orderFingerprint: number; targetChainFingerprint: number; customPassCount: number; customParamFingerprint: number; lastOperation: string; lastReasonCode: string; lastOk: boolean; }
aura.draw3d.registerPostFXShader( name: string, wgslSource: string ): { ok: boolean; name: string; error?: string; }
aura.draw3d.removePostFXPass(pass: string): { ok: boolean; operation: "removePostFXPass"; reasonCode: string; pass: string | null; }
aura.draw3d.setFog(options: { mode: "linear" | "exp" | "exp2"; color?: Color | ColorRgb; near?: number; far?: number; density?: number; atmosphere?: { enabled?: boolean; baseY?: number; falloff?: number; rayStrength?: number; rayDecay?: number; rayExposure?: number; }; }): void
aura.draw3d.setPostFXEnabled( pass: string, enabled: boolean ): { ok: boolean; operation: "setPostFXEnabled"; reasonCode: string; pass: string | null; }
aura.draw3d.setPostFXPass( pass: string, options?: { enabled?: boolean; strength?: number; radius?: number; threshold?: number; customParams?: Record<string, number>; targetChain?: { intermediateTargets?: string[]; pingPong?: boolean; composeMode?: "replace" | "additive" | "multiply"; }; } ): { ok: boolean; operation: "setPostFXPass"; reasonCode: string; pass: string | null; }

`aura.camera3d`

3D camera projection, transforms, and control helpers.

  • Native support: supported
  • Web support: unsupported
  • Exact signatures in generated schema: 10
  • Additional known method names: 0
  • Contract source: api-contract-3d.md

Exact Signatures

aura.camera3d.getControlState(): { profile: "none" | "orbit"; active: boolean; orbit: { yaw: number; pitch: number; distance: number; target: Vec3; rotateSpeed: number; panSpeed: number; zoomSpeed: number; damping: number; minDistance: number; maxDistance: number; minPitchDeg: number; maxPitchDeg: number; }; }
aura.camera3d.getProjectionMatrix(): Mat4
aura.camera3d.getViewMatrix(): Mat4
aura.camera3d.lookAt(x: number, y: number, z: number): void
aura.camera3d.perspective(fovDeg: number, near: number, far: number): void
aura.camera3d.setControlProfile( profile: "none" | "orbit", options?: { rotateSpeed?: number; panSpeed?: number; zoomSpeed?: number; damping?: number; // clamped to [0, 1] minDistance?: number; // > 0, clamped to deterministic safe range maxDistance?: number; // > 0, clamped to deterministic safe range minPitchDeg?: number; // clamped to [-89, 89] maxPitchDeg?: number; // clamped to [-89, 89] } ): void
aura.camera3d.setFOV(fovDeg: number): void
aura.camera3d.setPosition(x: number, y: number, z: number): void
aura.camera3d.setTarget(x: number, y: number, z: number): void
aura.camera3d.updateControls( dtSeconds: number, input?: { rotateX?: number; rotateY?: number; panX?: number; panY?: number; zoom?: number; } ): void

`aura.light`

3D light lifecycle and shadow-control surface.

  • Native support: supported
  • Web support: unsupported
  • Exact signatures in generated schema: 14
  • Additional known method names: 0
  • Contract source: api-contract-3d.md

Exact Signatures

aura.light.ambient(color: Color, intensity: number): LightHandle
aura.light.configureDirectionalShadows(options: { enabled?: boolean; quality?: "low" | "medium" | "high"; bias?: number; normalBias?: number; filterMode?: "hard" | "pcf"; filterRadius?: number; cascadeCount?: number; tileResolution?: number; lambda?: number; blendWidth?: number; shadowFar?: number; stabilizeCascades?: boolean; }): void
aura.light.configureShadow(lightId: LightHandle, options: { enabled?: boolean; quality?: "low" | "medium" | "high"; bias?: number; normalBias?: number; filterMode?: "hard" | "pcf"; filterRadius?: number; }): void
aura.light.directional(direction: Vec3, color: Color, intensity: number): LightHandle
aura.light.getShadowState(lightId?: LightHandle): { shadowBudget: number; shadowCastingCount: number; budgetSaturated: boolean; shadowedPointLightCount: number; shadowedSpotLightCount: number; rendererActive: boolean; effectiveShadowCastingCount: number; effectivePointLightCount: number; effectiveSpotLightCount: number; directionalPassCount: number; multiLightSlotCount: number; multiLightPassCount: number; shadowDrawCount: number; directional: { enabled: boolean; quality: "low" | "medium" | "high"; bias: number; normalBias: number; filterMode: "hard" | "pcf"; filterRadius: number; cascadeCount: number; tileResolution: number; lambda: number; blendWidth: number; shadowFar: number; stabilizeCascades: boolean; }; } | { lightId: LightHandle; type: "directional" | "point" | "spot"; enabled: boolean; quality: "low" | "medium" | "high"; bias: number; normalBias: number; filterMode: "hard" | "pcf"; filterRadius: number; rendererActive: boolean; effectiveEnabled: boolean; effectiveQuality: "low" | "medium" | "high"; effectiveBias: number; effectiveSlotCount: number; } | null
aura.light.getShadowStats(): { shadowCastingCount: number; shadowBudget: number; budgetSaturated: boolean; directionalShadowEnabled: boolean; directionalQuality: "low" | "medium" | "high"; directionalBias: number; directionalNormalBias: number; directionalFilterMode: "hard" | "pcf"; directionalFilterRadius: number; directionalCascadeCount: number; directionalTileResolution: number; directionalLambda: number; directionalBlendWidth: number; directionalShadowFar: number; directionalStabilizeCascades: boolean; directionalTexelSnapErrorMax: number; shadowedPointLightCount: number; shadowedSpotLightCount: number; rendererActive: boolean; effectiveShadowCastingCount: number; effectivePointLightCount: number; effectiveSpotLightCount: number; directionalPassCount: number; multiLightSlotCount: number; multiLightPassCount: number; shadowDrawCount: number; }
aura.light.hemisphere( skyColor: Color, groundColor: Color, intensity: number, upDirection?: Vec3 ): LightHandle
aura.light.point(position: Vec3, color: Color, intensity: number, range: number): LightHandle
aura.light.remove(handle: LightHandle): void
aura.light.setShadowBudget(maxLights: number): void
aura.light.setShadowCasting(lightId: LightHandle, enabled: boolean): void
aura.light.setShadowQuality( lightId: LightHandle, quality: "low" | "medium" | "high" ): void
aura.light.spot( position: Vec3, direction: Vec3, color: Color, intensity: number, range: number, angleRadians: number ): LightHandle
aura.light.update(handle: LightHandle, props: { position?: Vec3; direction?: Vec3; color?: Color; intensity?: number; range?: number; angle?: number; angleRadians?: number; skyColor?: Color; groundColor?: Color; hemisphereIntensity?: number; skyIntensity?: number; upDirection?: Vec3; }): void

Non-Namespace Contract Topics

  • Shadow and post-processing controls are covered by the aura.light and aura.draw3d sections in the canonical 3D contract.
DOCUMENT REFERENCE
docs/reference/draw3d-camera-lighting-and-postfx-exact-reference.md
AURAJS
Cmd/Ctrl+K
aurajsgg