Resources Numerical accuracy

Calculations

Every calculation under our calculation policies: what it works out, its formula and the precision it runs at. Open one to see its code as it is in the released app.

  • 6,917 calculations in 1,248 source files
  • 143 exact
  • 6,286 in 64-bit
  • 335 with a 32-bit step
  • Last reviewed

Calculations

  • Light group gains

    The color and brightness factor of each light group in a light mix.

    gain = color (linear AP1) × 2^stops

    Rendered picture: mixing, post and color render/pt-mix.js
    • BimCraft
    • ModelCraft
    64-bit
  • Mixed picture

    The linear picture made by adding the light groups with their gains.

    pixel = Σ over groups of (group sum × gain) ÷ samples

    Rendered picture: mixing, post and color render/pt-mix.js
    • BimCraft
    • ModelCraft
    32-bit in part
  • Picture or lighting element from the sums

    The linear picture, light mix or one lighting element as a mean per pixel, handed to the post step.

    mean = Σ samples ÷ sample count

    Rendered picture: mixing, post and color render/pt-mix.js
    • BimCraft
    • ModelCraft
    32-bit in part
  • ACES filmic curve

    The default tone curve.

    f(x) = (x (x + 0.0245786) − 0.000090537) ÷ (x (0.983729 x + 0.4329510) + 0.238081)

    Rendered picture: mixing, post and color render/pt-spec.js
    • BimCraft
    • ModelCraft
    64-bit
  • sRGB encoding

    The curve from display-linear values to stored sRGB values.

    c ≤ 0.0031308: 12.92 c; else 1.055 c^(1 ÷ 2.4) − 0.055

    Rendered picture: mixing, post and color render/pt-spec.js
    • BimCraft
    • ModelCraft
    64-bit
  • One pixel to 8 bits

    A pixel's mean color turned into display bytes with the default settings.

    byte = round(sRGB(ACES(Rec.709(AP1 × wb))) × 255)

    Rendered picture: mixing, post and color render/pt-spec.js
    • BimCraft
    • ModelCraft
    64-bit
  • Sample sums on the graphics card

    The running sum of every sample's color for a pixel when the render runs on the graphics card.

    ACC[pixel] += max(sample, 0)

    Rendered picture: mixing, post and color render/pt-wgsl.js
    • BimCraft
    • ModelCraft
    32-bit in part
  • Denoiser exposure scale

    The scale that brings the picture to the brightness the denoising network expects.

    scale = 0.18 ÷ 2^(mean of log₂ L over 16 × 16-pixel bins)

    Rendered picture: mixing, post and color render/pt-denoise.js
    • BimCraft
    • ModelCraft
    64-bit
  • Denoiser input

    The color, albedo and normal values given to the denoising network.

    Rendered picture: mixing, post and color render/pt-denoise.js
    • BimCraft
    • ModelCraft
    32-bit in part
  • Denoiser output

    The denoised picture taken back to linear values.

    linear = inverse curve(x ÷ norm) ÷ scale

    Rendered picture: mixing, post and color render/pt-denoise.js
    • BimCraft
    • ModelCraft
    32-bit in part
  • Triangles in world space

    Every mesh triangle moved by its placement, cut by the section planes and stored for the kernels.

    Path tracer scene, light and sky buffers render/pt-pack.js
    • BimCraft
    • ModelCraft
    32-bit, display only
  • Derived material values

    The relative refractive index, coat Fresnel average, extinction and dispersion term of a material record.

    μt = −ln(color) ÷ depth; B = (η − 1) ÷ ((abbe ÷ scale) × (1 ÷ 0.4861² − 1 ÷ 0.6563²))

    Path tracer scene, light and sky buffers render/pt-pack.js
    • BimCraft
    • ModelCraft
    32-bit, display only
  • Physical sky color

    The sky's color in a direction for a sun position and haze.

    Path tracer scene, light and sky buffers render/pt-sky.js
    • BimCraft
    • ModelCraft
    32-bit, display only
  • Light profile grid

    A lamp's IES light distribution as a grid of direction multipliers.

    multiplier = candela(θ, φ) × 4π ÷ flux

    Path tracer scene, light and sky buffers render/pt-ies.js
    • BimCraft
    • ModelCraft
    32-bit, display only
  • Adding samples to a pixel

    The sum of sample colors and the sample count of every pixel in the reference tracer.

    Path tracer kernels render/pt-ref.js
    • BimCraft
    • ModelCraft
    32-bit, display only
  • Fresnel reflectance of glass

    The share of light a clear surface reflects at an angle.

    F = (r∥² + r⊥²) ÷ 2

    Path tracer kernels render/pt-ggx.js
    • BimCraft
    • ModelCraft
    32-bit, display only
  • Sample position

    The random-like number in [0, 1) used for one dimension of one sample of one pixel.

    Path tracer kernels render/pt-sampler.js
    • BimCraft
    • ModelCraft
    32-bit, display only
  • Adaptive sampling test

    Decides when a pixel has had enough samples.

    v = max(0, (S₂ − S₁² ÷ J) ÷ (J − 1)); stop when √(v ÷ J) ≤ noise × (μ + 0.02)

    Path tracer kernels render/pt-adapt.js
    • BimCraft
    • ModelCraft
    32-bit, display only
  • Lamp strength

    A lamp's lumens turned into the strength the renderers use.

    point or spot: Φ ÷ 4π × 0.02; panel: Φ ÷ π × 0.02

    Fast render lights and texture placement render/looks.js
    • BimCraft
    • ModelCraft
    32-bit, display only
  • Sun direction for a pass

    A direction inside a small cone around the sun, one per render pass, for soft shadow edges.

    r = √h₅ × tan(degrees × π ÷ 180); a = 2π h₇

    Fast render lights and texture placement render/looks.js
    • BimCraft
    • ModelCraft
    32-bit, display only
  • Texture coordinates of a point

    Where a point of a surface falls on its material's texture, in meters along and up the surface.

    u = p · (up × n) ÷ |up × n|; v = p · (n × u axis)

    Fast render lights and texture placement render/materials.js
    • BimCraft
    • ModelCraft
    32-bit, display only
  • Axis placement

    The origin and three unit axes of an AXIS2_PLACEMENT_3D.

    z = axis ÷ |axis|; x = (ref − z (ref·z)) ÷ |…|; y = z × x

    STEP curves and surfaces: points from parameters step/geom.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Circle

    The point at an angle on a circle, and the angle of a point.

    P(t) = o + r cos t · x + r sin t · y; t = atan2(l_y, l_x)

    STEP curves and surfaces: points from parameters step/geom.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Polyline

    The point at a parameter along a polyline, and the parameter nearest a point.

    P(t) = (1 − f) Pᵢ + f Pᵢ₊₁, i = ⌊t⌋, f = t − i

    STEP curves and surfaces: points from parameters step/geom.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Knot span

    Which knot interval a B-spline parameter falls in.

    STEP curves and surfaces: points from parameters step/geom.js
    • BimCraft
    • ModelCraft
    • PartCraft
    Exact
  • B-spline basis functions

    The p + 1 basis functions that are not zero at a parameter.

    N_{i,0} = 1; N_{i,j} built from (t − u) ÷ (u_b − u_a) terms in the Cox–de Boor triangular table

    STEP curves and surfaces: points from parameters step/geom.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • B-spline curve point

    The point on a B-spline or rational B-spline curve at a parameter.

    C(t) = Σ Nᵢ wᵢ Pᵢ ÷ Σ Nᵢ wᵢ

    STEP curves and surfaces: points from parameters step/geom.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Is a B-spline curve closed

    Decides whether a B-spline curve's two ends meet, so it can be treated as periodic.

    |C(t₀) − C(t₁)| < 1e-9 × max(1, max |Pᵢ|)

    STEP curves and surfaces: points from parameters step/geom.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • B-spline surface point

    The point on a B-spline or rational B-spline surface at (u, v).

    S(u, v) = Σ Σ Nᵢ(u) Nⱼ(v) wᵢⱼ Pᵢⱼ ÷ Σ Σ Nᵢ(u) Nⱼ(v) wᵢⱼ

    STEP curves and surfaces: points from parameters step/geom.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Seams and poles of a B-spline surface

    Decides which direction of a B-spline surface closes on itself and which boundary rows collapse to a point.

    two points are the same when |a − b| < 1e-7 × max(1, |a|)

    STEP curves and surfaces: points from parameters step/geom.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Cylinder

    The point at (angle, height) on a cylinder, and the angle and height of a point.

    S(u, v) = o + r cos u · x + r sin u · y + v · z

    STEP curves and surfaces: points from parameters step/geom.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Cone

    The point at (angle, distance along the axis) on a cone, and the inverse.

    r(v) = R + v tan α; v = ((ρ − R) tan α + l_z) ÷ (tan² α + 1)

    STEP curves and surfaces: points from parameters step/geom.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Sphere

    The point at (longitude, latitude) on a sphere, and the inverse.

    S(u, v) = o + r cos v cos u · x + r cos v sin u · y + r sin v · z

    STEP curves and surfaces: points from parameters step/geom.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Torus

    The point at two angles on a torus, and the inverse.

    c = R + r cos v; S(u, v) = o + c cos u · x + c sin u · y + r sin v · z

    STEP curves and surfaces: points from parameters step/geom.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Surface of revolution

    The point of a profile curve turned about an axis by an angle, and the inverse.

    S(u, v) = o + h z + rr cos u + (z × rr) sin u, h = (C(v) − o)·z, rr = (C(v) − o) − h z

    STEP curves and surfaces: points from parameters step/geom.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Angle of a point on an ellipse

    The ellipse parameter of the point on the ellipse nearest a given point.

    f(t) = (E(t) − q)·E′(t) = 0, solved by t ← t − f ÷ f′

    STEP curves and surfaces: parameters from points step/geom.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Parameter of a point on a B-spline curve

    The curve parameter nearest a given point.

    STEP curves and surfaces: parameters from points step/geom.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Parameters of a point on a B-spline surface

    The (u, v) of the surface point nearest a given point.

    [S_u·S_u S_u·S_v; S_u·S_v S_v·S_v] d = −[r·S_u; r·S_v], r = S(u, v) − q

    STEP curves and surfaces: parameters from points step/geom.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Surface of linear extrusion

    The point of a curve swept along a vector, and the (u, v) of a point.

    S(u, v) = C(u) + v · vec; v = (q − C(u))·d ÷ |vec|, u = project(q − v · vec)

    STEP curves and surfaces: parameters from points step/geom.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Offset surface

    The point of a surface moved a distance along its normal.

    S_off(u, v) = S(u, v) + d · n, n = (ΔS_u × ΔS_v) ÷ |…|

    STEP curves and surfaces: parameters from points step/geom.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Length and angle units

    The file's length unit in millimeters and its plane-angle unit in radians.

    mm = prefix × 1000 for a meter; a conversion-based unit = its value × its base unit

    STEP import: units, points and assembly placement step/read.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Point coordinates

    A CARTESIAN_POINT in millimeters.

    (x, y, z) × unit in mm

    STEP import: units, points and assembly placement step/read.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Radii and cone angles

    The radius of a cylinder, cone, sphere or torus in millimeters and a cone's half angle in radians.

    r × unit in mm; α × angle unit, accepted when 0 < |α| < π ÷ 2

    STEP import: units, points and assembly placement step/read.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Knot vectors

    The full knot vector of a B-spline from the file's knots and multiplicities, or the one a uniform, quasi-uniform or Bézier form implies.

    STEP import: units, points and assembly placement step/read.js
    • BimCraft
    • ModelCraft
    • PartCraft
    Exact
  • Model size and chord tolerance

    The size of the model and the distance a triangle may stray from a curved face.

    size = diagonal of the box around every point; tol = max(4e-4 × size, 1e-4 mm)

    STEP import: units, points and assembly placement step/read.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Closing a loop of edges

    Drops the last point of an edge loop when it repeats the first.

    |first − last| ≤ 0.01 × tol

    STEP import: units, points and assembly placement step/read.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Placement matrices

    A placement as a 4 × 4 matrix, the product of two and the inverse of one.

    M⁻¹ = [Rᵀ, −Rᵀ t]

    STEP import: units, points and assembly placement step/read.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • A component placed in its assembly

    The transform that carries a component's coordinates into the assembly that uses it.

    T = M(A₂) × M(A₁)⁻¹

    STEP import: units, points and assembly placement step/read.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Placed vertex positions

    Every vertex of a solid moved to its place and stored for the app.

    p′ = R p + t

    STEP import: units, points and assembly placement step/read.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Faceted faces

    Triangles for a flat face given as loops of points.

    n = Σ ((yᵢ − yⱼ)(zᵢ + zⱼ), (zᵢ − zⱼ)(xᵢ + xⱼ), (xᵢ − xⱼ)(yᵢ + yⱼ))

    STEP import: units, points and assembly placement step/read.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit

A calculation is added only after its source was read. Each statement can be checked in the code shown on its policy's page; the app repositories are public. When a release changes a calculation, its page says so until it has been read again.