diff options
Diffstat (limited to 'doc/manual.html')
| -rw-r--r-- | doc/manual.html | 128 |
1 files changed, 68 insertions, 60 deletions
diff --git a/doc/manual.html b/doc/manual.html index be6fc69..6652a87 100644 --- a/doc/manual.html +++ b/doc/manual.html @@ -7,7 +7,7 @@ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="x-ua-compatible" content="IE=Edge"/> - <title>Manual — NVIDIA Flex 1.1.0 documentation</title> + <title>Manual — NVIDIA Flex 1.2.0 documentation</title> <link rel="stylesheet" href="_static/default.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> @@ -18,7 +18,7 @@ <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: './', - VERSION: '1.1.0', + VERSION: '1.2.0', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true @@ -31,7 +31,7 @@ <script type="text/javascript" src="_static/bootstrap.js"></script> <script type="text/javascript" src="_static/jquery.cookie.js"></script> <script type="text/javascript" src="_static/jquery.storageapi.js"></script> - <link rel="top" title="NVIDIA Flex 1.1.0 documentation" href="index.html" /> + <link rel="top" title="NVIDIA Flex 1.2.0 documentation" href="index.html" /> <link rel="next" title="Release Notes" href="releasenotes.html" /> <link rel="prev" title="NVIDIA Flex" href="index.html" /> </head> @@ -57,7 +57,7 @@ <div class="masthead"> <div class="row"> <ul class="breadcrumb"> - <li><a href="index.html">NVIDIA Flex 1.1.0 documentation</a></li> + <li><a href="index.html">NVIDIA Flex 1.2.0 documentation</a></li> </ul> </div> </div> @@ -115,17 +115,18 @@ </ul> </li> <li class="toctree-l1"><a class="reference internal" href="releasenotes.html">Release Notes</a><ul> -<li class="toctree-l2"><a class="reference internal" href="releasenotes.html#id1">1.1.0</a></li> -<li class="toctree-l2"><a class="reference internal" href="releasenotes.html#id2">1.0.0</a></li> -<li class="toctree-l2"><a class="reference internal" href="releasenotes.html#id3">0.9.5</a></li> -<li class="toctree-l2"><a class="reference internal" href="releasenotes.html#id4">0.9.0</a></li> -<li class="toctree-l2"><a class="reference internal" href="releasenotes.html#id5">0.8.0</a></li> -<li class="toctree-l2"><a class="reference internal" href="releasenotes.html#id6">0.2.5</a></li> -<li class="toctree-l2"><a class="reference internal" href="releasenotes.html#id7">0.2.3</a></li> -<li class="toctree-l2"><a class="reference internal" href="releasenotes.html#id8">0.2.2</a></li> -<li class="toctree-l2"><a class="reference internal" href="releasenotes.html#id9">0.2.1</a></li> -<li class="toctree-l2"><a class="reference internal" href="releasenotes.html#id10">0.2.0</a></li> -<li class="toctree-l2"><a class="reference internal" href="releasenotes.html#id11">0.1.0</a></li> +<li class="toctree-l2"><a class="reference internal" href="releasenotes.html#id1">1.2.0</a></li> +<li class="toctree-l2"><a class="reference internal" href="releasenotes.html#id2">1.1.0</a></li> +<li class="toctree-l2"><a class="reference internal" href="releasenotes.html#id3">1.0.0</a></li> +<li class="toctree-l2"><a class="reference internal" href="releasenotes.html#id4">0.9.5</a></li> +<li class="toctree-l2"><a class="reference internal" href="releasenotes.html#id5">0.9.0</a></li> +<li class="toctree-l2"><a class="reference internal" href="releasenotes.html#id6">0.8.0</a></li> +<li class="toctree-l2"><a class="reference internal" href="releasenotes.html#id7">0.2.5</a></li> +<li class="toctree-l2"><a class="reference internal" href="releasenotes.html#id8">0.2.3</a></li> +<li class="toctree-l2"><a class="reference internal" href="releasenotes.html#id9">0.2.2</a></li> +<li class="toctree-l2"><a class="reference internal" href="releasenotes.html#id10">0.2.1</a></li> +<li class="toctree-l2"><a class="reference internal" href="releasenotes.html#id11">0.2.0</a></li> +<li class="toctree-l2"><a class="reference internal" href="releasenotes.html#id12">0.1.0</a></li> </ul> </li> </ul> @@ -179,21 +180,26 @@ <div class="section" id="quick-start"> <span id="quick"></span><h3>Quick Start<a class="headerlink" href="#quick-start" title="Permalink to this headline">ΒΆ</a></h3> <p>The example code below shows how to initialize the library, create a new solver (similar to a scene in PhysX), and how to tick the solver:</p> -<div class="highlight-cpp"><div class="highlight"><pre><span class="cp">#include <NvFlex.h></span> +<div class="highlight-cpp"><div class="highlight"><pre><span class="n">NvFlexLibrary</span><span class="o">*</span> <span class="n">library</span> <span class="o">=</span> <span class="n">NvFlexInit</span><span class="p">();</span> -<span class="n">NvFlexLibrary</span><span class="o">*</span> <span class="n">library</span> <span class="o">=</span> <span class="n">NvFlexInit</span><span class="p">();</span> -<span class="n">NvFlexSolver</span><span class="o">*</span> <span class="n">solver</span> <span class="o">=</span> <span class="n">NvFlexCreateSolver</span><span class="p">(</span><span class="n">library</span><span class="p">);</span> +<span class="c1">// create new solver</span> +<span class="n">NvFlexSolverDesc</span> <span class="n">solverDesc</span><span class="p">;</span> +<span class="n">NvFlexSetSolverDescDefaults</span><span class="p">(</span><span class="o">&</span><span class="n">solverDesc</span><span class="p">);</span> +<span class="n">solverDesc</span><span class="p">.</span><span class="n">maxParticles</span> <span class="o">=</span> <span class="n">n</span><span class="p">;</span> +<span class="n">solverDesc</span><span class="p">.</span><span class="n">maxDiffuseParticles</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> -<span class="n">NvFlexBuffer</span><span class="o">*</span> <span class="n">particleBuffer</span> <span class="o">=</span> <span class="n">NvlexAllocBuffer</span><span class="p">(</span><span class="n">library</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">Vec4</span><span class="p">),</span> <span class="n">eNvFlexBufferHost</span><span class="p">);</span> -<span class="n">NvFlexBuffer</span><span class="o">*</span> <span class="n">velocityBuffer</span> <span class="o">=</span> <span class="n">NvlexAllocBuffer</span><span class="p">(</span><span class="n">library</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">Vec4</span><span class="p">),</span> <span class="n">eNvFlexBufferHost</span><span class="p">);</span> -<span class="n">NvFlexBuffer</span><span class="o">*</span> <span class="n">phaseBuffer</span> <span class="o">=</span> <span class="n">NvlexAllocBuffer</span><span class="p">(</span><span class="n">library</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="kt">int</span><span class="p">),</span> <span class="n">eNvFlexBufferHost</span><span class="p">);</span> +<span class="n">NvFlexSolver</span><span class="o">*</span> <span class="n">solver</span> <span class="o">=</span> <span class="n">NvFlexCreateSolver</span><span class="p">(</span><span class="n">library</span><span class="p">,</span> <span class="o">&</span><span class="n">solverDesc</span><span class="p">);</span> + +<span class="n">NvFlexBuffer</span><span class="o">*</span> <span class="n">particleBuffer</span> <span class="o">=</span> <span class="n">NvFlexAllocBuffer</span><span class="p">(</span><span class="n">library</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">float4</span><span class="p">),</span> <span class="n">eNvFlexBufferHost</span><span class="p">);</span> +<span class="n">NvFlexBuffer</span><span class="o">*</span> <span class="n">velocityBuffer</span> <span class="o">=</span> <span class="n">NvFlexAllocBuffer</span><span class="p">(</span><span class="n">library</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">float4</span><span class="p">),</span> <span class="n">eNvFlexBufferHost</span><span class="p">);</span> +<span class="n">NvFlexBuffer</span><span class="o">*</span> <span class="n">phaseBuffer</span> <span class="o">=</span> <span class="n">NvFlexAllocBuffer</span><span class="p">(</span><span class="n">library</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="kt">int</span><span class="p">),</span> <span class="n">eNvFlexBufferHost</span><span class="p">);</span> <span class="k">while</span><span class="p">(</span><span class="o">!</span><span class="n">done</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// map buffers for reading / writing</span> - <span class="n">float4</span><span class="o">*</span> <span class="n">particles</span> <span class="o">=</span> <span class="p">(</span><span class="n">float4</span><span class="o">*</span><span class="p">)</span><span class="n">NvlexMap</span><span class="p">(</span><span class="n">particles</span><span class="p">,</span> <span class="n">eNvFlexMapWait</span><span class="p">);</span> - <span class="n">float3</span><span class="o">*</span> <span class="n">velocities</span> <span class="o">=</span> <span class="p">(</span><span class="n">float3</span><span class="o">*</span><span class="p">)</span><span class="n">NvFlexMap</span><span class="p">(</span><span class="n">velocities</span><span class="p">,</span> <span class="n">eNvFlexMapWait</span><span class="p">);</span> - <span class="kt">int</span><span class="o">*</span> <span class="n">phases</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="o">*</span><span class="p">)</span><span class="n">NvFlexMap</span><span class="p">(</span><span class="n">phases</span><span class="p">,</span> <span class="n">eNvFlexMapWait</span><span class="p">);</span> + <span class="n">float4</span><span class="o">*</span> <span class="n">particles</span> <span class="o">=</span> <span class="p">(</span><span class="n">float4</span><span class="o">*</span><span class="p">)</span><span class="n">NvFlexMap</span><span class="p">(</span><span class="n">particleBuffer</span><span class="p">,</span> <span class="n">eNvFlexMapWait</span><span class="p">);</span> + <span class="n">float3</span><span class="o">*</span> <span class="n">velocities</span> <span class="o">=</span> <span class="p">(</span><span class="n">float3</span><span class="o">*</span><span class="p">)</span><span class="n">NvFlexMap</span><span class="p">(</span><span class="n">velocityBuffer</span><span class="p">,</span> <span class="n">eNvFlexMapWait</span><span class="p">);</span> + <span class="kt">int</span><span class="o">*</span> <span class="n">phases</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="o">*</span><span class="p">)</span><span class="n">NvFlexMap</span><span class="p">(</span><span class="n">phaseBuffer</span><span class="p">,</span> <span class="n">eNvFlexMapWait</span><span class="p">);</span> <span class="c1">// spawn (user method)</span> <span class="n">SpawnParticles</span><span class="p">(</span><span class="n">particles</span><span class="p">,</span> <span class="n">velocities</span><span class="p">,</span> <span class="n">phases</span><span class="p">);</span> @@ -207,17 +213,17 @@ <span class="n">NvFlexUnmap</span><span class="p">(</span><span class="n">phaseBuffer</span><span class="p">);</span> <span class="c1">// write to device (async)</span> - <span class="n">NvFlexSetParticles</span><span class="p">(</span><span class="n">particleBuffer</span><span class="p">,</span> <span class="n">n</span><span class="p">);</span> - <span class="n">NvFlexSetVelocities</span><span class="p">(</span><span class="n">velocityBuffer</span><span class="p">,</span> <span class="n">n</span><span class="p">);</span> - <span class="n">NvFlexSetPhases</span><span class="p">(</span><span class="n">phaseBuffer</span><span class="p">,</span> <span class="n">n</span><span class="p">);</span> + <span class="n">NvFlexSetParticles</span><span class="p">(</span><span class="n">solver</span><span class="p">,</span> <span class="n">particleBuffer</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span> + <span class="n">NvFlexSetVelocities</span><span class="p">(</span><span class="n">solver</span><span class="p">,</span> <span class="n">velocityBuffer</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span> + <span class="n">NvFlexSetPhases</span><span class="p">(</span><span class="n">solver</span><span class="p">,</span> <span class="n">phaseBuffer</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span> <span class="c1">// tick</span> <span class="n">NvFlexUpdateSolver</span><span class="p">(</span><span class="n">solver</span><span class="p">,</span> <span class="n">dt</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span> <span class="c1">// read back (async)</span> - <span class="n">NvFlexGetParticles</span><span class="p">(</span><span class="n">particleBuffer</span><span class="p">,</span> <span class="n">n</span><span class="p">);</span> - <span class="n">NvFlexGetVelocities</span><span class="p">(</span><span class="n">velocityBuffer</span><span class="p">,</span> <span class="n">n</span><span class="p">);</span> - <span class="n">NvFlexGetPhases</span><span class="p">(</span><span class="n">phaseBuffer</span><span class="p">,</span> <span class="n">n</span><span class="p">);</span> + <span class="n">NvFlexGetParticles</span><span class="p">(</span><span class="n">solver</span><span class="p">,</span> <span class="n">particleBuffer</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span> + <span class="n">NvFlexGetVelocities</span><span class="p">(</span><span class="n">solver</span><span class="p">,</span> <span class="n">velocityBuffer</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span> + <span class="n">NvFlexGetPhases</span><span class="p">(</span><span class="n">solver</span><span class="p">,</span> <span class="n">phaseBuffer</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span> <span class="p">}</span> <span class="n">NvFlexFreeBuffer</span><span class="p">(</span><span class="n">particleBuffer</span><span class="p">);</span> @@ -250,9 +256,9 @@ <span class="n">NvFlexBuffer</span><span class="o">*</span> <span class="n">phaseBuffer</span> <span class="o">=</span> <span class="n">NvFlexAllocBuffer</span><span class="p">(</span><span class="n">library</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="kt">int</span><span class="p">),</span> <span class="n">eNvFlexBufferHost</span><span class="p">);</span> <span class="c1">// map buffers for reading / writing</span> -<span class="n">float4</span><span class="o">*</span> <span class="n">particles</span> <span class="o">=</span> <span class="p">(</span><span class="n">float4</span><span class="o">*</span><span class="p">)</span><span class="n">NvFlexMap</span><span class="p">(</span><span class="n">particles</span><span class="p">,</span> <span class="n">eNvFlexMapWait</span><span class="p">);</span> -<span class="n">float3</span><span class="o">*</span> <span class="n">velocities</span> <span class="o">=</span> <span class="p">(</span><span class="n">float3</span><span class="o">*</span><span class="p">)</span><span class="n">NvFlexMap</span><span class="p">(</span><span class="n">velocities</span><span class="p">,</span> <span class="n">eNvFlexMapWait</span><span class="p">);</span> -<span class="kt">int</span><span class="o">*</span> <span class="n">phases</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="o">*</span><span class="p">)</span><span class="n">NvFlexMap</span><span class="p">(</span><span class="n">phases</span><span class="p">,</span> <span class="n">eFlexMapWait</span><span class="p">);</span> +<span class="n">float4</span><span class="o">*</span> <span class="n">particles</span> <span class="o">=</span> <span class="p">(</span><span class="n">float4</span><span class="o">*</span><span class="p">)</span><span class="n">NvFlexMap</span><span class="p">(</span><span class="n">particlesBuffer</span><span class="p">,</span> <span class="n">eNvFlexMapWait</span><span class="p">);</span> +<span class="n">float3</span><span class="o">*</span> <span class="n">velocities</span> <span class="o">=</span> <span class="p">(</span><span class="n">float3</span><span class="o">*</span><span class="p">)</span><span class="n">NvFlexMap</span><span class="p">(</span><span class="n">velocityBuffer</span><span class="p">,</span> <span class="n">eNvFlexMapWait</span><span class="p">);</span> +<span class="kt">int</span><span class="o">*</span> <span class="n">phases</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="o">*</span><span class="p">)</span><span class="n">NvFlexMap</span><span class="p">(</span><span class="n">phaseBuffer</span><span class="p">,</span> <span class="n">eFlexMapWait</span><span class="p">);</span> <span class="c1">// spawn particles</span> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o"><</span> <span class="n">n</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> @@ -268,9 +274,9 @@ <span class="n">NvFlexUnmap</span><span class="p">(</span><span class="n">phaseBuffer</span><span class="p">);</span> <span class="c1">// write to device (async)</span> -<span class="n">NvFlexSetParticles</span><span class="p">(</span><span class="n">particleBuffer</span><span class="p">,</span> <span class="n">n</span><span class="p">);</span> -<span class="n">NvFlexSetVelocities</span><span class="p">(</span><span class="n">velocityBuffer</span><span class="p">,</span> <span class="n">n</span><span class="p">);</span> -<span class="n">NvFlexSetPhases</span><span class="p">(</span><span class="n">phaseBuffer</span><span class="p">,</span> <span class="n">n</span><span class="p">);</span> +<span class="n">NvFlexSetParticles</span><span class="p">(</span><span class="n">solver</span><span class="p">,</span> <span class="n">particleBuffer</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span> +<span class="n">NvFlexSetVelocities</span><span class="p">(</span><span class="n">solver</span><span class="p">,</span> <span class="n">velocityBuffer</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span> +<span class="n">NvFlexSetPhases</span><span class="p">(</span><span class="n">solver</span><span class="p">,</span> <span class="n">phaseBuffer</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span> </pre></div> </div> <div class="section" id="radius"> @@ -309,7 +315,9 @@ <span class="n">activeIndices</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span> <span class="n">NvFlexUnmap</span><span class="p">(</span><span class="n">activeBuffer</span><span class="p">);</span> -<span class="n">NvFlexSetActive</span><span class="p">(</span><span class="n">solver</span><span class="p">,</span> <span class="n">activeBuffer</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span> + +<span class="n">NvFlexSetActive</span><span class="p">(</span><span class="n">solver</span><span class="p">,</span> <span class="n">activeBuffer</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">)</span> +<span class="n">NvFlexSetActiveCount</span><span class="p">(</span><span class="n">solver</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span> </pre></div> </div> <p><strong>Note:</strong> constraints referencing inactive particles may behave unexpectedly.</p> @@ -634,34 +642,34 @@ simulation. Diffuse particles can be created through the <strong>NvFlexSetDiffus <p>Synchronization occurs when you call <strong>NvFlexMap()</strong> on a simulation buffer. To avoid making the CPU wait a long time for the GPU to finish its work it is good practice to call <strong>NvFlexMap()</strong> as far away from the <strong>NvFlexUpdateSolver()</strong> and <strong>NvFlexGet*()</strong> as possible. This gives the GPU enough time to finish its work so that the new data is ready for when you call <strong>NvFlexMap()</strong>. The following snippet shows an example of this by performing the main game tick after the the read-back methods have been issued.:</p> <div class="highlight-cpp"><div class="highlight"><pre><span class="k">while</span> <span class="p">(</span><span class="o">!</span><span class="n">done</span><span class="p">)</span> <span class="p">{</span> - <span class="c1">// map buffers for reading / writing (synchronizes with GPU)</span> - <span class="n">float4</span><span class="o">*</span> <span class="n">particles</span> <span class="o">=</span> <span class="p">(</span><span class="n">float4</span><span class="o">*</span><span class="p">)</span><span class="n">NvFlexMap</span><span class="p">(</span><span class="n">particleBuffer</span><span class="p">,</span> <span class="n">eNvFlexMapWait</span><span class="p">);</span> - <span class="n">float3</span><span class="o">*</span> <span class="n">velocities</span> <span class="o">=</span> <span class="p">(</span><span class="n">float3</span><span class="o">*</span><span class="p">)</span><span class="n">NvFlexMap</span><span class="p">(</span><span class="n">velocityBuffer</span><span class="p">,</span> <span class="n">eNvFlexMapWait</span><span class="p">);</span> - <span class="kt">int</span><span class="o">*</span> <span class="n">phases</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="o">*</span><span class="p">)</span><span class="n">NvFlexMap</span><span class="p">(</span><span class="n">phaseBuffer</span><span class="p">,</span> <span class="n">eNvFlexMapWait</span><span class="p">);</span> +<span class="c1">// map buffers for reading / writing (synchronizes with GPU)</span> +<span class="n">float4</span><span class="o">*</span> <span class="n">particles</span> <span class="o">=</span> <span class="p">(</span><span class="n">float4</span><span class="o">*</span><span class="p">)</span><span class="n">NvFlexMap</span><span class="p">(</span><span class="n">particleBuffer</span><span class="p">,</span> <span class="n">eNvFlexMapWait</span><span class="p">);</span> +<span class="n">float3</span><span class="o">*</span> <span class="n">velocities</span> <span class="o">=</span> <span class="p">(</span><span class="n">float3</span><span class="o">*</span><span class="p">)</span><span class="n">NvFlexMap</span><span class="p">(</span><span class="n">velocityBuffer</span><span class="p">,</span> <span class="n">eNvFlexMapWait</span><span class="p">);</span> +<span class="kt">int</span><span class="o">*</span> <span class="n">phases</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="o">*</span><span class="p">)</span><span class="n">NvFlexMap</span><span class="p">(</span><span class="n">phaseBuffer</span><span class="p">,</span> <span class="n">eNvFlexMapWait</span><span class="p">);</span> - <span class="c1">// application CPU-side particle update</span> - <span class="n">UpdateBuffers</span><span class="p">(</span><span class="n">particles</span><span class="p">,</span> <span class="n">velocities</span><span class="p">,</span> <span class="n">phases</span><span class="p">);</span> +<span class="c1">// application CPU-side particle update</span> +<span class="n">UpdateBuffers</span><span class="p">(</span><span class="n">particles</span><span class="p">,</span> <span class="n">velocities</span><span class="p">,</span> <span class="n">phases</span><span class="p">);</span> - <span class="c1">// unmap buffers</span> - <span class="n">NvFlexUnmap</span><span class="p">(</span><span class="n">particleBuffer</span><span class="p">);</span> - <span class="n">NvFlexUnmap</span><span class="p">(</span><span class="n">velocityBuffer</span><span class="p">);</span> - <span class="n">NvFlexUnmap</span><span class="p">(</span><span class="n">phaseBuffer</span><span class="p">);</span> +<span class="c1">// unmap buffers</span> +<span class="n">NvFlexUnmap</span><span class="p">(</span><span class="n">particleBuffer</span><span class="p">);</span> +<span class="n">NvFlexUnmap</span><span class="p">(</span><span class="n">velocityBuffer</span><span class="p">);</span> +<span class="n">NvFlexUnmap</span><span class="p">(</span><span class="n">phaseBuffer</span><span class="p">);</span> - <span class="c1">// write to device (async)</span> - <span class="n">NvFlexSetParticles</span><span class="p">(</span><span class="n">particleBuffer</span><span class="p">,</span> <span class="n">n</span><span class="p">);</span> - <span class="n">NvFlexSetVelocities</span><span class="p">(</span><span class="n">velocityBuffer</span><span class="p">,</span> <span class="n">n</span><span class="p">);</span> - <span class="n">NvFlexSetPhases</span><span class="p">(</span><span class="n">phaseBuffer</span><span class="p">,</span> <span class="n">n</span><span class="p">);</span> +<span class="c1">// write to device (async)</span> +<span class="n">NvFlexSetParticles</span><span class="p">(</span><span class="n">solver</span><span class="p">,</span> <span class="n">particleBuffer</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span> +<span class="n">NvFlexSetVelocities</span><span class="p">(</span><span class="n">solver</span><span class="p">,</span> <span class="n">velocityBuffer</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span> +<span class="n">NvFlexSetPhases</span><span class="p">(</span><span class="n">solver</span><span class="p">,</span> <span class="n">phaseBuffer</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span> - <span class="c1">// tick (async)</span> - <span class="n">NvFlexUpdateSolver</span><span class="p">(</span><span class="n">solver</span><span class="p">,</span> <span class="n">dt</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span> +<span class="c1">// tick (async)</span> +<span class="n">NvFlexUpdateSolver</span><span class="p">(</span><span class="n">solver</span><span class="p">,</span> <span class="n">dt</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span> - <span class="c1">// read back (async)</span> - <span class="n">NvFlexGetParticles</span><span class="p">(</span><span class="n">particleBuffer</span><span class="p">,</span> <span class="n">n</span><span class="p">);</span> - <span class="n">NvFlexGetVelocities</span><span class="p">(</span><span class="n">velocityBuffer</span><span class="p">,</span> <span class="n">n</span><span class="p">);</span> - <span class="n">NvFlexGetPhases</span><span class="p">(</span><span class="n">phaseBuffer</span><span class="p">,</span> <span class="n">n</span><span class="p">);</span> +<span class="c1">// read back (async)</span> +<span class="n">NvFlexGetParticles</span><span class="p">(</span><span class="n">solver</span><span class="p">,</span> <span class="n">particleBuffer</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span> +<span class="n">NvFlexGetVelocities</span><span class="p">(</span><span class="n">solver</span><span class="p">,</span> <span class="n">velocityBuffer</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span> +<span class="n">NvFlexGetPhases</span><span class="p">(</span><span class="n">solver</span><span class="p">,</span> <span class="n">phaseBuffer</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span> - <span class="c1">// Perform CPU work here while update and transfer are in flight</span> - <span class="n">TickGame</span><span class="p">()</span> +<span class="c1">// Perform CPU work here while update and transfer are in flight</span> +<span class="n">TickGame</span><span class="p">()</span> <span class="p">}</span> </pre></div> </div> @@ -708,7 +716,7 @@ simulation. Diffuse particles can be created through the <strong>NvFlexSetDiffus <div class="masthead"> <div class="row"> <ul class="breadcrumb"> - <li><a href="index.html">NVIDIA Flex 1.1.0 documentation</a></li> + <li><a href="index.html">NVIDIA Flex 1.2.0 documentation</a></li> </ul> </div> </div> |