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

  • Blend of two rotations

    The rotation part of a pose between two keys.

    q = (sin((1 − k)θ) a + sin(kθ) b) ÷ sin θ, θ = acos(a · b)

    Animation keys, curves and poses render/anim.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Angles to quaternion

    XYZ rotation angles in degrees turned into a unit quaternion.

    q = q_z × q_y × q_x, each from sin and cos of half the angle

    Animation keys, curves and poses render/anim.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Quaternion to angles

    XYZ rotation angles in degrees from a unit quaternion, chosen close to the key before.

    Animation keys, curves and poses render/anim.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Object placement at a time

    A moving object's placement matrix between two matrix keys.

    Animation keys, curves and poses render/anim.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Time inside a clip

    The time of a saved action that a clip plays at a given timeline time.

    x = (t − start) ÷ scale; local = from + (x mod span)

    Animation keys, curves and poses render/anim.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Mixing a clip into a pose

    An object's placement when a clip is blended in at less than full influence or added on top.

    Animation keys, curves and poses render/anim.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Driver expression

    The value of a property worked out from other properties by a typed expression.

    Animation keys, curves and poses render/anim.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Camera keys from saved scenes

    The key times of a walkthrough built from saved scenes with a move time and a hold time.

    t accumulates move and hold; key time = round₀.₀₀₁(t)

    Animation keys, curves and poses render/anim.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Default gravity for rigid bodies

    The gravity a physics bake starts from when the file sets none.

    g = (0, 0, −9.81) m/s²

    Animation keys, curves and poses render/anim.js
    • BimCraft
    • ModelCraft
    • PartCraft
    64-bit
  • Rounding of manifest numbers

    The rounding every number in the manifest goes through.

    round(x, k) = round(x × 10ᵏ) ÷ 10ᵏ, k = 6 unless stated

    Render hand-off manifest render/handoff.js
    • BimCraft
    • ModelCraft
    64-bit
  • Color to linear values

    A hex color turned into the linear Rec.709 triple the manifest carries.

    c ≤ 0.04045: c ÷ 12.92; else ((c + 0.055) ÷ 1.055)^2.4

    Render hand-off manifest render/handoff.js
    • BimCraft
    • ModelCraft
    64-bit
  • Points and directions on the stage

    A point or a direction of the scene moved to the USD stage's coordinates.

    p′ = M p; d′ = (M d) ÷ |M d|

    Render hand-off manifest render/handoff.js
    • BimCraft
    • ModelCraft
    64-bit
  • Camera entry

    The camera's matrices, position, view direction, aspect and view angle or height.

    fovY = 2 atan(1 ÷ |P₅|) × 180 ÷ π; ortho height = 2 ÷ |P₅|

    Render hand-off manifest render/handoff.js
    • BimCraft
    • ModelCraft
    64-bit
  • Sun and lamp entries

    The sun's direction and strength, and each lamp's lumens, color, position, aim and size.

    Render hand-off manifest render/handoff.js
    • BimCraft
    • ModelCraft
    64-bit
  • Scene, exposure and white balance entries

    The ground height, sample count, exposure in stops, shutter time and white-balance gains.

    Render hand-off manifest render/handoff.js
    • BimCraft
    • ModelCraft
    64-bit
  • Animation frames entry

    The start and end time, frame rate, frame count and the camera matrix of each frame.

    Render hand-off manifest render/handoff.js
    • BimCraft
    • ModelCraft
    64-bit
  • Material values

    The OpenPBR parameters written for each material, where they differ from the defaults.

    Render hand-off manifest render/handoff.js
    • BimCraft
    • ModelCraft
    64-bit
  • Exposure value at ISO 100

    The EV figure the render dialog shows for the chosen f-stop, shutter time and ISO.

    EV = log₂(N² ÷ t) − log₂(S ÷ 100)

    Camera exposure and white balance render/pt-camera.js
    • BimCraft
    • ModelCraft
    64-bit
  • Exposure in stops

    The stops added to the picture's exposure from the brightness slider and, in camera mode, the f-stop, shutter and ISO.

    stops = slider + log₂(t × S × 256 ÷ N²)

    Camera exposure and white balance render/pt-camera.js
    • BimCraft
    • ModelCraft
    64-bit
  • Color temperature to chromaticity

    The CIE xy color of light of a given temperature in kelvin.

    x = a ÷ T³ + b ÷ T² + c ÷ T + d; y = polynomial in x

    Camera exposure and white balance render/pt-camera.js
    • BimCraft
    • ModelCraft
    64-bit
  • White-balance gains

    The three color gains that make light of the chosen temperature show as white.

    gain = (ref ÷ w) × (Y(w) ÷ Y(ref))

    Camera exposure and white balance render/pt-camera.js
    • BimCraft
    • ModelCraft
    64-bit
  • Picked focus distance

    The distance from the camera to the clicked surface, measured along the view direction.

    focus = round(−(d · view axis ÷ |view axis|) × t × 100) ÷ 100

    Focus distance picked in the view render/ipr.js
    • BimCraft
    • ModelCraft
    32-bit in part
  • Linear picture to display values

    Each pixel's final red, green and blue from the linear picture and the post settings.

    AP1 × wb → Rec.709 × 2^exposure → vignette → highlights → contrast → view transform → sRGB → 8 bits

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

    The tone curve that brings scene light into the display's range.

    Rendered picture: mixing, post and color render/pt-post.js
    • BimCraft
    • ModelCraft
    64-bit
  • Blur for bloom

    The wide blur of the picture that bloom blends back in.

    r = max(1, round(√(12σ² ÷ 3 + 1) ÷ 2)); three box blurs of radius r per axis

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

    The picture blended with three blurs of itself.

    out = img × (1 − a) + (0.5 b₁ + 0.3 b₂ + 0.2 b₃) × a

    Rendered picture: mixing, post and color render/pt-post.js
    • BimCraft
    • ModelCraft
    32-bit in part
  • 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

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.