Started by JeGX, March 30, 2023, 09:34:50 AM
0 Members and 1 Guest are viewing this topic.
QuoteThe OptiX 7.7 adds support for Displacement Micromaps (DMMs) that provide hardware accelerated displacement for triangle mesh geometry. DMMs are supported on GPUs with RTCores and accelerated in hardware on the new Ada Lovelace generation of GPUs. Cubic curves can now be specified with a Bezier basis, and we introduce support for quadratic B-Spline ribbons (curves with a flat cross-section). The denoiser now supports temporal denoising in conjunction with 2x upscaling.--New feature: Displacement MicroMaps (DMMs)- DMMs provide hardware-accelerated displacement for triangle mesh geometry, turning triangles into a displaced micro-mesh. DMMs are supported on all GPUs with RTCores and accelerated in hardware on the new Ada Lovelace generation of GPUs. DMMs describe the scalar displacement values in a barycentric grid and are stored compactly with low precision and optional compression.- DMMs are stored in a new resource, the DMM array, which needs to be built similar to accelerationstructures. DMMs in a DMM array can have different subdivision levels and formats.- Each OptixBuildInputTriangleArray can now specify an OptixBuildInputDisplacementMicromap. The build input references a DMM array and individual triangles in the OptixBuildInputTriangleArray index into the DMM array to pick the required DMM. Per vertex displacement directions and the DMM allow turning a triangle into displaced micro-mesh triangle primitive.- Details can be found in the OptiX programming guides, section "Displaced micro-meshes"- New host functions for creating arrays of displacement micromaps - optixDisplacementMicromapArrayComputeMemoryUsage - optixDisplacementMicromapArrayBuild- New device functions - optixGetMicroTriangleVertexData - optixGetMicroTriangleBarycentricsData - optixIsDisplacedMicromeshTriangleHit - optixIsDisplacedMicromeshTriangleFrontFaceHit - optixIsDisplacedMicromeshTriangleBackFaceHit - optixBaseBarycentricsToMicroBarycentrics - found in optix_micromap.h- New OptixPrimitiveType - OPTIX_PRIMITIVE_TYPE_DISPLACED_MICROMESH_TRIANGLENow that OptiX can accept both PTX and OptiX-IR as input, API names were simplified- optixModuleCreateFromPTX -> optixModuleCreate- optixModuleCreateFromPTXWithTasks -> optixModuleCreateWithTasks- OPTIX_ERROR_INVALID_PTX -> OPTIX_ERROR_INVALID_INPUToptixProgramGroupGetStackSize now takes an optional argument for the OptixPipeline- When the pipeline parameter is non-null, OptiX will calculate the stack size based on the linked result. If OptiX programs call functions in other modules, this will produce a more accurate stack size.New function optixAccelEmitProperty- Emits a single property after an acceleration structure was built- You may still emit properties as part of optixAccelBuildrayFlags to optixTrace is now 16 bits instead of 8 bitsCurves- New curve types - OPTIX_PRIMITIVE_TYPE_FLAT_QUADRATIC_BSPLINE (ribbons) - OPTIX_PRIMITIVE_TYPE_ROUND_CUBIC_BEZIER- Added new device functions to access curve parameters and other curve properties at the currentintersection point. It is recommended that these be used instead of interpolating directly from theattributes. Recommended usage is shown in sample optixCurves. - optixGetCubicBezierVertexData - optixGetRibbonVertexData - optixGetRibbonNormal - optixGetRibbonParameters- In order to ensure compatibility with future versions of OptiX, use optixGetCurveParameter instead of accessing the attribute directlyOptixInstance::sbtOffset is now summed across all instances in the traversal graph instead of taking only the bottom-most sbt offset. This allows for sbt paletting at any particular instance level in a scene graph with multiple levels of instances (instead of only the bottom most instance level referencing the GAS), or recursive sbt paletting at each instance level in a scene graph.OPTIX_BUILD_FLAG_PREFER_FAST_TRACE is now mutually exclusive with OPTIX_BUILD_FLAG_PREFER_FAST_BUILD. Previously FAST_TRACE would override FAST_BUILD.Denoiser- Added new pixel formats for input guide layers - OPTIX_PIXEL_FORMAT_HALF1 - OPTIX_PIXEL_FORMAT_FLOAT1- Added new model - OPTIX_DENOISER_MODEL_KIND_TEMPORAL_UPSCALE2X- Added new guide layer - flowTrustworthiness- Added OptixDenoiserAOVType to the OptixDenoiserLayerRemoved OptixPipelineLinkOptions::debugLevel as it doesn't do anything and is unnecessaryNew and updated SDK samples - Headers have been rearranged to avoid the need of optix_7_* headers. No code changes should beexpected to accommodate this change.- New sample optixDisplacedMicroMesh - Demonstrates use of displaced micro meshes to display finer grained meshes with less use ofmemory- Updated optixCurves sample to include --ribbon option - Demonstrates use of new flat quadratic B-spline curveWhen debugging device code in OptiX shaders, you will need to set the environment variableOPTIX_FORCE_DEPRECATED_LAUNCHER to 1 prior to running the application