- 有什么新内容?
- 技术
- 技术
- FidelityFX 模糊 1.1
- FidelityFX 面包屑 1.0.1
- FidelityFX Brixelizer 1.0
- FidelityFX Brixelizer GI 1.0.1
- FidelityFX Classifier 1.3
- FidelityFX 组合自适应计算环境光遮蔽 (CACAO) 1.4
- FidelityFX 对比度自适应锐化 1.2
- FidelityFX 降噪器 1.3
- FidelityFX 景深 1.1
- FidelityFX 帧插值 1.1.3
- FidelityFX 帧插值交换链 1.1.3
- FidelityFX 镜头 1.1
- FidelityFX 保持亮度映射器 1.4
- FidelityFX 光流 1.1.2
- FidelityFX 并行排序 1.3
- FidelityFX 单通道降采样器 2.2
- FidelityFX 随机屏幕空间反射 1.5
- FidelityFX Super Resolution 3.1.4 (FSR3) - 升采样和帧生成
- FidelityFX Super Resolution 1.2 (FSR1)
- FidelityFX Super Resolution 2.3.3 (FSR2)
- FidelityFX Super Resolution 3.1.4 (FSR3) - 升采样器
- FidelityFX 可变着色 1.2
- 许可证
- 参考文档
- Classes
- AnimatedTexturesRenderModule
- BlurRenderModule
- BreadcrumbsRenderModule
- BrixelizerGIRenderModule
- CACAORenderModule
- CASRenderModule
- CacaoSample
- DoFRenderModule
- FSRRenderModule
- GBufferRenderModule
- GLSLCompiler
- GPUParticleRenderModule
- HLSLCompiler
- HybridReflectionsRenderModule
- HybridShadowsRenderModule
- ICompiler
- LPMRenderModule
- LensRenderModule
- LightingRenderModule
- ParallelSort
- ParallelSortRenderModule
- RasterShadowRenderModule
- SPDRenderModule
- SSSRRenderModule
- SkyDomeRenderModule
- TAARenderModule
- TranslucencyRenderModule
- VRSRenderModule
- Structs
- AnimSampler
- BilinearSamplingData
- BlurRenderModule::ComparisonConstants
- BlurRenderModule::Constants
- BlurRenderModule::MultiPassParameterSets
- BlurRenderModule::ParameterSets
- BrixelizerExampleConstants
- BrixelizerGIRenderModule::BrixelizerBufferInfo
- BrixelizerGIRenderModule::BrixelizerInstanceInfo
- CacaoPreset
- CameraInformation
- ClassifyResults
- DepthExtents
- FFX_CACAO_BilateralBufferVal
- FFX_CACAO_Edges_4
- FFX_CACAO_PrepareNormalsInputDepths
- FFX_CACAO_SSAOHits
- FFX_CACAO_SSAOSampleData
- FFX_DNSR_Reflections_Moments
- FFX_DNSR_Reflections_NeighborhoodSample
- FetchedBicubicSamples
- FetchedBilinearSamples
- FfxAllocationCallbacks
- FfxBarrierDescription
- FfxBlurContext
- FfxBlurContextDescription
- FfxBlurDispatchDescription
- FfxBreadcrumbsBlockData
- FfxBreadcrumbsCommandListDescription
- FfxBreadcrumbsContext
- FfxBreadcrumbsContextDescription
- FfxBreadcrumbsMarkersStatus
- FfxBreadcrumbsNameTag
- FfxBreadcrumbsPipelineStateDescription
- FfxBrixelizerAABB
- FfxBrixelizerBakedUpdateDescription
- FfxBrixelizerBasicMeshInfo
- FfxBrixelizerBrixelizationJob
- FfxBrixelizerBufferDescription
- FfxBrixelizerBuildInfo
- FfxBrixelizerCRItem
- FfxBrixelizerCRItemPacked
- FfxBrixelizerCRVoxelTriangleBounds
- FfxBrixelizerCascadeDescription
- FfxBrixelizerCascadeInfo
- FfxBrixelizerCascadeResources
- FfxBrixelizerCascadeStats
- FfxBrixelizerContext
- FfxBrixelizerContextDescription
- FfxBrixelizerContextInfo
- FfxBrixelizerContextStats
- FfxBrixelizerDebugAABB
- FfxBrixelizerDebugCounters
- FfxBrixelizerDebugInfo
- FfxBrixelizerDebugVisualizationDescription
- FfxBrixelizerGIConstants
- FfxBrixelizerGIContext
- FfxBrixelizerGIContextDescription
- FfxBrixelizerGIDebugDescription
- FfxBrixelizerGIDispatchDescription
- FfxBrixelizerGIPassConstants
- FfxBrixelizerGIProbeSpawnInfo
- FfxBrixelizerGIScalingConstants
- FfxBrixelizerGISpecularNeighborhoodSample
- FfxBrixelizerGITracingConstants
- FfxBrixelizerHit
- FfxBrixelizerHitRaw
- FfxBrixelizerHitWithNormal
- FfxBrixelizerIndexRef
- FfxBrixelizerIndirectOffsets
- FfxBrixelizerInstanceDescription
- FfxBrixelizerInstanceInfo
- FfxBrixelizerInstanceReference
- FfxBrixelizerRawCascadeDescription
- FfxBrixelizerRawCascadeUpdateDescription
- FfxBrixelizerRawContext
- FfxBrixelizerRawContextDescription
- FfxBrixelizerRawInstanceDescription
- FfxBrixelizerRawJobDescription
- FfxBrixelizerRayDesc
- FfxBrixelizerResources
- FfxBrixelizerScratchCounters
- FfxBrixelizerStats
- FfxBrixelizerTriangle
- FfxBrixelizerTrianglePartial
- FfxBrixelizerTrianglePartialCompressed
- FfxBrixelizerTrianglePos
- FfxBrixelizerTriangleReference
- FfxBrixelizerUpdateDescription
- FfxBufferSRV
- FfxBufferUAV
- FfxBxAtlasBounds
- FfxCacaoBufferSizeInfo
- FfxCacaoConstants
- FfxCacaoContext
- FfxCacaoContextDescription
- FfxCacaoDispatchDescription
- FfxCacaoSettings
- FfxCasContext
- FfxCasContextDescription
- FfxCasDispatchDescription
- FfxClassifierContext
- FfxClassifierContextDescription
- FfxClassifierReflectionDispatchDescription
- FfxClassifierShadowDispatchDescription
- FfxClearFloatJobDescription
- FfxComputeJobDescription
- FfxConstantBuffer
- FfxCopyJobDescription
- FfxCreateResourceDescription
- FfxDebugViewport
- FfxDenoiserContext
- FfxDenoiserContextDescription
- FfxDenoiserReflectionsDispatchDescription
- FfxDenoiserShadowsDispatchDescription
- FfxDeviceCapabilities
- FfxDimensions2D
- FfxDiscardJobDescription
- FfxDofAccumulators
- FfxDofBucket
- FfxDofContext
- FfxDofContextDescription
- FfxDofDispatchDescription
- FfxDofInputState
- FfxDofRingParams
- FfxDofSample
- FfxDofTileClass
- FfxEffectBindlessConfig
- FfxEffectMemoryUsage
- FfxExecuteGPUJobParams
- FfxFloatCoords2D
- FfxFrameGenerationConfig
- FfxFrameGenerationDispatchDescription
- FfxFrameInterpolationContext
- FfxFrameInterpolationContextDescription
- FfxFrameInterpolationDebugViewport
- FfxFrameInterpolationDispatchDescription
- FfxFrameInterpolationPrepareDescription
- FfxFrameInterpolationSharedResourceDescriptions
- FfxFsr1Context
- FfxFsr1ContextDescription
- FfxFsr1DispatchDescription
- FfxFsr2Context
- FfxFsr2ContextDescription
- FfxFsr2DispatchDescription
- FfxFsr2GenerateReactiveDescription
- FfxFsr3Context
- FfxFsr3ContextDescription
- FfxFsr3DispatchFrameGenerationPrepareDescription
- FfxFsr3DispatchUpscaleDescription
- FfxFsr3GenerateReactiveDescription
- FfxFsr3UpscalerContext
- FfxFsr3UpscalerContextDescription
- FfxFsr3UpscalerDispatchDescription
- FfxFsr3UpscalerGenerateReactiveDescription
- FfxFsr3UpscalerSharedResourceDescriptions
- FfxGpuJobDescription
- FfxIntCoords2D
- FfxInterface
- FfxInternalResourceDescription
- FfxLensContext
- FfxLensContextDescription
- FfxLensDispatchDescription
- FfxLpmContext
- FfxLpmContextDescription
- FfxLpmDispatchDescription
- FfxOpticalflowContext
- FfxOpticalflowContextDescription
- FfxOpticalflowDispatchDescription
- FfxOpticalflowSharedResourceDescriptions
- FfxParallelSortConstants
- FfxParallelSortContext
- FfxParallelSortContextDescription
- FfxParallelSortDispatchDescription
- FfxPipelineDescription
- FfxPipelineState
- FfxPresentCallbackDescription
- FfxPresentXParams
- FfxRasterJobDescription
- FfxRay
- FfxRect2D
- FfxResource
- FfxResourceBinding
- FfxResourceDescription
- FfxResourceInitData
- FfxResourceInternal
- FfxRootConstantAllocation
- FfxRootConstantDescription
- FfxSamplerDescription
- FfxShaderBlob
- FfxSpdContext
- FfxSpdContextDescription
- FfxSpdDispatchDescription
- FfxSssrContext
- FfxSssrContextDescription
- FfxSssrDispatchDescription
- FfxStaticResourceDescription
- FfxSwapchainFramePacingTuning
- FfxSwapchainReplacementFunctions
- FfxTextureSRV
- FfxTextureUAV
- FfxViewDescription
- FfxVrsContext
- FfxVrsContextDescription
- FfxVrsDispatchDescription
- FrameInfo
- FrameInterpolationReplacementParametersVK
- GBufferRenderModule::BoundTexture
- GBufferRenderModule::PipelineRenderGroup
- GBufferRenderModule::PipelineSurfaceRenderInfo
- GLSLShaderBinary
- GPUParticlePartA
- GPUParticlePartB
- HDRCBData
- HLSLDxcShaderBinary
- HLSLFxcShaderBinary
- HybridReflectionsRenderModule::RTInfoTables
- HybridReflectionsRenderModule::RTInfoTables::BoundTexture
- HybridShadowsRenderModule::DebugTilesConstantBuffer
- HybridShadowsRenderModule::RTConstantBuffer
- IReflectionData
- IShaderBinary
- IndirectCommand
- Instance_Info
- InstanceInformation
- InterpolationSourceColor
- LightInformation
- LumaInstabilityFactorData
- MagnifierCBData
- Material_Info
- MaterialInfo
- MaterialInformation
- MatrixPair
- OptionalTransparencyOptions
- Permutation
- PreviousLumaBilinearSamplesData
- RasterShadowRenderModule::BoundTexture
- RasterShadowRenderModule::PipelineRenderGroup
- RasterShadowRenderModule::PipelineSurfaceRenderInfo
- RasterShadowRenderModule::ShadowMapInfo
- RaySetup
- SPDDownsampleInfo
- SPDRenderModule::PipelineSet
- SPDVerifyConstants
- SampleSet
- SampleStreamState
- SceneInformation
- SceneLightingInformation
- ShaderResourceInfo
- ShadingChangeLumaInfo
- Surface_Info
- SwapchainCBData
- TextureIndices
- Tile
- TranslucencyRenderModule::BoundTexture
- TranslucencyRenderModule::ParticlesRenderData
- TranslucencyRenderModule::PipelineHashObject
- TranslucencyRenderModule::PipelineParticlesRenderInfo
- TranslucencyRenderModule::PipelineSurfaceRenderInfo
- TranslucencyRenderModule::TranslucentRenderData
- UpscalerInformation
- VRSRenderModule::MotionVectorsRenderData
- VRSRenderModule::PipelineHashObject
- VRSRenderModule::PipelineSurfaceRenderInfo
- VS_SURFACE_OUTPUT
- VectorFieldEntry
- VertexStrides
- VkDeviceContext
- VkFrameInterpolationInfoFFX
- VkQueueInfoFFX
- 免责声明
- FidelityFX SDK v2.0 文档 ⧉
FidelityFX 并行排序 1.3
FidelityFX Parallel Sort 是一种使用基于 GPU 的基数排序算法来排序提供的键缓冲区和可选负载的技术。
着色语言要求
HLSL GLSL CS_6_0
技术
FidelityFX Parallel Sort 将使用 RDNA 优化的 GPU 基数排序算法对提供的键缓冲区和可选负载缓冲区进行排序,这是目前可用的最大数据集最快的排序算法之一。
该算法通过操作连续数据的 块 来实现最佳读取。线程组将根据数据集大小对一个或多个 块 的数据进行排序,并以每线程组可配置数量的线程(当前设置为 128)执行。
为了完全排序 32 位键的缓冲区,该算法会调用 8 次迭代,每次迭代将执行以下步骤中的 4 位增量:
- Count: 根据处理的位数统计局部排序集中的值数量。
- ReduceCount: 进一步减少值计数以对齐线程组大小,从而加快线程组之间的偏移计算。
- ScanPrefix: 对减少的计数进行求和,以提供线程组偏移。
- ScanPrefix + Add: 对线程计数进行求和,并与线程组偏移量相加,以提供最终的偏移位置。
- Scatter: 将源值复制到其新位置(已排序到目前处理的 n 位)。

C++ 示例
通过静态库
FfxParallelSortDispatchDescription dispatchDesc = {};dispatchDesc.commandList = ffxGetCommandList(pCmdList);dispatchDesc.keyBuffer = ffxGetResource(m_pKeysToSort->GetResource(), L"ParallelSort_KeyBuffer", FFX_RESOURCE_STATE_PIXEL_COMPUTE_READ);dispatchDesc.payloadBuffer = ffxGetResource(m_pPayloadToSort->GetResource(), L"ParallelSort_PayloadBuffer", FFX_RESOURCE_STATE_PIXEL_COMPUTE_READ);dispatchDesc.numKeysToSort = <Number of keys to sort>;
FfxErrorCode errorCode = ffxParallelSortContextDispatch(&m_ParallelSortContext, &dispatchDesc);FFX_ASSERT(errorCode == FFX_OK);