Package limn.render3d


package limn.render3d
Render-to-texture 3D: Graphics3D is both the facade a caller uses inside a frame and the SPI the backend installs, and around it sit the neutral resources a scene is made of: MeshData and TextureData built on any thread, their uploaded twins GpuMesh and GpuTexture, Camera with its controllers, Material, Light, and the RenderPass draws are issued into. A pass renders into a RenderTarget the 2D pipeline composites like any other texture, which is why a 3D viewport is just a widget.
  • Class
    Description
    A perspective camera positioned by eye/target/up.
    Translates pointer input into camera motion.
    How the channel values of a color or texture are encoded.
    Immediate-mode debug geometry: world-space lines (AABBs, oriented boxes, axes, grids, rays) batched on the CPU and flushed into a RenderPass once per frame.
    An image-based lighting environment as a procedural gradient sky: sky straight up, horizon at the equator, ground straight down, in linear color, scaled by intensity.
    A first-person "fly" camera: dragging looks around (yaw/pitch about the eye, pitch clamped near the poles) and the wheel flies forward/back along the view direction.
    An opaque handle to mesh geometry uploaded to the GPU (via Graphics3D.upload).
    An opaque handle to a texture uploaded to the GPU (see Graphics3D.uploadTexture).
    Facade + install-at-startup SPI for the 3D backend, the same inversion pattern as Images/Sounds: a neutral entry point here, the GL implementation installed by the backend on startup.
    Backend-supplied factory + renderer (installed at startup).
    Order-2 (9-coefficient) spherical-harmonic irradiance baked from an Environment, the diffuse half of image-based lighting (Ramamoorthi & Hanrahan 2001).
    An analytic light for the PBR pass, added to a RenderPass with RenderPass.addLight(limn.render3d.Light).
    An infinitely distant light (sun): direction points toward the source.
    An omnidirectional light at position with inverse-square falloff.
    A cone light at position aimed along direction (pointing away from the light).
    How a surface is shaded.
    A tangent-space normal map and how far to lean on it.
    Metallic-roughness PBR (Cook-Torrance GGX), lit by every Light on the pass plus a flat ambient term.
    Custom GLSL.
    Lambert diffuse from the pass's single directional light, over a base color.
    A surface the application builds itself, out of the same neutral shader IR the built-in materials are generated from, and lit by the same core.
    A named sampler.
    A named vec4 uniform.
    A flat/vertex color, unaffected by lights.
    CPU-side geometry: one float array per VertexAttribute plus a triangle index list.
    How often a mesh's contents change, declared at upload, because a GPU buffer's usage is fixed when it is allocated.
    Orbits a Camera around its target: horizontal drag spins the azimuth, vertical drag tilts the elevation (clamped near the poles), the wheel dollies in/out.
    A candidate for Picker: geometry (MeshData, kept CPU-side for ray tests), its world transform, and an opaque tag the caller uses to identify the hit.
    CPU ray picking.
    The nearest hit from Picker: the hit Pickable's tag, the ray distance, and the world-space intersection point.
    Procedural MeshData for common shapes, each with POSITION, NORMAL and UV0.
    A snapshot of the 3D subsystem's GPU footprint and last-frame workload, for diagnostics (a performance monitor).
    The draw interface handed to a render callback (see Graphics3D.render(target, camera, body)).
    An offscreen render target for 3D content: a color texture plus a depth buffer, optionally multisampled (MSAA).
    How a texture is filtered and wrapped when sampled.
     
     
    CPU-side pixels for a 2D texture: tightly packed 8-bit RGBA, row-major from the top-left, tagged with the ColorSpace the values are authored in.
    A vertex attribute semantic and its component count.