Skip to content

Falcor 4.3#264

Merged
kyaoNV merged 1 commit intoNVIDIAGameWorks:masterfrom
skallweitNV:4.3-release
Dec 4, 2020
Merged

Falcor 4.3#264
kyaoNV merged 1 commit intoNVIDIAGameWorks:masterfrom
skallweitNV:4.3-release

Conversation

@skallweitNV
Copy link
Collaborator

@skallweitNV skallweitNV commented Dec 4, 2020

  • Toolchain
    • Upgrade projects to Win 10 version 2004 using SDK version 19041.
  • Dependencies
    • Update packman to version 6.15.
    • Update slang to version 0.17.5.
    • Use same letter casing for package name and directory in Externals/.packman.
    • Get OSS dependencies from falcor_dependencies package placed in Externals/.packman/deps.
    • Add OpenVDB and NanoVDB.
  • Core
    • Remove deprecated APIs.
    • Add support for shader model 6.4 and 6.5.
    • Add utility code for TraceRayInline.
    • Add encoding/decoding of 8-bit snorm values.
    • Add encoding/decoding of normals in 2x8 octahedral format.
    • Convert palettized images to RGBA when loaded by Bitmap.
    • Fix issue with the search paths when an empty directory exists in the list.
    • Add caps check for new D3D features.
    • Move Bitmap init logic from create function to constructor
    • Add separate constructor to Bitmap that allocates memory but doesn't copy initial data.
    • Set memory stats when creating Bitmap from file.
    • Show hint to enable breaking on exceptions when an exception is caught.
    • Add support for creating views for Texture3D/2DMS resources.
    • Cleanup handling of null views to fix D3D12 validation error (null views now use the correct view dimension).
    • Move creation of TLAS SRV from into ShaderResourceView.
    • Update ParameterBlock logic to not create views when binding resource to root descriptor.
    • Add warning when creating buffer larger than 4GB as this is currently not well supported.
    • Fix size computation in buffer creation to handle >4GB.
    • Add runtime size check for large SRV/UAV view creation.
    • Move script writing functions from Scripting to separate ScriptWriter class.
    • Refactor BBox and BoundingBox classes into AABB class that matches the GPU-side slang module.
    • Make Profiler a singleton.
    • Program::Desc internals no longer require entry points to be defined contiguously.
    • Decouple declaration and shader library addition for hit groups in RtStateObject. This allows any particular entry point to be referenced in multiple hit groups while only being defined once.
  • DirectXTex
    • Fix row size calculation in CopyContext::ReadTextureTask to handle compressed formats.
    • Integrate DirectXTex for DDS import/export.
    • Remove legacy custom DDS loader.
    • Calculate and store row pitch and total size in Bitmap.
  • Logging
    • Add a new Logger::Level::Debug log level.
    • Use shorter log labels without tabs.
    • Do not capture stdout when running Python scripts by default, making print() from Python scripts forward to the terminal window.
  • CUDA
    • Fix the CudaInterop sample to build on VS 2019 and pull from Source/Externals/.packman/cuda
    • Update CUDA setup instructions in the README.
    • Add initial support for cross-compiling Slang compute shaders for CUDA execution.
  • Shaders
    • Fix Slang preprocessor warning when the emissive sampler is not used.
    • Import SampleGeneratorInterface instead of SampleGenerator if possible.
  • Scene
    • Cleanup to use enum directly in HitInfo struct.
    • Add instance type field to HitInfo struct to enumerate what class of geometry was hit.
    • Display materials in the UI in case-insensitive alphabetic order, rather than in material ID order.
    • Perform tangent space computation prior to pretransforming texture coordinates, as tangent space should be independent of texture transforms.
    • Renamed Scene::render to Scene::rasterize.
    • Add Scene::getSceneBoundsRadius() and Scene::getSceneBoundsCenter() and respective Python bindings
    • Bind scene acceleration structure as root descriptor (workaround for validation layer not correctly recognizing its view dimension).
    • Reduce scene GPU memory usage for the previous frame vertex positions.
    • Use 16-bit vertex indices for meshes with max 2^16 vertices.
    • Support mixed 16/32-bit format in the scene's global index buffer.
    • Support 32-bit draw IDs for rasterizing scenes with more than 2^16 mesh instances.
    • Remove deprecated BuffersAsShaderResource scene builder flag.
    • Add scene stats for texture compression and index/vertex/geometry memory usage.
    • Add detailed GPU memory usage stats for the scene representation.
    • Fix validation errors in BLAS construction.
    • Increase the maximum number of supported transforms and meshes to 2^21 each, reduce the number of supported materials to 2^21 as well.
    • Change RT build heuristics to place all static non-instanced meshes in a single BLAS.
    • Add scene builder flags to configure merging of meshes into BLASes.
    • Add Scene stats to show texture memory usage.
    • Make V-buffer format dynamically configured based on Scene requirements.
    • Add 96-bit V-buffer encoding to support large scenes that need 64-bit instance+primitive index.
    • Make Scene::setCamera() search by pointer (also fixes Python API).
    • Emit UpdateFlags::CameraSwitched when switching between cameras.
    • Add curves.
  • SceneBuilder
    • Fix scene builder flag that controls material merging, use DontMergeMaterials.
    • Add optimization pass that removes unused meshes.
    • Improve error messages when adding instances.
    • Fix documentation error for addMeshInstance.
    • Allow configuring render settings.
    • Split meshes in scene builder when computing optimized mesh groups (BLASes) for ray tracing.
    • Cleanup tangent space computation and make sure prepareShadingData always generates a plausible TBN frame.
    • Add check that normal and tangent are non-parallel, to avoid degenerate tangent spaces for bad assets.
    • Add top-down median BVH builder for partitioning the mesh groups.
    • Pre-transform static non-instanced meshes to world space at load time.
    • Add mesh winding flag.
    • Move calculation of mesh groups and sorted mesh instance list to the scene builder.
    • Split large mesh groups into chunks to reduce BLAS build memory usage.
    • Perform BLAS build in multiple iterations to reduce memory usage.
    • Add async/multi-threaded texture loading.
    • Move texture coordinate quantization and material de-duplication to a post-processing step. This is to avoid accessing material textures during the majority of scene building, which we want to avoid for parallel texture loading to work.
    • Add parallel mesh creation.
    • Fix so that tangents are correctly set to zero if missing.
  • Scene loading
    • Add more visible deprecation warning for fscene support.
    • Cleaning scripts from using .fscene files.
    • Use parent directory of .pyscene file as highest priority data directory during import.
    • Use parent directory of .py file as highest priority data directory during script loading.
    • Add new Python scene file format with many new features such as programmatically adding materials, cameras, lights, geometry and animations.
    • Loading Python scene files using the old # scenefile.xxx header for referencing a scene file results in an error.
    • Add TriangleMesh class to create and load simple triangle geometry (plus factory functions for quad, cube and sphere).
    • Add Transform class to setup transformations.
    • Add Python bindings for TriangleMesh, Transform, Animation as well as SceneBuilder.
  • Animation
    • Fix pre/post infinity linear mode with hermite interpolation.
    • General code cleanup and documentation updates.
    • Add support for looping animation channels individually based on some of the options available in Maya (constant, linear, cycle, and oscillate).
    • Add UI and scripting to control whether or not animations should also loop globally as well as how each animation channel behaves outside of defined keyframes.
    • Remove the Animation::Channel struct. This construct is not really necessary and complicates things for no good reason.
  • Material
    • Add a Transform to Falcor::Material, which can be used to apply scale/rotation/translation to all of the material's textures.
    • Texture transformation is implemented as a pretransformation of the texture coordinates of each mesh the material is bound to, using the inverse of its texture transform.
    • Minor fix to material comparison.
    • Add support for displacement mapping.
    • Extend Material to handle hair BCSDF parameters.
    • Add HairChiang16 using BxDF interface (eval, evalPdf and importance sampling implemented).
  • Environment map
    • Allow loading/clearing env map from UI.
    • Change the order in which the rotations passed to EnvMap::setRotation() are applied from (Z * Y * X) to (X * Y * Z).
    • Add getDimensions method to EnvMap.
  • Light probes
    • Remove LightProbe class and addadded EnvMapLighting which is used instead to do image-based lighting.
    • Remove light probes from the Scene and SceneBuilder classes (as well as the fscene importer).
    • Add EnvMapLighting to ForwardLighting pass to get back image-based lighting from the environment map.
    • Extend the SkyBox pass to directly support the environment map.
  • Camera & lights
    • Introduce explicit RectLight, DiscLight and SphereLight classes.
    • Make Camera and Light take optional name parameter in the static create functions.
    • Expose Camera, Light and Material constructors to Python API.
    • Replace color/intensity properties on Light with just intensity in Python API.
    • Fix light direction UI widget to not modify the value unless it was changed in the UI.
    • Fix bug in DistantLight update flags on first frame.
  • EmissiveLightSampler
    • Replace EmissiveLightSampler::prepareProgram with EmissiveLightSampler::getDefines.
    • Add onSurface flag to IEmissiveLightSampler to indicate if sample is used for surface or volume.
    • Implement onSurface flag in LightBVHSampler.
  • PathTracer
    • Update nested dielectric code to interpret material nested priority 0 as the highest possible priority.
    • Fix deadlock condition in nested dielectrics due to repeated false intersections.
    • Rename useLightsInVolumes to useLightsInDielectricVolumes.
    • Add stats for number of path vertices in the path tracer.
    • Add method for adjusting shading normals to avoid back-facing view vectors.
  • Mogwai
    • Add Mogwai::Renderer::clearScene() and Python binding, setting the scene to nullptr to explicitly free memory
    • Add -v,--verbosity command line argument to Mogwai to select log level.
    • Add UI button to dump scene statistics to logfile.
    • Add UI button to dump profiler data to logfile.
    • Add option to dump pixel stats to logfile.
    • Add option to dump pixel debug info to logfile.
  • Python bindings
    • Remove deprecated APIs.
    • Add lights proprty to Scene.
    • Improve vector type bindings (added empty/scalar constructors, added direct access to components).
    • Add +-*/ operator bindings for float2/3/4, int2/3/4 and uint2/3/4 types (component-wise operations, no scalars).
    • Add bindings for AABB class.
    • Deprecate global script variables t, fc, vc and tc (use m.clock, m.frameCapture, m.videoCapture and m.timingCapture instead).
    • Add bindings to access scene statistics m.scene.stats.
    • Add bindings for profiler and make it accessible using m.profiler.
  • Volume support
    • Add new Volume class representing heterogeneous volumes.
    • Add new Grid class representing NanoVDB voxel grids.
    • Add support for loading OpenVDB voxel grids (float only).
    • Add support for adding volumes via SceneBuilder (also exposed to Python).
    • Add simple visualization of volumes to SceneDebugger.
    • Add delta tracking transmittance estimator.
    • Add volumeLookups and avgVolumeLookups to PixelStats.
  • Procedural primitive support
    • Add documentation on how to use custom intersections.
    • Add support for intersection shaders and defining custom primitives in the scene.
    • Allow user-defined AABBs for custom primitives.
    • Add helper to Scene.slang for getting a custom primitive's AABB
    • Add curve interscetion.
  • Render passes
    • SceneDebugger
      • Add SceneDebugger pass for identifying asset issues.
    • GBufferRT
      • Add new deviceZ output to GBufferRT.
      • Add new linearZ output to GBufferRT. The output is a RG32Float with the first channel containing the linear z value and the second channel containing it's slope (max of ddx/ddy z).
    • InvalidPixelDetectionPass
      • Add warning to InvalidPixelDetectionPass pass if input format is non-float (can't represent inf/nan).
      • Fix broken NaN detection in InvalidPixelDetectionPass pass.
    • ImageLoader
      • Various fixes and improvements to ImageLoader pass.
      • Some cleanup of ImageLoader pass and add error check.
    • CompositePass
      • Add integer format support to CompositePass pass.
    • BSDFViewer
      • Small fix in BSDFViewer, enabling delta reflection lobe when specular is selected.
    • ForwardRenderer
      • Fix output in ForwardRenderer to use normalized normals.
    • ComparisonPass
      • Unblock labels by moving them to bottom of the window.
    • Tonemapper
      • Do not serialize exposureValue in ToneMapper anymore.
  • Misc
    • Add scalar version of evalFresnelSchlick.
    • Add eval method to CameraRay.
    • Add getAverageRadiance method to LightCollection.
    • Add latlong_map_to_world to complement world_to_latlong_map.
    • Add AliasTable module for sampling a discrete distribution using the alias method.
    • Add hypothesis header-only library for doing statistical tests.
  • Image tests
    • Increase test threshold for VBufferRT.
    • Add image test filtering base on tags.
    • Allow filtering on full test path.
    • Set default image test tolerance to 1e-12 and adjust the tests need higher tolerances.
    • Share image test helpers.py.
    • Add image tests for motion vectors.
    • Add a new set of image tests to run the scripts provided in Mogwai/Data
  • Unit tests
    • Add unit tests for large buffer access.
    • Add unit tests for templated loads of 16-bit types from ByteAddressBuffer.
    • Add unit test for constant buffer in ParameterBlock.
    • Enable unit test for asuint16 cast.
    • Add unit test for casting float16_t to uint16_t.
    • Add unit test for default initialization of enum in struct.
    • Add unit test for read/write of 3D texture.
    • Update unit tests for large buffers.
    • Add unit tests for HairChiang16, including validation against pbrt reference data, white furnace tests, importance sampling test, and sampling consistency test.
  • Documentation
    • Add more documentation on Python scene files.
    • Add some Python scene files to Media/TestScenes.
  • Media
    • Remove alpha_test scene in falcor_media.
    • Move animated_cubes to TestScenes/AnimatedCubes in falcor_media.
    • Add TestScenes/Tutorial.pyscene to falcor_media.
    • Replace Arcade.fscene with Arcade.pyscene.

@kyaoNV kyaoNV merged commit 6252ef7 into NVIDIAGameWorks:master Dec 4, 2020
kopaka1822 added a commit to kopaka1822/Falcor that referenced this pull request Dec 18, 2020
@skallweitNV skallweitNV deleted the 4.3-release branch August 2, 2021 12:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants