• Stars
    star
    467
  • Rank 93,935 (Top 2 %)
  • Language
    C++
  • Created almost 5 years ago
  • Updated almost 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

AMD FEMFX v0.1.0

FEMFX is a multithreaded CPU library for deformable material physics, using the Finite Element Method (FEM). Solid objects are represented as a mesh of tetrahedral elements, and each element has material parameters that control stiffness, how volume changes with deformation, and stress limits where fracture or plastic (permanent) deformation occur. The model supports a wide range of materials and interactions between materials. We intend for these features to complement rather than replace traditional rigid body physics. The system is designed with the following considerations:

  • Fidelity: realistic-looking wood, metal, plastic, even glass, because they bend and break according to stress as real materials do.
  • Deformation effects: non-rigid use cases such as soft-body objects, bending or warping objects. It is not just a visual effect, but materials will resist or push back on other objects.
  • Changing material on the fly: you can change the settings to make the same object behave very differently, e.g., turn gelatinous or melt
  • Interesting physics interactions for gameplay or puzzles

The library uses extensive multithreading to utilize multicore CPUs and benefit from the trend of increasing CPU core counts.

Included in this release

  • Source code for FEMFX library
  • Houdini plugin for content creation
  • Sample code for loading and preprocessing content for rendering
  • Sample threading utilities
  • A basic graphical sample

In a separate release, we provide a plugin for Unreal Engine that demonstrates more advanced rendering of FEM objects. Instructions for access are here: https://github.com/GPUOpen-LibrariesAndSDKs/GameEngineIntegrations

Dependencies The sample code has some dependencies on external frameworks which must be downloaded separately:

System requirements

  • AMD Ryzenâ„¢ 7 2700X Processor or equivalent
  • Windows® 10
  • Visual Studio 2017 or Visual Studio 2019

Files:

  1. Documentation
    • amd_femfx\docs\
  2. Library
    • amd_femfx\inc\ : Public API (Look first at AMD_FEMFX.h)
    • amd_femfx\src\ : Implementation files
  3. Sample code
    • samples\FEMFXViewer\ : Basic sample; displays tetrahedral meshes and debug information
    • samples\common\TestScenes.*: Setup for tech demo scenes used by FEMFXViewer
    • samples\common\FemResource.* : Container for the data loaded from a .FEM file
    • samples\common\LoadFem.*: Code for parsing a .FEM and loading into an FEMResource
    • samples\common\RenderTetAssignment.* : Assigns rendering mesh vertices to tetrahedra for skinning
    • samples\ExampleRigidBodies\ : Basic demonstration of interfacing an external rigid body system with FEMFX library
    • samples\sample_task_system\ : Sample task system library interfaced with FEMFX
  4. Houdini plugin for content creation
    • houdini16.5\AMD_FEM_Assets.otl
  5. External dependencies
  6. Some individual components
    • amd_femfx\inc\Vectormath\ : 3D vector/matrix math
    • amd_femfx\src\PrimitiveCollision\ : Triangle and box collision operations, intersection and CCD
    • amd_femfx\src\Common\FEMFXSvd3x3.* : 3x3 SVD
    • amd_femfx\src\Threading\ : Async parallel-for and task graph support
    • samples\sample_task_system\TL* : Async task system implementation

More Repositories

1

FidelityFX-FSR

FidelityFX Super Resolution
C
2,037
star
2

FidelityFX-FSR2

FidelityFX Super Resolution 2
C
1,924
star
3

TressFX

DirectX 12 and Vulkan libraries that provide convenient access to realistically rendered and simulated hair and fur
C++
771
star
4

FidelityFX

A set of AMD provided GPU effects with provided source and sample implementations
365
star
5

FidelityFX-SSSR

Stochastic Screen Space Reflections (SSSR)
C
278
star
6

GeometryFX

DirectX 11 library that provides convenient access to compute-based triangle filtering (CTF)
C++
224
star
7

FidelityFX-CLI

FidelityFX CLI
C
205
star
8

FidelityFX-CAS

Contrast Adaptive Sharpening (CAS)
C
201
star
9

FidelityFX-SPD

Single Pass Downsampler (SPD)
Objective-C
183
star
10

ShadowFX

DirectX 11 and 12 library that provides a scalable and GCN-optimized solution for deferred shadow filtering
C++
165
star
11

FidelityFX-CACAO

Combined Adaptive Compute Ambient Occlusion (CACAO)
C++
143
star
12

FidelityFX-Denoiser

FidelityFX Denoiser
C
141
star
13

FidelityFX-ParallelSort

FidelityFX Parallel Sort
C
105
star
14

FidelityFX-FSR-Unity-URP

FidelityFX FSR 1.0 for the Unity URP
104
star
15

FidelityFX-FSR2-Unity-URP

FidelityFX FSR 2 for the Unity URP
C++
98
star
16

DepthOfFieldFX

DirectX 11 library that provides a GCN-optimized Compute Shader implementation of Depth of Field
C++
87
star
17

FidelityFX-LPM

Luma Preserving Mapper (LPM)
C
87
star
18

Hybrid-Shadows

A sample demonstrating hybrid ray tracing and rasterisation for shadow rendering and use of the FidelityFX Denoiser.
C++
59
star
19

FidelityFX-VariableShading

FidelityFX Variable Shading
C
52
star
20

Hybrid-Stochastic-Reflections

A sample demonstrating hybrid ray tracing and rasterisation for reflections.
Batchfile
52
star