Topic domain
Computer Graphics
Modeling light, geometry, and images.
- Articles
- 80
- Clusters
- 8
- Foundational
- 24
- Intermediate
- 32
- Advanced
- 24
Meshes, splines, and implicit surfaces.
- Indexed Triangle Meshes and the Vertex Cache
- Consistent Orientation and Signed Volume From a Triangle Mesh
- Half-Edge Adjacency and Constant-Time Mesh Traversal
- Catmull-Clark Subdivision and What the Limit Surface Actually Is
- NURBS Knot Vectors and What Rational Weights Do
- Signed Distance Fields as an Implicit Surface
Coverage, depth, and antialiasing.
- Half-Space Coverage and the Edge Function Test
- Triangle Setup: Subpixel Snapping and the Bounding Box
- Why Depth Interpolates as 1/w and Screen-Space Attributes Do Not
- Guard-Band Clipping and Why Vertices Are Cut Before the Divide
- Multisampling: Coverage Samples Without Shading Every Sample
- Exact Area Coverage and the A-Buffer
Ray Tracing
10Intersections, acceleration structures, and sampling.
- Ray-Triangle Intersection and the Watertight Edge Test
- Solving Quadratic Ray Intersections Without Losing the Far Root
- Ray Parameter Intervals and the Origin Offset Problem
- The Slab Test for Boxes and the Inverse-Direction Shortcut
- Surface Area Heuristic and the Cost Model Behind BVH Splits
- Ordered BVH Traversal and the Per-Ray Stack
BRDFs, global illumination, and materials.
- Radiance, Irradiance, and the Units a BRDF Is Written In
- Fresnel Reflectance for Dielectrics and Conductors
- The Rendering Equation as a Linear Operator
- Microfacet Distributions and the Shadowing Term That Balances Them
- Compensating for Multiple Scattering in Rough Specular Models
- Sampling BRDF Lobes and Choosing Between Them
Texturing
10Sampling, filtering, and mipmaps.
- Texel Grids, Normalized Coordinates, and Wrap Addressing
- Bilinear Weighting and the Tent Reconstruction Filter
- Mip Chain Construction by Box Reduction
- Choosing a Mip Level from Screen-Space Derivatives
- Anisotropic Footprint Filtering Along the Major Axis
- Block Compression and the Endpoints It Stores
Animation
10Keyframes, skinning, and simulation.
- Keyframe Interpolation and the Cubic Hermite Segment
- Slerp, Squad, and the Cost of Interpolating Rotations
- From Joint Hierarchy to Skinning Palette
- Linear Blend Skinning and the Candy-Wrapper Collapse
- Keyframe Reduction and the Error Metric That Decides It
- Inverse Kinematics and the Jacobian It Iterates
Color spaces, tone mapping, and HDR.
- Why Blending in Gamma-Encoded Space Produces Wrong Colours
- The sRGB Transfer Function: Piecewise Curve, Constants, and Decode Cost
- The CIE 1931 Colour Matching Functions and What Chromaticity Discards
- Deriving an RGB-to-XYZ Matrix from Primaries and a White Point
- Why Every Conversion Should Pass Through XYZ, and When It Should Not
- Banding, Bit Depth, and the Trade-offs of Error Diffusion Dither
Formats, pipelines, and asset conditioning.
- PNG Chunk Framing and Scanline Filter Reconstruction
- glTF Buffer Views, Accessor Strides, and Matrix Column Padding
- Axis Conventions, Handedness, and Unit Scale on Import
- Channel Packing: Which Data Belongs in Which Channel
- Block-Compressed Texture Bit Rates and What the Blocks Cost
- UV Chart Packing and Why Gutters Are Measured in Texels
All Computer Graphics articles
- Oct 22, 2026 Ray-Triangle Intersection and the Watertight Edge Test How the ray-triangle test is derived from Cramer rule, why shared edges produce pinhole artifacts, and what a watertight edge function buys and costs.
- Oct 8, 2026 Conservative Rasterization and the Guarantee of Non-Empty Coverage Standard rasterization may miss a pixel that a triangle touches, which breaks shadow volumes and voxelization; conservative rasterization over-covers by a bounded margin to make touching sufficient.
- Oct 7, 2026 Linear Blend Skinning and the Candy-Wrapper Collapse Why averaging joint matrices produces volume loss and pinching on twisted limbs, how dual quaternions replace the average, and why dual quaternion skinning is not always the better choice.
- Sep 21, 2026 Half-Edge Adjacency and Constant-Time Mesh Traversal How splitting each edge into two directed halves makes neighbour queries pointer dereferences, what the structure costs in bytes, and where it refuses to apply.
- Sep 18, 2026 Multisampling: Coverage Samples Without Shading Every Sample MSAA asks the coverage question at several positions per pixel but shades only one, and the gap between the two is where its bandwidth advantage and its characteristic failures live.
- Sep 18, 2026 Surface Area Heuristic and the Cost Model Behind BVH Splits Why the SAH estimates traversal work with surface area, how the sweep builds the candidate list in linear time, and when object splitting beats spatial splitting.
- Sep 17, 2026 Radiance, Irradiance, and the Units a BRDF Is Written In How solid angle separates radiance from irradiance, why a BRDF is a ratio of two different radiometric quantities, and what the resulting numbers look like for ordinary surfaces.
- Sep 14, 2026 Choosing a Mip Level from Screen-Space Derivatives How four partial derivatives become one level-of-detail value, why the maximum of the axes beats the average, and where trilinear blending and LOD bias change the answer.
- Sep 13, 2026 Mip Chain Construction by Box Reduction What averaging four texels into one actually preserves, where the filter sits against the ideal low-pass, and why sRGB, normal maps, and odd dimensions each need different treatment.
- Sep 12, 2026 From Joint Hierarchy to Skinning Palette How parent-relative joint transforms compose into world matrices, why the bind pose is stored as an inverse, and what a skeleton costs to upload every frame.
- Sep 9, 2026 UV Chart Packing and Why Gutters Are Measured in Texels How unwrapped charts are rotated and packed into one atlas, what determines the padding between them, and why a bilinear tap can bleed across an island.
- Sep 1, 2026 NURBS Knot Vectors and What Rational Weights Do How a knot vector fixes the basis, why homogeneous coordinates let one polynomial form describe exact circles, and what non-uniform spacing costs downstream.
- Sep 1, 2026 The Split-Sum Approximation for Specular Image-Based Lighting How a prefiltered environment map plus a two-channel BRDF lookup table replaces a per-shading-point integral, what assumptions the factorization hides, and where the grazing-angle error appears.
- Aug 25, 2026 Mesh Parameterization, Cuts, and the Distortion That Cannot Be Removed Mapping a surface to the plane requires cutting it into a disk, and every planar map of a curved surface must distort either angles or areas by a measurable amount.
- Aug 19, 2026 Robust Mesh Booleans and the Exact-Arithmetic Escape Union and difference on triangle meshes fail on coplanar faces and edge-on-edge contacts, and the standard answer is to compute the intersections exactly, then round once.
- Aug 4, 2026 Deriving an RGB-to-XYZ Matrix from Primaries and a White Point The linear algebra behind a colour space definition: why eight numbers — four chromaticities and a white — determine a 3x3 matrix, and how the solve works.
- Jul 24, 2026 Screen-Space Binning in Tiled Rasterizers Sorting primitives into per-tile bins before shading gives locality of depth and colour access, makes deferred shading affordable, and costs a variable amount of memory per tile.
- Jul 8, 2026 OpenEXR Scanline and Tiled Layouts with Half-Float Pixels How EXR stores channels in separate planes, what the half type buys over float and where it runs out, and why the tile descriptor changes random-access cost.
- Jul 3, 2026 Consistent Orientation and Signed Volume From a Triangle Mesh How triangle winding encodes which side of a surface is outside, how to propagate it across a mesh, and how the divergence theorem turns an oriented mesh into a volume.
- Jun 23, 2026 Catmull-Clark Subdivision and What the Limit Surface Actually Is The three averaging rules that turn a control cage into quads, why extraordinary vertices break the bicubic patch analogy, and how to evaluate the limit without subdividing.
- Jun 16, 2026 Filtering Normal Maps Without Flattening the Detail Why averaging encoded normals is not the same as averaging the surfaces they describe, what renormalization and variance preservation each recover, and how to choose between them.
- May 13, 2026 Channel Packing: Which Data Belongs in Which Channel Why roughness, metallic, ambient occlusion, and height share one texture, how the choice of channel is constrained by compression, and what breaks at the seams.
- Apr 23, 2026 Bilinear Weighting and the Tent Reconstruction Filter How four texel taps and two linear interpolants reconstruct a continuous signal, why the resulting kernel is a tent, and what that kernel does to frequencies above half the texel rate.
- Apr 21, 2026 Banding, Bit Depth, and the Trade-offs of Error Diffusion Dither Why quantization on an 8-bit gradient shows contours, how the eye's contrast sensitivity makes them visible, and what ordered and error-diffusion dither cost.
- Apr 12, 2026 Block-Compressed Texture Bit Rates and What the Blocks Cost How fixed-size blocks turn a texture into a constant byte budget, why the smallest block is a fixed 16 bytes, and where the rate-distortion trade actually lands.
- Apr 2, 2026 The CIE 1931 Colour Matching Functions and What Chromaticity Discards How two colour matches determine three unknowns, why the 1931 observer needs negative values, and what information survives when XYZ is projected to xy.
- Mar 24, 2026 Marching Cubes and the Ambiguity at a Cell Face How a 256-entry lookup table turns a scalar grid into triangles, why the case count is not 256, and how a saddle on a cell face can be triangulated two incompatible ways.
- Mar 20, 2026 Inverse Kinematics and the Jacobian It Iterates How an end-effector target becomes joint angles, why the Jacobian transpose and pseudoinverse solve the same problem differently, and where singularities make both of them fail.
- Mar 16, 2026 Why Every Conversion Should Pass Through XYZ, and When It Should Not Chaining RGB-to-RGB transforms as a single matrix multiplies the errors of both, discards gamut information, and breaks the ability to apply chromatic adaptation.
- Mar 15, 2026 Additive Animation Layers and the Weights That Normalize Them How a delta pose composes onto a base without double-counting, why blend weights need a normalized space, and how the same arithmetic mixes clips, layers, and states.
- Feb 5, 2026 Guard-Band Clipping and Why Vertices Are Cut Before the Divide Clipping happens in homogeneous space because the perspective divide is undefined behind the eye, and a guard band lets most partially-visible triangles skip the clipper entirely.
- Jan 12, 2026 Half-Space Coverage and the Edge Function Test How a rasterizer decides which pixels a triangle owns, why the test is written as three signed line equations, and what the top-left rule does for shared edges.
- Dec 29, 2025 Content-Addressed Cache Keys for Incremental Asset Builds Why a timestamp is the wrong invalidation signal, what belongs in a hash that keys an asset build, and how a stale cache entry survives a settings change.
- Dec 17, 2025 Anisotropic Footprint Filtering Along the Major Axis Why a single mip level cannot represent an elongated pixel footprint, how an anisotropic sampler builds the ellipse, and where the extra taps go.
- Dec 8, 2025 Gamut Mapping and Rendering Intents: What Happens When a Colour Does Not Fit The four ICC rendering intents as four answers to the same clipping problem, and the difference between clipping in RGB, in a perceptual space, and by projection.
- Dec 4, 2025 Keyframe Reduction and the Error Metric That Decides It How a dense sampled curve becomes a sparse key list, why the error must be measured against the reconstructed curve and not the original samples, and where per-channel reduction breaks a skeleton.
- Oct 31, 2025 The ST 2084 Perceptual Quantizer: How an Absolute Luminance Curve Encodes 10,000 nits Why PQ is defined in absolute nits instead of relative intensity, the Barten-model design behind its 10,000-nit ceiling, and what 12-bit code values buy.
- Oct 22, 2025 Ordered BVH Traversal and the Per-Ray Stack How front-to-back descent keeps the ray interval shrinking, why the stack depth is bounded by tree height rather than scene size, and what happens when it is not.
- Oct 22, 2025 Ray Parameter Intervals and the Origin Offset Problem Why a secondary ray that starts exactly on a surface hits it again, what a scaled epsilon actually moves, and how an interval filter differs from a shadow-ray flag.
- Oct 11, 2025 Microfacet Distributions and the Shadowing Term That Balances Them Why a half-vector distribution alone gives the wrong energy, how Smith masking accounts for one microsurface occluding another, and what correlated visibility changes.
- Aug 6, 2025 Vertex Attribute Quantization and the Range It Depends On How positions and normals become 16-bit integers with a per-mesh scale and bias, where the error lands, and why renormalization after fetch is mandatory.
- Aug 5, 2025 Swizzled Texel Layouts and the Cost of a Bilinear Fetch Why row-major storage makes a four-texel fetch hit two cache lines or more, how tiled and Morton-ordered layouts repair it, and where the repair stops paying.
- Jul 25, 2025 Sampling BRDF Lobes and Choosing Between Them How a probability density over outgoing directions turns a reflectance integral into a weighted average, why GGX sampling has a closed form, and how lobe selection probabilities affect variance.
- Jul 14, 2025 Stability Limits of Explicit Integration in Dynamics Why forward Euler and Verlet diverge above a step size bound, where the bound comes from, and how a hair or cloth solver stays stable past the limit that breaks a rigid-body integrator.
- Jun 26, 2025 The Slab Test for Boxes and the Inverse-Direction Shortcut How the ray-box test becomes three interval intersections, why precomputed reciprocals turn axis-parallel rays into NaN, and what the IEEE comparison rules do with it.
- Jun 24, 2025 Position-Based Dynamics and the Projection It Iterates How a cloth or rope is simulated by moving points to satisfy constraints directly, why the solver iterates rather than solving, and how stiffness becomes an iteration count.
- Apr 11, 2025 Ray Differentials for Texture Lookups Along a Ray How a pixel footprint propagates through reflection and refraction, why the propagated footprint can collapse or explode, and what to clamp when it does.
- Mar 28, 2025 KTX2 Containers and What Basis Transcoding Actually Saves How a KTX2 file stores mip levels, faces, and layers in one level index, and why a supercompressed texture can be transcoded to several GPU formats without re-encoding.
- Mar 13, 2025 Block Compression and the Endpoints It Stores How a fixed-rate block codec reconstructs four colours from two endpoints, why the block grid forces independent decoding, and what that costs at mip level boundaries.
- Mar 9, 2025 Tone Mapping Operators: Reinhard, Filmic, and Why a Clamp Loses the Image What happens when scene luminance outruns a display, why a hard clip wastes the highlight, and how the three families of operators compress the range.
- Mar 7, 2025 Why Blending in Gamma-Encoded Space Produces Wrong Colours What the display transfer function does to a weighted average of two colours, why source-over compositing belongs in linear light, and where the correction sits in a renderer.
- Feb 21, 2025 Reversed-Z: Using Floating-Point Depth Without Wasting It Standard depth mapping spends almost all of a floating-point buffer near the near plane; reversing it to 1 at the near plane and 0 at the far plane redistributes precision where it is needed.
- Feb 20, 2025 PNG Chunk Framing and Scanline Filter Reconstruction How PNG splits an image into type-tagged chunks around one deflate stream, and why the five scanline filters must be undone before pixels exist at all.
- Jan 4, 2025 Texel Grids, Normalized Coordinates, and Wrap Addressing Where texel centers sit inside a texture, how a normalized coordinate addresses them without an off-by-half error, and what each wrap mode does past the edge.
- Dec 10, 2024 Triangle Setup: Subpixel Snapping and the Bounding Box What a rasterizer computes before it touches a single pixel, how vertex coordinates are quantized to a fixed-point grid, and why the bounding box is the cheapest large win in the pipeline.
- Oct 28, 2024 Why Depth Interpolates as 1/w and Screen-Space Attributes Do Not Perspective projection destroys linearity in screen space, so barycentric interpolation of depth requires the reciprocal of w, and the same reciprocal distributes every varying correctly.
- Oct 19, 2024 Low-Discrepancy Sequences and the Correlation They Leave Behind How the radical inverse builds a progressive sequence, what discrepancy measures, and why a sampled sequence strands its structure at correlated dimensions.
- Oct 18, 2024 Compensating for Multiple Scattering in Rough Specular Models Why a single-scattering microfacet lobe loses energy as roughness rises, and how a tabulated directional albedo plus a complement lobe restores the budget without breaking reciprocity.
- Oct 4, 2024 Slerp, Squad, and the Cost of Interpolating Rotations Why component-wise quaternion interpolation fails, what slerp computes and what it costs, and how squad and exponential maps extend the same idea to a whole curve.
- Sep 29, 2024 Solving Quadratic Ray Intersections Without Losing the Far Root Why the textbook quadratic formula fails for distant spheres, how the stable form differs by an addition of magnitudes, and what the determinant sign means geometrically.
- Sep 6, 2024 Spherical Harmonics for Irradiance Probes How low-order spherical harmonic coefficients compress a lighting environment, what convolution by the clamped cosine does to those coefficients, and why ringing appears at sharp boundaries.
- Aug 19, 2024 The Rendering Equation as a Linear Operator How the rendering equation is written as a fixed-point problem, what the Neumann series expansion means physically, and why convergence depends on the spectral radius of the transport operator.
- Jun 14, 2024 Page Tables for Sparse Virtual Textures How a texture is addressed through a page table, what happens when a page is missing during sampling, and how feedback selects the pages to load.
- Jun 12, 2024 Axis Conventions, Handedness, and Unit Scale on Import Which geometry formats declare their coordinate convention, which leave it implicit, and why converting between them is a reflection rather than a rotation.
- Mar 27, 2024 Layered Materials and the Fresnel Coupling Between Coats and Substrates How a clear coat sits on a base material, why the transmitted share at each interface is not simply one minus the reflected share, and how internal reflection traps light inside a layer.
- Jan 4, 2024 Two-Level Hierarchies for Instanced Scenes How a top-level structure over instances plus a shared bottom-level mesh keeps memory flat, what the transform costs per ray, and why overlapping instances defeat the pruning.
- Aug 6, 2023 Quadric Error Metrics and What an Edge Collapse Actually Costs Each vertex accumulates the planes it can see as a 4x4 symmetric matrix; collapsing an edge sums two of them, and the result predicts geometric error without measuring it.
- Aug 4, 2023 Early Depth Tests and the Ordering Constraints They Impose Rejecting hidden fragments before shading is the largest single saving in a raster pipeline, and it is legal only when the fragment shader is known not to change depth or discard.
- Jun 21, 2023 Signed Distance Fields as an Implicit Surface How a function of position replaces a mesh, why the gradient gives the normal, how min and max build constructive solid geometry, and what storage a sampled field needs.
- May 2, 2023 glTF Buffer Views, Accessor Strides, and Matrix Column Padding How buffer views and accessors describe typed views over one binary blob, what the alignment rules forbid, and why matrix columns carry padding bytes.
- Apr 10, 2023 The sRGB Transfer Function: Piecewise Curve, Constants, and Decode Cost How the sRGB encoding is defined, why it bends into a straight line near black, and what the exact thresholds cost in a shader or a texture lookup table.
- Mar 2, 2023 Fresnel Reflectance for Dielectrics and Conductors Why reflectance rises to one at grazing angles, how the index of refraction and extinction coefficient determine the normal-incidence value, and how Schlick approximation departs from the exact curves.
- Sep 13, 2022 Subsurface Scattering and the Diffusion Approximation How multiple scattering inside a translucent medium turns a BRDF into a spatial integral, what the reduced scattering coefficient measures, and where the dipole solution stops applying.
- May 19, 2022 Keyframe Interpolation and the Cubic Hermite Segment How a sparse animation channel becomes a continuous function of time, why cubic tangents carry units of value per second, and which degenerate segments an evaluator must survive.
- May 14, 2022 Compressed BVH Nodes and Quantized Bounds How bounds shrink to byte and short quanta, what the inverse mapping costs per test, and why the compressed tree changes traversal arithmetic and memory traffic.
- May 4, 2022 Indexed Triangle Meshes and the Vertex Cache Why a triangle list repeats every vertex, what an index buffer saves in bytes, and how vertex ordering interacts with a fixed-size post-transform cache.
- Apr 20, 2022 Sequential Impulse and the Contact It Solves One Pair at a Time How a rigid-body contact constraint is solved as a sequence of per-contact impulses, why warm starting makes the solver converge, and what happens when too many contacts share one body.
- Feb 21, 2022 Exact Area Coverage and the A-Buffer Computing a pixel's covered fraction analytically instead of sampling it, the data structure that keeps fragment lists per pixel, and the memory cost that keeps the approach off most GPUs.
- Dec 31, 2021 Stratified Pixel Sampling and the Aliasing of Regular Grids Why a fixed sample grid folds high-frequency geometry into moire patterns, how stratification bounds the per-stratum count, and what the resulting error actually scales as.
- Dec 17, 2021 Why Tone Mapping Shifts Hue, and the Two Fixes That Keep Colour Stable The nonlinear RGB curve that pushes highlights toward the last-saturating primary, why luminance-only compression avoids it, and what each approach costs.