Skip to content

5.0

Compare
Choose a tag to compare
@skallweitNV skallweitNV released this 26 Jan 13:43
· 25 commits to master since this release

Overview

This release of Falcor introduces a significant number of changes, including new features, improvements to existing functionality, and code reorganization. Some of the more notable changes include:

  • The addition of a new USD scene importer.
  • The material system has been rewritten to allow handling of different material types, and to accommodate future extensions.
  • A new reference PathTracer render pass has been added, in favor of the now-deprecated MegakernelPathTracer.
  • The RTXDI SDK for computing direct illumination on many lights has been integrated. It is available in a standlone RTXDIPass render pass and as a sampler for direct illumination in PathTracer.
  • Render passes for NRD (denoising) and DLSS (antialiasing/upscaling) have been added.
  • A new API backend GFX based on Slang is currently under development to allow future support for Vulkan, some additions for which are reflected in this release.

Dependencies

  • Update dxc to version 1.6.2106
  • Add support for D3D12 Agility SDK.
  • Update Slang to 0.20.0.
  • Add libfmt formatting library (will be replaced with <format> when switching to C++20).

Build system

  • Remove DebugVK and ReleaseVK build configurations.
  • Add DebugGFX and ReleaseGFX build configurations (GFX backend is not functional yet).
  • Add msbuild.py, which builds Falcor using msbuild.exe, rather than devenv.exe, as vsbuild.bat does.
  • Pull compiler tools and windows SDK components from packman.
  • Add agent-specific build_falcor.py that uses msbuild.

Documentation

  • Fix CUDA installation and usage instructions.
  • Fix Optix installation instructions.
  • Add development documentation:
    • Coding conventions
    • Error handling & logging
    • Unit testing
  • Add known issues.
  • Add documentation for the material system in Docs/Usage/Materials.md.
  • Fix outdated scene docs.

Error handling

  • Add Exception implementing std::exception.
  • Add RuntimeError, ArgumentError and ImportError exception classes.
  • Add exception constructors taking format strings for convenience.
  • Add checkInvariant and checkArgument helpers.
  • Update code base to use Falcor exception classes throughout.

Core

  • Add float16_t type for binary16 numbers on the host with python bindings.
  • Add float16_t2, float16_t3, and float16_t4 host side types.
  • Add convenience functions on float16 vector types.
  • Separate logging from error reporting:
    • log* functions only take a string and log it to the selected outputs.
    • Use std::string_view for passing log strings.
    • Add overloads for logging with format strings.
    • Convert existing logging calls to use format strings.
    • Remove Logger::logToConsole, Logger::shouldLogToConsole, Logger::showBoxOnError, isBoxShownOnError.
    • Add Logger::getVerbosity.
    • Add Logger::setOutputs and Logger::getOutputs to select the outputs to log to (Logger::OutputFlags).
    • Add global reportError, reportErrorAndAllowRetry and reportFatalError functions to report errors to the user by logging and showing a message box.
    • Add global setShowMessageBoxOnError and getShowMessageBoxOnError to enable/disable showing message boxes.
  • Fix bug in GUI::addDropdown when using an empty list.
  • Fix bug with UI buffer allocation when there are no UI elements.
  • Fix validation error in ComputeParallelReduction.

API

  • Remove Vulkan backend.
  • Cleanup code around FALCOR_VK.
  • Rename FALCOR_VK to FALCOR_FLIP_Y in places where NDC handedness matters (undefined for now).
  • Remove support for 5.x shading model.
  • Add support for querying shader model support on Device.
    • Use Device::getSupportedShaderModel to get highest supported shader model.
    • Use Device::isShaderModelSupported to check if a shader model is supported.
  • Enable debug layer check that was previously broken (do not hide debug message about overlapping descriptor ranges anymore).
  • Add to Program the ability to specify which type implementations to an interface should be included in a ProgramVersion.
  • Add getCompilerArguments and setCompilerArguments to Program::Desc, allowing to set custom compiler arguments.
  • Better align API of RtProgram::Desc with Program::Desc (remove shader defines).
  • Fix clearing uint render outputs.
  • Add RayFlags enum and improve test to make sure flags match up with shader side.
  • Add getRaytracingMaxAttributeSize().
  • Add Core/API/Raytracing.h with RtPipelineFlags enum and RtAABB struct.
  • Move RtProgram to Core/Program/RtProgram.
  • Move RtProgramVars to Core/Program/ProgramVars.
  • Move RtBindingTable to Core/Program/RtBindingTable.
  • Move RtStateObject to Core/API/RtStateObject and moved D3D12 implementation to D3D12RtStateObject.
  • Move ShaderTable to Core/API/ShaderTable and moved D3D12 details to D3D12ShaderTable.
  • Remove support for local root signatures in shader binding table.
  • Add ParameterBlock::setAccelerationStructure(const BindLocation& loc, RtAccelerationStructure::SharedPtr).
  • Add ShaderVars::setAccelerationStructure(RtAccelerationStructure::SharedPtr).
  • Make D3D12 implementation of RtAccelerationStructure hold a ShaderResourceView that is created on-demand.
  • Rename DescriptorSet to D3D12DescriptorSet.
  • Rename DescriptorPool to D3D12DescriptorPool.
  • Move DescriptorPool::Type into ShaderResourceType.cpp:ShaderResourceType.
  • Move contents of DescriptorSet.cpp into D3D12DescriptorSet.cpp
  • Move contents of DescriptorPool.cpp into D3D12DescriptorPool.cpp
  • Move DescriptorSet.h into Core/API/D3D12/D3D12DescriptorSet.h
  • Move DescriptorPool.h into Core/API/D3D12/D3D12DescriptorPool.h
  • Move Core/BufferTypes/ParameterBlock.h -> Core/API/ParameterBlock.h
  • Move Core/BufferTypes/ParameterBlock.cpp -> Core/API/D3D12/D3D12ParameterBlock.cpp
  • Move Core/Program/ProgramVars.h -> Core/API/ProgramVars.h
  • Move Core/Program/ProgramVars.cpp -> Core/API/D3D12/D3D12ProgramVars.cpp.
  • Move RenderContext::applyGraphicsVars and ComputeContext::applyComputeVars to D3D12 only.
  • Move ProgramVars::apply to D3D12 only.
  • Make ComputeContext::prepareForDispatch D3D12 only.
  • Program::preprocessAndCreateProgramKernels now only generates shader binary code for D3D12 backend. For GFX, only the a IComponentType is needed to create a gfx::IShaderProgram.
  • Move Blit render pass set up logic into shared BlitContext.h and BlitContext.cpp files.
  • Move blit implementation from D3D12RenderContext.cpp to RenderContext.cpp so it may be shared between D3D12 and GFX.
  • Move some functions from D3D12ParameterBlock.cpp into ParameterBlock.cpp so they can be shared between D3D12 and GFX.
  • Return shared pointer from ResourceView::getResource().
  • Wrap all uses of DescriptorSet in application code to FALCOR_D3D12.
  • Wrap all protected member declaration in ParameterBlock to FALCOR_D3D12, because they are now D3D12 specific.
  • Move implementation of ParameterBlock::createConstantBuffers from D3D12ParameterBlock.cpp to ParameterBlock.cpp.
  • Fix assignment of bools to shader variables.
  • Add error check to buffer creation that size > 0.
  • Add validation check to detect buffers bound as SRV and UAV simultaneously.
  • Fix bug in UAV clear caused by not using both CPU and GPU descriptors.
  • Add error check that descriptor heap is shader visible when querying GPU handles.

Blit

  • Add support for blitting between float and integer formats.
  • Add error checks to RenderContext::blit() for unsupported combinations.
  • Remove unused Blit.slang file.
  • Optimize RenderContext::blit() to do a resource copy when possible.
  • Update RenderContext::blit() API to use kMaxRect to specify the full rectangle (instead of -1).
  • Fix shader compiler warnings when initializing the blit shader.

ImageIO

  • Use nvtt for saving DDS textures.
  • Add native support for DDS image loading, rather than relying on an external library.
  • ImageIO::loadDDS now has original code instead of directly using the DDS loader provided by DirectXTex.
  • Old DirectXTex implementations have been removed.
  • Compressed images can now be directly saved again.

Utilities

  • Fix removeLeadingWhitespace, removeTrailingWhitespace and removeLeadingTrailingWhitespace.
  • Extend PrefixSum to support more than 2N^2 elements, where N is the group size.
  • Fix PixelDebug when used for multiple shader dispatches within a single frame by not clearing the string hash table.
  • Add utilities for packing/unpacking unorm8 to FormatConversion.slang.
  • Add ImageProcessing utility class.
  • Add interval arithmetic functions in Utils/Math/IntervalArithmetic.slang.
  • Remove non-portable StringUtils::getClassTypeName() and StringUtils::getEnumTypeName().

Importer

  • Use ImporterError exception for reporting errors during scene import.
  • Add new USDImporter scene importer.

Scene

  • Cleanup handling of scene defines and type conformances.
  • Add Scene::UpdateFlags::SDFGridConfigChanged.
  • Use the new acceleration structure abstraction in Scene.cpp for BLAS/TLAS creation. The existing raw D3D12 API calls have been replaced.
  • Change Scene.cpp to call setAccelerationStructure instead of setSrv to bind TLAS.
  • Remove pSrv from TlasData.
  • Reorganizing BLAS/TLAS for curves: splitting the single BLAS/TLAS for procedural primitives into two (one for curves and the other for custom primitives).
  • Handling transformations of cached curves using the scene graph and nodes.
  • Improve error checks in SceneBuilder.
  • Provide analytic light sampling functions that take random numbers directly instead of a ISampleGenerator.
  • Extend EnvMap with additional methods to access the underlying map and helpers for transforming between uv/local and uv/global space.
  • Extend Scene with an explicit list of active lights.
  • Make Scene constructor from in-memory representation public.
  • Make Scene representation and render passes resilient to scenes without meshes/materials.
  • Rename EnvMap::create(filename) to EnvMap::createFromFile(filename) and return nullptr if load fails.

Animation

  • Fix hasCurveAnimations(): Return true if the cached curves have more than one keyframe.
  • Modify Animation::addKeyframe() to avoid O(N^2) behavior when keyframes are added in temporal order.

Geometry

  • Set instanceIndex and geometryIndex when creating instance data.
  • Introduce GeometryInstanceData which unifies MeshInstanceData, CurveInstanceData and SDFGridInstanceData.
  • Use single list of geometry instance data for Scene containing instances for all geometry types.
  • Remove PrimitiveTypeFlags.
  • Replace ScenePrimitiveTypes.slangh with SceneDefines.slangh.
  • Introduce GeometryType which enumerates all available geometry types and GeometryTypeFlags which is a bitset thereof.
  • Both GeometryType and GeometryTypeFlags use defines in SceneDefines.slangh to ensure consistency.
  • Introduce Scene::hasGeometryTypes and Scene::hasGeometryType to check if scene contains specific geometry types.
  • Introduce Scene::hasProceduralGeometry to check if scene contains procedural geometry types.
  • Introduce SCENE_HAS_GEOMETRY_TYPE macro for shaders to check if scene contains a specific geometry type.
  • Introduce SCENE_HAS_PROCEDURAL_GEOMETRY macro for shaders to check if scene contains procedural geometry types.

HitInfo

  • PackedHitInfo uses either 128 bits or 64 bits (compressed mode).
  • HitInfo uses PackedHitInfo as data storage.
  • Simplified packing/unpacking logic for TriangleHit, DisplacedTriangleHit, CurveHit etc. and moved into respective structs.
  • Add SceneBuilder::Flags::UseCompressedHitInfo flag to enable compressed HitInfo on scenes that support it (triangles only, header fitting into 32 bits).

Materials

System

  • Add MaterialSystem class for holding all materials and related resources.
  • Add matching MaterialSystem Slang module and parameter block for the GPU-side data and interfaces.
  • Move all materials-related code from Scene and SceneBuilder into MaterialSystem.
  • Move global prepareShadingData() and alphaTest() functions into the MaterialSystem module.
  • Rename Shading.slang to ShadingUtils.slang as it's now just holding utility functions used by the material system.
  • Remove MaterialHelpers.slang.
  • Register materials with the material system upon creation.
  • Add factory functions for creating materials and BSDFs to MaterialSystem.

Material Classes

  • Add base classes Material and BasicMaterial.
  • Add derived material classes StandardMaterial, HairMaterial, ClothMaterial and MERLMaterial.
  • Move non-general material functions into derived classes.
  • Add additional interface functions to Material base class.
  • Introduce Material::update() function that prepares a material for rendering.
  • Cleanup handling of material update flags, move static global flags into material system.
  • Minor docs fixes.

Material Data

  • Refactor material data handling to support having different material types.
  • Introduce MaterialHeader struct shared between all material types for generic flags etc.
  • Introduce new storage type MaterialDataBlob for material data. The format depends on material type.
  • Add enums for material flags (AlphaMode, ShadingModel, NormalMapType) and matching setter/getters on the material structs.
  • Move alpha threshold parameter to MaterialHeader.
  • Rename previous MaterialData to BasicMaterialData.
  • Use Slang reinterpret cast to cast material data to BasicMaterialData if needed.
  • Use 16-bit types for uniform material parameters in BasicMaterialData.

Material Resources

  • Introduce bindless textures and samplers managed by MaterialSystem.
  • Update materials to use bindless textures and samplers, indexing into arrays in MaterialSystem.
  • Add interfaces to MaterialSystem module for sampling and querying textures by handle.
  • Add TextureManager class for managing and binding a set of textures.
  • Add extra GPU flush in TextureManager to fix potential heap size problem.
  • Move material texture interface to Material base class.
  • Remove previous MaterialResources struct (replaced by bindless textures/samplers).
  • Add texture slot metadata to material classes for the basic material types.
  • Disable asynchronous texture loading until underlying race condition is resolved.

Shading Interface

  • Update shader code to use Slang's new createDynamicObject feature to get rid of all manually written dispatch logic.
  • Update all rendering code to use new material interfaces instead of directly creating StandardMaterial etc.
  • Add material header to ShadingData struct.
  • Add material interface for normal mapping (IMaterial::modifyTangentSpace).
  • Add interface IMaterial::evalOpacity() to allow alpha testing to work with any material.
  • Setup opacity field in ShadingData based on material interface's evalOpacity().
  • Refactor alpha testing to use evalOpacity() interface.
  • Refactor texLOD code to create instances of ITextureSampler passed in to prepareShadingData.
  • Redefine IoR field in ShadingData to refer to the index of refraction of medium on the "outside".
  • Move prepareShadingData utils into Slang extension and update to use new interface.
  • Remove overloaded versions of prepareShadingData no longer needed.
  • Remove overloaded versions of prepareShadingData and alphaTest that use implicit gradients (pass in ImplicitLodTextureSampler instead).
  • Remove all pre-evaluated material fields from ShadingData.
  • Remove material emissive field from ShadingData.
  • Remove precomputed NdotV term from ShadingData.
  • Add new Shading.slang module to avoid circular dependency in materials accessing scene data.

BSDFs

  • Introduce IBSDF interface for BSDF implementations.
  • Add associated BSDF types implementing the IBSDF interface to all materials.
  • Add pattern generation code (BSDF setup) to material implementations derived from IMaterial.
  • Add lod parameter to getBSDF() to specify how to sample textures in pattern generation code.
  • Add interface for querying BSDF properties to IBSDF.
  • Add BSDFIntegrator utility class for integration of BSDFs.
  • Add BSDF properties emission and roughness so that they are available for all materials.
  • Add BSDF properties for surface albedo (diffuse/specular and reflection/transmission).
  • Add BSDF property specularReflectance.
  • Add BSDF property flag isTransmissive.
  • Move computation of BSDF emission field into the respective material.
  • Update all passes and samples to query the BSDF emission property instead of relying on ShadingData.
  • Fix wi/wo conventions in IBxDF to match IBSDF.
  • Fix sampling weights for FalcorBSDF with respect to specular transmission.
  • Fix hair material to use correct shading model.
  • Avoid stack allocation in HairChiang16.
  • Avoid stack allocation in InteriorList.

Render Passes

  • Update render scripts and tests to reflect switch to new material system.
  • Update MegakernelPathTracer to setup shading data based on G-buffer geometry, tex coords/grads, and mtlData.
  • Update WhittedRayTracer and PixelInspectorPass to prepare shading data based on new GBuffer fields.
  • Update GBufferRT and GBufferRaster to use BSDF properties when generating the corresponding outputs.
  • Update BSDFViewer and PixelInspectorPass to read back and display BSDF properties.
  • Add new mtlData channel to GBufferRT and GBufferRaster passes that holds material ID and header.
  • Remove unused G-buffer outputs metallic and roughness.
  • Remove legacy matlExtra channel from GBufferRT and GBufferRaster.
  • Fix issue with normal loaded from G-buffer potentially being flipped twice.

Cleanup

  • Move selection of MetalRough vs SpecGloss shading model into StandardMaterial.
  • Move support for emission from BasicMaterial into the StandardMaterial class (HairMaterial and ClothMaterial are not emissive).
  • Remove normal mapping support for HairMaterial (not useful).
  • Remove alpha support for HairMaterial as it's not needed and not fully implemented.
  • Remove BasicMaterialDefines.slangh file and defines that are no longer needed.

Rendering

  • Avoid stack allocation in EnvMapSampler.
  • Add RTXDI module integrating the RTXDI SDK.

Volumes

  • Add IPhaseFunction interface for representing different types of phase functions.
  • Add IsotropicPhaseFunction and HenyeyGreensteinPhaseFunction.
  • Remove PhaseFunctions.slang and use the new phase function implementation in it's place.
  • Rename Volume to GridVolume.
  • Rename VolumeSampler to GridVolumeSampler.
  • Avoid stack allocation in HomogeneousVolumeSampler.
  • Add HitType::Volume to store hits (scattering locations) in volumes.
  • Add HomogeneousVolumeData to store medium properties and add function to MaterialSystem for querying it.
  • Refactor HomogeneousVolumeSampler to store distance sample in HomogeneousVolumeSampler::DistanceSample.

SDFs

  • Add SDF grids as a primitive type.
  • Add SDF grid rendering to the GBuffer and VBuffer passes.
  • Add dense SDF grid implementation (NDSSDFGrid).
  • Add sparse brick set SDF grid implementation (SDFSBS).
  • Add sparse voxel octree SDF grid implementation (SFGSVO).
  • Add sparse voxel set SDF grid implementation (SFGSVS).
  • Add multiple different SDF grid rendering techniques for intersecting rays against the surface, evaluating the gradient of the SDF, and reconstructing the hit point on the SDF surface.
  • Add SDFGridHitData struct that depends on the current SDF grid implementation.
  • Add 3D SDF shapes and operations that can be used to construct an SDF grid using CSG.
  • Add 3D SDF shape evaluation for SDFSBS.
  • Adds file IO functionality for .sdf files (JSON files that contain a large array of SDF3DPrimitive).
  • Adds file IO functionality for .sdfg files if the SDF grid was constructed from primitives.

Mogwai

  • Add --enable-debug-layer option for enabling debug layer in Release mode (enabled by default in Debug mode).
  • Check for exitFrame also instead of double check for exitTime in MogwaiSettings::renderTimeSettings().
  • Add optional parameter to script markOutput function to specify which color channel(s) to write.
  • Extend FrameCapture class to capture one image per color channel(s) variant for each output.
  • Update relevant tests to output alpha channels.
  • Add program compilation stats to UI and log.

RenderGraphEditor

  • Disable editing node names in render graph editor, which wasn't implemented and just crashed the editor.

FalcorTest

  • Add -r,--repeat option to FalcorTest to run unit tests multiple times.
  • Add --enable-debug-layer option for enabling debug layer in Release mode (enabled by default in Debug mode).
  • Add unit tests for Slang struct inheritance.
  • Add unit test for Slang reinterpret cast.
  • Add unit test for unbounded descriptor arrays (test disabled as this functionality is still unsupported).
  • Add BC-compressed texture read unit tests.
  • Add unit tests for RenderContext::blit().
  • Add unit test for nested structs in constant buffers.

Render Passes

  • Add RenderPass::Info holding the render pass type name and the description.
  • Add RenderPass::getInfo() function returning the info.
  • Add RenderPass::getType() function returning the type name.
  • Change RenderPass constructor to take in a RenderPass::Info.
  • Rename RenderPassLibrary::registerClass to RenderPassLibrary::registerPass taking a render pass info.
  • Update all render passes with a static const Info kInfo; variable holding the render pass information.
  • Rename OptixDenoiserPass to OptixDenoiser_ and fixed name in text output.
  • Set TAA output alpha to 1.
  • Add configurable output format to AccumulatePass.
  • Change ChannelDesc default format to ResourceFormat::Unknown in RenderPassHelpers.h.
  • Update render passes to specify output format explicitly where it matters.
  • Fix createLuminanceFbo() in ToneMapper (compared bytesPerChannel against 32, but it should be 4).
  • Fix texLOD code in MegakernelPathTracer.
  • Add ModulateIllumination render pass to module denoised radiance with reflecance buffers.
  • Add NRDPass NRD/ReLAX denoiser render pass.
  • Add DLSSPass render pass integrating the DLSS antialiasing/upscaling filter.
  • Add RTXDIPass render pass using RTXDI to render direct illumination.

PathTracer

  • Add a new reference PathTracer render pass.
    • Uses full screen ray dispatch for tracing paths.
    • Uses ray queries for visibility queries.
    • Supports triangle, curve and SDF geometry.
    • Supports adaptive sampling.
    • Supports NEE and MIS for environment light and emissive lights.
    • Supports NEE for analytic lights.
    • Supports Russian roulette for terminating paths.
    • Supports ray stats and pixel debugging.
    • Supports RTXDI for sampling direct illumination.
    • Supports generating buffers for the NRD denoiser.
    • No support for volumes.

MinimalPathTracer

  • Update MinimalPathTracer with new features:
    • Support for all types of geometry (TriangleMesh, DisplacedTriangleMesh, Curve, SDFGrid).
    • Support for all types of materials
    • Support for enabling/disabling importance sampling for materials.
  • Change default in MinimalPathTracer to enable BSDF sampling.
  • Move MinimalPathTracer example render script to Source/Mogwai/Data.
  • Add image test for MinimalPathTracer render script.

BSDFViewer

  • Remove useSceneMaterial option from BSDFViewer, requiring it to always fetch material from a loaded scene.
  • Add asynchronous readback of pixel data in BSDFViewer to avoid perf warning.
  • Fix compiler warnings about missing scene defines in BSDFViewer.
  • Add scripting to BSDFViewer.
  • Add option to output BSDF albedo in BSDFViewer.
  • Add scripting options and cleanup of BSDFViewer.
  • Update BSDFViewer to use scene's EnvMap object instead of re-loading it.

GBuffer

  • Add texture gradients texGrads output to GBufferRT and GBufferRaster.
  • Add static checks to disable GBuffer writes for non-used channels.
  • Add switch to VBufferRT and GBufferRT to disable stochastic depth-of-field.
  • Cleanup raytracing entry points in VBufferRT, GBufferRT shaders.
  • General cleanup.

FLIPPass

  • LDR-FLIP computations are re-ordered and now require fewer kernel traversals.
  • HDR-FLIP is added to the FLIPPass.
  • Added a subpass to compute luminance, followed by median and maximum computations for finding start and stop exposures used in HDR-FLIP.
  • FLIPDemo.py is split into FLIPLDRDemo.py and FLIPHDRDemo.py, and the graphs that are run within the demos contain a reference (high spp path traced) and a test path (low spp path traced and denoised with SVGF).
  • General GUI improvements.
  • Fixed color space issues for the displayed FLIP output.
  • Updated image tests to include HDR-FLIP tests.

Cleanup

  • Move Experimental/Scene/Lights to Rendering/Lights.
  • Move Experimental/Scene/Material to Rendering/Materials.
  • Move Experimental/Scene/Volume to Rendering/Volumes.
  • Move InteriorList to Rendering/Materials.
  • Move PixelStats to Rendering/Utils.
  • Remove outdated DebugDrawer class.
  • Remove legacy particle system.
  • Minor cleanup of UI labels.
  • Cleanup naming in render pass functions (using pRenderContext and renderData consistently).
  • Tweak help message.
  • Show scene filename and bounds in scene statistics.
  • Cleanup Mogwai graph UI.
  • Use Slang's __init initializers in place of static create functions.
  • Revise implementation of PixelDebug.slang to use Slang more directly.
  • Remove std::enable_shared_from_this on classes that don't need it.
  • Rename PixelStatsRayType::Shadow to Visibility.
  • Cleanup example render scripts.
  • Use the local assert macro in Float16.h.
  • Cleanup Falcor.h and Framework.h headers.
  • Disable compiler warning 4251 in Falcor.vcxproj and Falcor.props instead of in a header file (all of Falcor currently relies on it).
  • Cleanup compiler warnings using push/pop.
  • Cleanup to remove in keyword on shader function parameters.
  • Rename SkyBox.slang to SkyBox.3d.slang to match conventions.
  • Cleanup class enum type specifiers in shader files.
  • Remove unnecessary padding fields in some GPU-side data structs.

Cleanup global macros

  • Replace arraysize macro with function.
  • Replace align_to macro with function.
  • Replace safe_delete macro with function
  • Remove unused safe_delete_array macro.
  • Rename config macros:
    • _LOG_ENABLED -> FALCOR_ENABLE_LOGGER
    • _PROFILING_ENABLED -> FALCOR_ENABLE_PROFILER
    • _ENABLE_NVAPI -> FALCOR_ENABLE_NVAPI
    • _ENABLE_CUDA -> FALCOR_ENABLE_CUDA
    • _ENABLE_OPTIX -> FALCOR_ENABLE_OPTIX
    • _ENABLE_D3D12_AGILITY_SDK -> FALCOR_ENABLE_D3D12_AGILITY_SDK
  • Rename assert to FALCOR_ASSERT.
  • Rename PROFILE to FALCOR_PROFILE.
  • Rename SCRIPT_BINDING to FALCOR_SCRIPT_BINDING.
  • Rename SCRIPT_BINDING_DEPENDENCY to FALCOR_SCRIPT_BINDING_DEPENDENCY.
  • Rename REGISTER_IMPORTER to FALCOR_REGISTER_IMPORTER.
  • Rename HAS_DXGI_FORMAT_HEADER to FALCOR_HAS_DXGI_FORMAT_HEADER.
  • Rename DEFAULT_ENABLE_DEBUG_LAYER to FALCOR_DEFAULT_ENABLE_DEBUG_LAYER.
  • Rename EXPORT_D3D12_AGILITY_SDK to FALCOR_EXPORT_D3D12_AGILITY_SDK.
  • Rename MAKE_SMART_COM_PTR to FALCOR_MAKE_SMART_COM_PTR.
  • Rename d3dcall to FALCOR_D3D_CALL.
  • Rename GET_COM_INTERFACE to FALCOR_GET_COM_INTERFACE.
  • Rename UNSUPPORTED_IN_D3D12 to FALCOR_UNSUPPORTED_IN_D3D12.
  • Rename UNSUPPORTED_IN_D3D to FALCOR_UNSUPPORTED_IN_D3D.
  • Rename falcorexport to FALCOR_API_EXPORT.
  • Rename falcorimport to FALCOR_API_IMPORT.
  • Rename dlldecl to FALCOR_API.
  • Rename stringize to FALCOR_STRINGIZE.
  • Rename concat_strings_ to FALCOR_CONCAT_STRINGS_.
  • Rename concat_strings to FALCOR_CONCAT_STRINGS.
  • Rename enum_class_operators to FALCOR_ENUM_CLASS_OPERATORS.
  • Rename forceinline to FALCOR_FORCEINLINE.
  • Rename should_not_get_here to FALCOR_UNREACHABLE.
  • Remove obsolete deprecation macros.