Three Gpu Pathtracing Versions Save

Path tracing renderer and utilities for three.js built on top of three-mesh-bvh.

v0.0.12

1 year ago

Fixed

  • Added workaround for Windows machines to address case where the shader compilation would fail due to arrays being passed as function arguments.

v0.0.11

1 year ago

Fixed

  • Incorrect import statement extension.

v0.0.10

1 year ago

Fixed

  • Equirect sampling CDF offset values causing env maps with 1 bright pixel to be most noticeably incorrect.
  • Clearcoat roughness map values not being respected.

v0.0.9

1 year ago

image

Added

  • Support for Material.flatShading to render flat-shaded materials.
  • Support for randomization using Owen-scrambled and shuffled Sobol values enabling sample stratification and image in fewer samples.
  • Support for directional lights, point lights.

Fixed

  • Roughness and metalness maps not being assigned correctly.
  • Case where textures using shared "Source" with different encodings were not treated as unique.
  • Spot Lights no longer have a dark hot spot.

Changed

  • Move "random" functions around.

v0.0.8

1 year ago

image

Fixed

  • Three.js semver package version.
  • Removed 3 texture sampler units to add room for future features, background map.
  • Texture memory leak in BlurredEnvMapGenerator.
  • PathtracingSceneGenerator / DynamicPathTracingSceneGenerator: both generators now only include visible geometry in the result.

Added

  • GradientEquirectTexture class for generating an equirect background texture with a gradient.
  • AttributesTextureArray class for storing multiple vertex attribute buffers in a sampler array to save texture units.

Removed

  • Removed FEATURE_GRADIENT_BG define and bgGradientTop, bgGradientBottom uniforms. Use the new GradientEquirectTexture class instead.
  • PhysicalPathTracingMaterial: Removed normalAttribute, tangentAttribute, uvAttribute, and colorAttribute uniforms. Use attributesArray to store those parameters, instead.
  • MaterialsTexture.setSide function.

Changed

  • MaterialsTexture automatically uses the specified material side unless the object is transmissive - in which case double-sided is used.
  • Used textures are now reduced to just those with unique sources.
  • PhysicalPathTracingMaterial.uniforms.environmentRotation from a Matrix3 to a Matrix4.
  • Updated three-mesh-bvh to v0.5.19.
  • Rework application of Fresnel based on Joe Shutte's Disney BSDF writeup resulting in improve handling of metalness brightness.
  • Use a 1.1 fresnel by default for plastics since it matches GlTF models more exactly.

New Demo Features

v0.0.7

1 year ago

image

Added

  • DenoiseMaterial based on "glslSmartDenoise" to smooth the final render.
  • Support for vertex colors.
  • Support for attenuated transmission.
  • PathTracingRenderer.alpha: Docs specifying premuliplied alpha behavior.
  • Support for thin film transmission.

Fixed

  • Diffuse materials looking too dark.
  • Specular sampling to use perceptual roughness.
  • Default specular and ior values to match three.js.

Changed

  • Opacity support now requires setting material.transparent to true.

New Demo Features

v0.0.6

1 year ago

Added

  • Support for sheen parameter support
  • Support for iridescence parameter support
  • Support for lights to the DynamicPathTracingGenerator
  • Support for circular area lights
  • Support for spot lights
  • Add support for specular color and intensity control
  • Support for IES Profiles on the new "PhysicalSpotLight" class
  • IESLoader for loading IES profiles as textures

Changed

  • PhysicalPathTracingMaterial: Default "environment intensity" from 2.0 to 1.0.

Fixed

  • White hotspots at some glancing angles.

New Demo Features

v0.0.5

1 year ago

Added

  • Support for equirect rendering with EquirectCamera.
  • Support for area lights.
  • Support for threejs compatible texture transforms.
  • Support for Clearcoat properties.
  • Support for arrays of objects passed to pathtracer scene generator.

Fixed

  • Black renders on M1 Safari devices.
  • Camera ray direction recision issues when scrolling far from the origin.

New Demo Features

v0.0.4

1 year ago

image

Fixed

  • Textures not working correctly on Pixel 6 due to an issue with floatBitsToInt.
  • PathTracingRenderer.alpha not being able to be changed after rendering.
  • Improved reflective behavior for perfectly smooth surfaces.
  • Case where partially transparent objects would cast full shadows.

Added

  • Support for material alpha map.
  • Ability to disable casting of shadows.
  • Support for rendering with Orthographic cameras.
  • Support for texture transform properties per texture.

New Demo Features

v0.0.3

2 years ago

image

M2020 Rover model courtesy of NASA JPL

Fixed

  • Some black artifacts when rendering with depth of field.
  • DynamicPathTracingSceneGenerator.reset not correctly resetting the class resulting in errors when calling "generate" again.

Changed

  • Materials to use a texture instead of uniforms to cut down on max uniform errors.
  • SUPPORT_DOF no longer needs to be explicitly set and will be toggled automatically based on the bokeh size parameter.
  • Removed direct support for environment blur with addition of MIS. Instead use BlurredEnvMapGenerator to preblur an environment map.
  • Antialiasing jitter is now performed per ray in the shader instead of via camera position jitter for improved AA.
  • GRADIENT_BG define option to FEATURE_GRADIENT_BG

Added

  • Support for "matte" material flag.
  • Support for Multiple Importance Sampling for the envionment map and an associated "FEATURE_MIS" flag.
  • BlurredEnvMapGenerator to blur environment maps.
  • Support for rendering transparent backgrounds.

Removed

  • Support for gradient environment colors. Use a DataTexture, instead.

New Demo Features

  • Physically Based Models & Material Ball demos
    • Add support for toggling multiple importance sampling.
    • Use EnvMapGenerator to blur the environment maps.
    • Add support for setting background alpha.
    • Add new environment map options.
    • Add floor opacity slider.
    • Add support for "matte" materials rendering as transparent.