5.0
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-deprecatedMegakernelPathTracer
. - The
RTXDI
SDK for computing direct illumination on many lights has been integrated. It is available in a standloneRTXDIPass
render pass and as a sampler for direct illumination inPathTracer
. - Render passes for
NRD
(denoising) andDLSS
(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
andReleaseVK
build configurations. - Add
DebugGFX
andReleaseGFX
build configurations (GFX backend is not functional yet). - Add
msbuild.py
, which builds Falcor usingmsbuild.exe
, rather thandevenv.exe
, asvsbuild.bat
does. - Pull compiler tools and windows SDK components from packman.
- Add agent-specific
build_falcor.py
that usesmsbuild
.
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
implementingstd::exception
. - Add
RuntimeError
,ArgumentError
andImportError
exception classes. - Add exception constructors taking format strings for convenience.
- Add
checkInvariant
andcheckArgument
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
, andfloat16_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
andLogger::getOutputs
to select the outputs to log to (Logger::OutputFlags
). - Add global
reportError
,reportErrorAndAllowRetry
andreportFatalError
functions to report errors to the user by logging and showing a message box. - Add global
setShowMessageBoxOnError
andgetShowMessageBoxOnError
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
toFALCOR_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.
- Use
- 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 aProgramVersion
. - Add
getCompilerArguments
andsetCompilerArguments
toProgram::Desc
, allowing to set custom compiler arguments. - Better align API of
RtProgram::Desc
withProgram::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
withRtPipelineFlags
enum andRtAABB
struct. - Move
RtProgram
toCore/Program/RtProgram
. - Move
RtProgramVars
toCore/Program/ProgramVars
. - Move
RtBindingTable
toCore/Program/RtBindingTable
. - Move
RtStateObject
toCore/API/RtStateObject
and moved D3D12 implementation toD3D12RtStateObject
. - Move
ShaderTable
toCore/API/ShaderTable
and moved D3D12 details toD3D12ShaderTable
. - 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
toD3D12DescriptorSet
. - Rename
DescriptorPool
toD3D12DescriptorPool
. - Move
DescriptorPool::Type
intoShaderResourceType.cpp:ShaderResourceType
. - Move contents of
DescriptorSet.cpp
intoD3D12DescriptorSet.cpp
- Move contents of
DescriptorPool.cpp
intoD3D12DescriptorPool.cpp
- Move
DescriptorSet.h
intoCore/API/D3D12/D3D12DescriptorSet.h
- Move
DescriptorPool.h
intoCore/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
andComputeContext::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 aIComponentType
is needed to create agfx::IShaderProgram
.- Move Blit render pass set up logic into shared
BlitContext.h
andBlitContext.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
intoParameterBlock.cpp
so they can be shared between D3D12 and GFX. - Return shared pointer from
ResourceView::getResource()
. - Wrap all uses of
DescriptorSet
in application code toFALCOR_D3D12
. - Wrap all protected member declaration in
ParameterBlock
toFALCOR_D3D12
, because they are now D3D12 specific. - Move implementation of
ParameterBlock::createConstantBuffers
fromD3D12ParameterBlock.cpp
toParameterBlock.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 usekMaxRect
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
andremoveLeadingTrailingWhitespace
. - 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()
andStringUtils::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 callsetAccelerationStructure
instead ofsetSrv
to bind TLAS. - Remove
pSrv
fromTlasData
. - 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)
toEnvMap::createFromFile(filename)
and returnnullptr
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
andgeometryIndex
when creating instance data. - Introduce
GeometryInstanceData
which unifiesMeshInstanceData
,CurveInstanceData
andSDFGridInstanceData
. - Use single list of geometry instance data for
Scene
containing instances for all geometry types. - Remove
PrimitiveTypeFlags
. - Replace
ScenePrimitiveTypes.slangh
withSceneDefines.slangh
. - Introduce
GeometryType
which enumerates all available geometry types andGeometryTypeFlags
which is a bitset thereof. - Both
GeometryType
andGeometryTypeFlags
use defines inSceneDefines.slangh
to ensure consistency. - Introduce
Scene::hasGeometryTypes
andScene::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
usesPackedHitInfo
as data storage.- Simplified packing/unpacking logic for
TriangleHit
,DisplacedTriangleHit
,CurveHit
etc. and moved into respective structs. - Add
SceneBuilder::Flags::UseCompressedHitInfo
flag to enable compressedHitInfo
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
andSceneBuilder
intoMaterialSystem
. - Move global
prepareShadingData()
andalphaTest()
functions into theMaterialSystem
module. - Rename
Shading.slang
toShadingUtils.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
andBasicMaterial
. - Add derived material classes
StandardMaterial
,HairMaterial
,ClothMaterial
andMERLMaterial
. - 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
toBasicMaterialData
. - Use Slang
reinterpret
cast to cast material data toBasicMaterialData
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 inShadingData
based on material interface'sevalOpacity()
. - Refactor alpha testing to use
evalOpacity()
interface. - Refactor texLOD code to create instances of
ITextureSampler
passed in toprepareShadingData
. - Redefine
IoR
field inShadingData
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
andalphaTest
that use implicit gradients (pass inImplicitLodTextureSampler
instead). - Remove all pre-evaluated material fields from
ShadingData
. - Remove material
emissive
field fromShadingData
. - Remove precomputed
NdotV
term fromShadingData
. - 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 togetBSDF()
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
androughness
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 onShadingData
. - Fix wi/wo conventions in
IBxDF
to matchIBSDF
. - 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, andmtlData
. - Update
WhittedRayTracer
andPixelInspectorPass
to prepare shading data based on new GBuffer fields. - Update
GBufferRT
andGBufferRaster
to use BSDF properties when generating the corresponding outputs. - Update
BSDFViewer
andPixelInspectorPass
to read back and display BSDF properties. - Add new
mtlData
channel toGBufferRT
andGBufferRaster
passes that holds material ID and header. - Remove unused G-buffer outputs
metallic
androughness
. - Remove legacy
matlExtra
channel fromGBufferRT
andGBufferRaster
. - 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 theStandardMaterial
class (HairMaterial
andClothMaterial
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
andHenyeyGreensteinPhaseFunction
. - Remove
PhaseFunctions.slang
and use the new phase function implementation in it's place. - Rename
Volume
toGridVolume
. - Rename
VolumeSampler
toGridVolumeSampler
. - Avoid stack allocation in
HomogeneousVolumeSampler
. - Add
HitType::Volume
to store hits (scattering locations) in volumes. - Add
HomogeneousVolumeData
to store medium properties and add function toMaterialSystem
for querying it. - Refactor
HomogeneousVolumeSampler
to store distance sample inHomogeneousVolumeSampler::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 ofSDF3DPrimitive
). - 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 forexitTime
inMogwaiSettings::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 toFalcorTest
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
toRenderPassLibrary::registerPass
taking a render pass info. - Update all render passes with a
static const Info kInfo;
variable holding the render pass information. - Rename
OptixDenoiserPass
toOptixDenoiser_
and fixed name in text output. - Set TAA output alpha to 1.
- Add configurable output format to
AccumulatePass
. - Change
ChannelDesc
default format toResourceFormat::Unknown
inRenderPassHelpers.h
. - Update render passes to specify output format explicitly where it matters.
- Fix
createLuminanceFbo()
inToneMapper
(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 usingRTXDI
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.
- Support for all types of geometry (
- Change default in
MinimalPathTracer
to enable BSDF sampling. - Move
MinimalPathTracer
example render script toSource/Mogwai/Data
. - Add image test for
MinimalPathTracer
render script.
BSDFViewer
- Remove
useSceneMaterial
option fromBSDFViewer
, 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'sEnvMap
object instead of re-loading it.
GBuffer
- Add texture gradients
texGrads
output toGBufferRT
andGBufferRaster
. - Add static checks to disable GBuffer writes for non-used channels.
- Add switch to
VBufferRT
andGBufferRT
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 intoFLIPLDRDemo.py
andFLIPHDRDemo.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
toRendering/Lights
. - Move
Experimental/Scene/Material
toRendering/Materials
. - Move
Experimental/Scene/Volume
toRendering/Volumes
. - Move
InteriorList
toRendering/Materials
. - Move
PixelStats
toRendering/Utils
. - Remove outdated
DebugDrawer
class. - Remove legacy particle system.
- Minor cleanup of UI labels.
- Cleanup naming in render pass functions (using
pRenderContext
andrenderData
consistently). - Tweak help message.
- Show scene filename and bounds in scene statistics.
- Cleanup Mogwai graph UI.
- Use Slang's
__init
initializers in place of staticcreate
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
toVisibility
. - Cleanup example render scripts.
- Use the local
assert
macro inFloat16.h
. - Cleanup
Falcor.h
andFramework.h
headers. - Disable compiler warning 4251 in
Falcor.vcxproj
andFalcor.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
toSkyBox.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
toFALCOR_ASSERT
. - Rename
PROFILE
toFALCOR_PROFILE
. - Rename
SCRIPT_BINDING
toFALCOR_SCRIPT_BINDING
. - Rename
SCRIPT_BINDING_DEPENDENCY
toFALCOR_SCRIPT_BINDING_DEPENDENCY
. - Rename
REGISTER_IMPORTER
toFALCOR_REGISTER_IMPORTER
. - Rename
HAS_DXGI_FORMAT_HEADER
toFALCOR_HAS_DXGI_FORMAT_HEADER
. - Rename
DEFAULT_ENABLE_DEBUG_LAYER
toFALCOR_DEFAULT_ENABLE_DEBUG_LAYER
. - Rename
EXPORT_D3D12_AGILITY_SDK
toFALCOR_EXPORT_D3D12_AGILITY_SDK
. - Rename
MAKE_SMART_COM_PTR
toFALCOR_MAKE_SMART_COM_PTR
. - Rename
d3dcall
toFALCOR_D3D_CALL
. - Rename
GET_COM_INTERFACE
toFALCOR_GET_COM_INTERFACE
. - Rename
UNSUPPORTED_IN_D3D12
toFALCOR_UNSUPPORTED_IN_D3D12
. - Rename
UNSUPPORTED_IN_D3D
toFALCOR_UNSUPPORTED_IN_D3D
. - Rename
falcorexport
toFALCOR_API_EXPORT
. - Rename
falcorimport
toFALCOR_API_IMPORT
. - Rename
dlldecl
toFALCOR_API
. - Rename
stringize
toFALCOR_STRINGIZE
. - Rename
concat_strings_
toFALCOR_CONCAT_STRINGS_
. - Rename
concat_strings
toFALCOR_CONCAT_STRINGS
. - Rename
enum_class_operators
toFALCOR_ENUM_CLASS_OPERATORS
. - Rename
forceinline
toFALCOR_FORCEINLINE
. - Rename
should_not_get_here
toFALCOR_UNREACHABLE
. - Remove obsolete deprecation macros.