Skip to content

v0.0.28

Latest

Choose a tag to compare

@gkjohnson gkjohnson released this 02 Nov 06:35
· 98 commits to main since this release

Added

  • WebGPUPathTracer: "setBVHWorker" and "setSceneAsync" to build the mesh BVHs in workers without blocking the page.
  • WebGPUPathTracer: A "complete" event and flag once every pixel has reached "maxSamples" and the denoiser, if any, has run.
  • WebGPUPathTracer: A "progress" event with the stage the render is in, "building", "compiling", "rendering" or "denoising", and how far along it is.
  • WebGPUPathTracer: "renderToCanvas" flag to skip drawing the result to the render target.
  • OIDNDenoiser: An "error" event when a pass started by "update" fails, such as the weights failing to download, and a "progress" event as each tile finishes.
  • WebGPUPathTracer: The scene data is available to kernels and camera ray functions through the TSL context as "bvhData".
  • WebGPUPathTracer: "renderAuxBuffer" draws the albedo or normal auxiliary buffer given to the denoiser.
  • WebGPUPathTracer: "adaptiveFrameBudget" and "targetFrameTime" to tune "frameBudget" toward a GPU frame time, measured as "frameTime". Enabled by default, and requires a renderer created with "trackTimestamp". A reset restores the budget from before the last pixels of a capped render finished.
  • WebGPUPathTracer: "adaptiveDynamicRes" adjusts "lowResScale" to the pixels a frame of "frameBudget" can render.
  • WebGPUPathTracer: Subsurface scattering through volumes, with "scatterStrength", "multiscatterColor" and "scatterAnisotropy" material properties following the "KHR_materials_scatter" proposal, and "maxSubsurfaceBounces".

Changed

  • WebGPUPathTracer: Requires three.js r187, which binds every storage buffer as an array.
  • WebGPUPathTracer: Sobol is the default random strategy instead of Blue Dither.
  • WebGPUPathTracer: "renderDelay" defaults to 16 and "fadeDuration" to 250, and the fade starts once the average pixel reaches "minSamples", so the full render shows sooner after the camera stops.
  • OIDNDenoiser: Uses "oidn-webgpu" 0.6.0, the renamed "oidn-web" package, and paces denoising tiles to display frames.
  • OIDNDenoiser: The albedo and normal auxiliary buffers are accumulated by the path tracer from the first scatter of every sample instead of rasterized, so they match the image under depth of field and transparency. "setScene" is gone and "update" takes the auxiliary buffer.
  • AtlasTexture: Pages grow to the device texture size limit instead of 4096, so larger textures are no longer downsampled.
  • WebGPUPathTracer: Pixels a camera declines count as finished once "maxSamples" is set.
  • WebGPUPathTracer: Kernels are compiled asynchronously before the first render, so the page no longer freezes while they compile.
  • WebGPUPathTracer: "updateEnvironment" no longer rebuilds an unchanged environment map on every call.
  • WebGPUPathTracer: Shadow rays pass through partially transparent surfaces, attenuated by their opacity, and stop at the first opaque hit.

Fixed

  • WebGPUPathTracer: Rough transmission at the critical angle producing a NaN direction, which could stall the GPU for minutes inside subsurface scattering volumes.
  • WebGPUPathTracer: Diffuse surfaces losing energy when "specularIntensity" or "specularColor" is lowered.
  • WebGPUPathTracer: Light through partially transparent objects hidden with "visibleToShadowRays" no longer being counted twice.
  • WebGPUPathTracer: Environment map importance sampling accuracy.
  • WebGPUPathTracer: Nearest filtered environment and background textures no longer fail to compile.
  • WebGPUPathTracer: "setSceneAsync" no longer leaves geometry unusable when its attributes share a buffer, as in glTF files.
  • WebGPUPathTracer: Path buffers being reallocated on every reset for the low resolution preview.
  • WebGPUPathTracer: NaN pixels next to thin area lights.
  • WebGPUPathTracer: Diffuse surfaces losing indirect light when viewed almost head-on.
  • WebGPUPathTracer: Area and environment light being lost at the last bounce.
  • WebGPUPathTracer: Transmissive volumes being tinted by the square of their color, now matching Blender.
  • PathTracingSceneGenerator: ReferenceError when regenerating a scene whose geometry hasn't changed.