Visualization framework powered by NVIDIA RTX technology

Overview

Introduction

VisRTX is a C++ rendering framework developed by the HPC Visualization Developer Technology team at NVIDIA.

VisRTX Teaser Mesh source: Kitware

Key features

  • Progressive forward pathtracing with next-event estimation and multiple importance sampling
  • Hardware acceleration through NVIDIA OptiX (Multi GPU)
  • Full MDL material support for physically-based BSDFs
  • AI denoiser
  • Triangle/sphere/cylinder/disk geometries
  • Directional/sphere/quad/spot/ambient/HDRI area lights
  • Perspective/orthographic cameras
  • Depth of field
  • Picking
  • Clipping planes
  • Tone mapping
  • OpenGL interop
  • Dynamic loading of VisRTX library
  • Simple C++ interface

Please note that this is a research project and work in progress.

Installation

Supported Platforms

VisRTX is supported on both Linux and Windows.

Prerequisites
Compile / Install

VisRTX requires a C++ compiler and uses the standard CMake compilation and installation procedure.

mkdir build && cd build
cmake PATH_TO_VISRTX
make
make install
Options
CMake Option Description
VISRTX_USAGE_REPORT_VERBOSITY Enables the usage report generated by OptiX. Possible values: 0/1/2/3.
VISRTX_USE_DEBUG_EXCEPTIONS Compiles VisRTX and the underlying OptiX kernels with debug exception handling enabled.
VISRTX_BUILD_SAMPLE Enables building of the sample applications.
VISRTX_SAMPLE_USE_DYNAMIC_LOADING Use dynamic loading rather than dynamic linking in the samples to load VisRTX.
VISRTX_SAMPLE_WITH_GLFW Enables GLFW-based OpenGL windows with GUI in the samples.
VISRTX_SAMPLE_WITH_EGL Enables EGL-based OpenGL offscreen interop in the samples (Linux only).
Compiling on Windows using Visual Studio 2017

On Windows, VisRTX can be compiled using Visual Studio's built-in CMake support.

Just place a CMakeSettings.json file with the following contents (adjust paths accordingly) next to VisRTX's CMakeLists.txt:

{
  "configurations": [
    {
      "name": "x64-Release",
      "generator": "Ninja",
      "configurationType": "Release",
      "inheritEnvironments": [
        "msvc_x64_x64"
      ],
      "buildRoot": "C:\\.build\\VisRTX\\${name}",
      "installRoot": "C:\\.install\\VisRTX",
      "cmakeCommandArgs": "",
      "buildCommandArgs": "-v",
      "ctestCommandArgs": "",
      "variables": [
        { "name": "OptiX_INSTALL_DIR", "value": "C:\\PATH\\TO\\OptiX-SDK-6.0.0" },
        { "name": "MDL_INSTALL_DIR", "value": "C:\\PATH\\TO\\mdl-sdk-317500.2554" },
        { "name": "VISRTX_BUILD_SAMPLE", "value": "ON" },
        { "name": "VISRTX_SAMPLE_USE_DYNAMIC_LOADING", "value": "ON" },
        { "name": "VISRTX_USAGE_REPORT_VERBOSITY", "value": "0" },
        { "name": "VISRTX_USE_DEBUG_EXCEPTIONS", "value": "OFF" }
      ]
    }
  ]
}

Examples

Several example applications are included showcasing and verifying the features of VisRTX.

The visRtxSampleBasic application combines most features of VisRTX in a single test bed using the general-purpose basic material, and has the optional parameters: benchmark, offscreen, egl, dump.

The visRtxSampleMeshViewer can be used to load a set of arbitrary OBJ meshes and apply MDL materials to them. visRtxSampleMDL loads a single mesh and renders multiple instances with various MDL materials.

Nested volumetric materials are demonstrated in visRtxSampleVolume.

The samples include a set of MDL material definitions based on the most common OSPRay materials with a similar parameter interface. These include ::OBJMaterial, ::CarPaint, ::Principled, ::Metal, ::Alloy, ::Glass, ::ThinGlass, ::MetallicPaint, and can be found in sample/data/ospray.mdl.

Example command line: ./visRtxSampleMeshViewer ::OBJMaterial cow.obj ::CarPaint car.obj ::MetallicPaint --plane

The samples can be easily changed to load MDL files and resources from disk, or switch from instance to class compilation.

Documentation

There is no official documentation yet, sorry!

The VisRTX.h header gives a concise overview of the API.

Most of the provided functionality is demonstrated in the included sample applications. See sample/Sample.h for basic framework setup.

Please note that this project is work in progress and the API as well as features can change.

Environment Variables

Some performance-relevant properties of the renderer can be overridden using the following environment variables, so an existing application can be tuned without recompilation.

Environment Variable Values
VISRTX_DEVICES list of int, e.g., 0, 1, 0,1
VISRTX_MIN_BOUNCES int > 0
VISRTX_MAX_BOUNCES int > 0
VISRTX_CLAMP_DIRECT float >= 0
VISRTX_CLAMP_INDIRECT float >= 0
VISRTX_TONE_MAPPING 0/1
VISRTX_DENOISER 0/1
VISRTX_SAMPLE_ALL_LIGHTS 0/1

MDL

For more advanced materials check out vMaterials, a curated collection of free-to-use MDL materials representing common real world materials used in Design and AEC workflows.

The MDL wrapper provided by VisRTX is self-contained and can be of interest to anyone who wants to access the MDL SDK from an OptiX-based application.

Features

  • Class and instance compilation
  • Load MDL from memory and disk (including texture resources)
  • Update parameters (and recompile if necessary)
  • Arbitrary OptiX samplers as parameters

Multi-GPU

VisRTX automatically makes use multiple GPUs if available.

For best OpenGL interop performance, make sure to enable Maximize 3D performance in the SLI configuration. It is also worthwhile to experiment with the CUDA device order, which can have a noticeable impact on the interop performance. For instance, in a dual GPU setup make sure to give CUDA_VISIBLE_DEVICES='1,0' a try!

Feedback

Feedback, issues and pull requests welcome!

We would love to hear more about your use cases of VisRTX!

Issues
  • Dark Shades on Object Texture

    Dark Shades on Object Texture

    Hi,

    I'm trying to render a white fabric material (Fabric::Upholstery_Mona::mona_white) on a couch object and I noticed some dark shades on the couch as shown below. Screen Shot 2020-06-03 at 11 46 04 AM

    Can you help me understand why this is happening? I UV unwrapped the couch in Blender before rendering with VisRTX. I have attached a minimal code to reproduce as well as the object I am trying to render and a slightly modified Sample.h. I run the code with ./visRtxSampleMDLHDRI test_darkshades.zip

    OS: Ubuntu 16.04 Optix: NVIDIA-OptiX-SDK-6.0.0-linux64 MDL: MDL-SDK-2019 CUDA Version: 10.2 Driver Version: 440.59

    opened by micaeltchapmi 18
  • Caustics?

    Caustics?

    Great Project!

    How many frames are required for clean (non-noisy) caustics? I would think that the glass material should look like in the visRtxSampleVolume, why its different in visRtxSampleMDL ?

    test1

    I had some install problems (which are solved now): CMAKE 3.14.4 GUI selecting VS2019 Community x64 gives:

    [..]The CUDA compiler identification is unknown[..]
    CMAKE_CUDA_COMPILER could be found.[..]
    

    manually adding set(CMAKE_CUDA_COMPILER "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/bin/nvcc.exe") gives: fatal error C1189: #error: -- unsupported Microsoft Visual Studio version! Only the versions between 2013 and 2017 (inclusive) are supported! [\VisRTX\build\CMakeFiles\CMakeTmp\cmTC_e93ed.vcxproj]

    So I used VS2017 Community: CMAKE 3.14.4 GUI selecting VS2017 x64 toolset v141 CUDA 10.0 gives: OptiX library not found. Please set OptiX_INSTALL_DIR to locate it automatically. (although I specified it in the json file) same for the MDL; I had to specify both in CMAKE manually, but then it succeeded.

    But I also had to copy some files manually to the "Debug" folder:

    optix.6.0.0.dll
    optix_denoiser.6.0.0.dll
    cudnn64_7.dll
    libmdl_sdk.dll
    nv_freeimage.dll
    dds.dll
    cow.obj
    

    Then I successfully could build and run the samples.

    I use Win10PRO 64bit v1809 CUDA 10.0

    opened by ghost 10
  • Clip planes/section planes

    Clip planes/section planes

    Hi there,

    are there any plans for clipping plane support in VisRTX? For example Iray has section planes which optionally allow light to pass through as if the geometry was cut away entirely (https://blog.irayrender.com/post/48117954581/section-planes). This would be a very useful feature for visualizing both meshes, isosurfaces and volumes.

    opened by straaljager 10
  • Strange rendering bug

    Strange rendering bug

    Hi there,

    firstly, thanks a lot for releasing such an awesome framework! This might become a very useful addition to our visualization pipeline.

    I made a few tests and found that some areas which should be darker (occluded by ambient or directional lights), show up very brightly. Also, some occluded areas converge very slowly (like the parts inside the mouth of the dragon and shadows on the floor in the attached screenshot).

    (Btw, I tested with a Quadro M2000, CUDA 9.1 and Nvidia driver v390 on Ubuntu 18.04)

    Any idea what might be causing this?

    Cheers, Sam

    visrtx_tryout

    opened by straaljager 7
  • Rendering issues

    Rendering issues

    Hi, I am trying to render the nvidia/vMaterials/Design/Wood/Bubinga.bubinga_chocolate_oiled material (from NVIDIA's vmaterials) using sampleMDL.cpp but the result I get is different than what I expected. Any idea what might be wrong? The logs do not highlight any issues.

    Result Result

    Expected Expected

    Log log

    opened by lynetcha 6
  • Debugging VisRTX?

    Debugging VisRTX?

    Hello, I'm trying to compile and use VisRTX on Linux (Archlinux, up-to-date), but I'm having trouble launching the provided programs (e.g. visRtxSampleBasic). A window opens, then closes, and the attached message is output. Graphic card is a Quadro M1200 Mobile, and log is attached.

    How should I start to find out what is the issue?

    Thanks, Rémy

    Log:

     [email protected] ~/VisRTX/build (git)-[master] % ./visRtxSampleBasic
     VisRTX 0.1.6, using devices:
     0: Quadro M1200 (Total: 4.2 GB, Available: 4.2 GB)
    [1]    4331 segmentation fault (core dumped)  ./visRtxSampleBasic
     [email protected] ~/VisRTX/build (git)-[master] % 
    

    lspci | grep nvidia: 01:00.0 3D controller: NVIDIA Corporation GM107GLM [Quadro M1200 Mobile] (rev a2)

    Nvidia version: 435.21-4

    GDB:

    % gdb ./visRtxSampleBasic 
    GNU gdb (GDB) 8.3
    Copyright (C) 2019 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    Type "show copying" and "show warranty" for details.
    This GDB was configured as "x86_64-pc-linux-gnu".
    Type "show configuration" for configuration details.
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/gdb/bugs/>.
    Find the GDB manual and other documentation resources online at:
        <http://www.gnu.org/software/gdb/documentation/>.
    
    For help, type "help".
    Type "apropos word" to search for commands related to "word"...
    Reading symbols from ./visRtxSampleBasic...
    (gdb) r
    Starting program: /home/user/VisRTX/build/visRtxSampleBasic 
    [Thread debugging using libthread_db enabled]
    Using host libthread_db library "/usr/lib/libthread_db.so.1".
    [New Thread 0x7fffeec00700 (LWP 4588)]
    [New Thread 0x7fffe7fff700 (LWP 4589)]
    [New Thread 0x7fffe77fe700 (LWP 4590)]
    [New Thread 0x7fffe6ffd700 (LWP 4591)]
    [New Thread 0x7fffe67fc700 (LWP 4592)]
    [New Thread 0x7fffe5ffb700 (LWP 4593)]
    [New Thread 0x7fffe57fa700 (LWP 4594)]
    [New Thread 0x7fffe4ff9700 (LWP 4595)]
    [New Thread 0x7fffe47f8700 (LWP 4596)]
    [New Thread 0x7fffe3ff7700 (LWP 4597)]
    [New Thread 0x7fffe37f6700 (LWP 4598)]
    [New Thread 0x7fffe2ff5700 (LWP 4599)]
    [New Thread 0x7fffe27f4700 (LWP 4600)]
    [New Thread 0x7fffe1ff3700 (LWP 4601)]
    [New Thread 0x7fffe17f2700 (LWP 4602)]
    [New Thread 0x7fffe0ff1700 (LWP 4603)]
    [New Thread 0x7fff97fff700 (LWP 4604)]
    VisRTX 0.1.6, using devices:
    [New Thread 0x7fff977fe700 (LWP 4605)]
    [New Thread 0x7fff96ffd700 (LWP 4606)]
    [Thread 0x7fff96ffd700 (LWP 4606) exited]
    [Thread 0x7fff977fe700 (LWP 4605) exited]
     0: Quadro M1200 (Total: 4.2 GB, Available: 4.2 GB)
    [New Thread 0x7fff977fe700 (LWP 4607)]
    [New Thread 0x7fff96ffd700 (LWP 4608)]
    [New Thread 0x7fff95c0e700 (LWP 4609)]
    [New Thread 0x7fff9540d700 (LWP 4610)]
    [New Thread 0x7fff94c0c700 (LWP 4611)]
    [New Thread 0x7fff6c826700 (LWP 4612)]
    [New Thread 0x7fff6c025700 (LWP 4613)]
    [New Thread 0x7fff6b824700 (LWP 4614)]
    [New Thread 0x7fff6b023700 (LWP 4615)]
    [New Thread 0x7fff6a822700 (LWP 4616)]
    
    Thread 16 "visRtxSampleBas" received signal SIGSEGV, Segmentation fault.
    [Switching to Thread 0x7fffe17f2700 (LWP 4602)]
    0x00007ffff103be66 in ?? () from /usr/lib/libnvoptix.so.1
    (gdb) bt
    #0  0x00007ffff103be66 in ?? () from /usr/lib/libnvoptix.so.1
    #1  0x00007ffff1040bc9 in ?? () from /usr/lib/libnvoptix.so.1
    #2  0x00007ffff1320767 in ?? () from /usr/lib/libnvoptix.so.1
    #3  0x00007ffff132004e in ?? () from /usr/lib/libnvoptix.so.1
    #4  0x00007ffff1320bdf in ?? () from /usr/lib/libnvoptix.so.1
    #5  0x00007ffff12b7ec1 in ?? () from /usr/lib/libnvoptix.so.1
    #6  0x00007ffff12b87e6 in ?? () from /usr/lib/libnvoptix.so.1
    #7  0x00007ffff12c365b in ?? () from /usr/lib/libnvoptix.so.1
    #8  0x00007ffff0aa8a98 in ?? () from /usr/lib/libnvoptix.so.1
    #9  0x00007ffff0aada8f in ?? () from /usr/lib/libnvoptix.so.1
    #10 0x00007ffff0ad18dd in ?? () from /usr/lib/libnvoptix.so.1
    #11 0x00007ffff0ad3f3e in ?? () from /usr/lib/libnvoptix.so.1
    #12 0x00007ffff0ad5756 in ?? () from /usr/lib/libnvoptix.so.1
    #13 0x00007ffff0a06469 in ?? () from /usr/lib/libnvoptix.so.1
    #14 0x00007ffff0ae4e2b in ?? () from /usr/lib/libnvoptix.so.1
    #15 0x00007ffff0ae8cb5 in ?? () from /usr/lib/libnvoptix.so.1
    #16 0x00007ffff0ae8e8d in ?? () from /usr/lib/libnvoptix.so.1
    #17 0x00007ffff0ae90a8 in ?? () from /usr/lib/libnvoptix.so.1
    #18 0x00007ffff18fce0f in ?? () from /usr/lib/libnvoptix.so.1
    #19 0x00007ffff792b57f in start_thread () from /usr/lib/libpthread.so.0
    #20 0x00007ffff70bd0e3 in clone () from /usr/lib/libc.so.6
    (gdb) 
    
    opened by rgrunbla 5
  • terminate called after throwing an instance of 'optix::Exception'

    terminate called after throwing an instance of 'optix::Exception'

    Hi,

    Thanks for this great Rendering Framework. I modified SampleMDLHDRI.cpp to render several objects in a 3D Scene with different materials and I successfully rendered a few objects but when I attempt to render all objects(~100objects), I get the error message below:

    _terminate called after throwing an instance of 'optix::Exception' what(): Unknown error (Details: Function "RTresult rtContextLaunch2D(RTcontext, unsigned int, RTsize, RTsize)" caught exception: Encountered a rtcore error: m_api.pipelineCreate( context, pipelineOptions, compileOptions, modules, moduleCount, pipeline ) returned (5): Out of constant space)

    I'm not so sure what the error message means. From the message, I think it is a space issue but I monitored my CPU and GPU memory during the rendering and I always had a lot of free space on both devices. Can you help me understand what this error means?

    Thanks,

    Micael

    opened by micaeltchapmi 4
  • FindMDL: support a standard layout

    FindMDL: support a standard layout

    If MDL has been moved into a standard installation layout, it was not found. Instead, use HINTS for the expected location, but support a typical install tree as well.

    opened by mathstuf 4
  • MDL_ARGUMENT_BLOCK_SIZE should be 368 for 16 byte struct alignment

    MDL_ARGUMENT_BLOCK_SIZE should be 368 for 16 byte struct alignment

    Hello Some MDL material thrown unknown error when it is 372 bytes, there are 7 program id(int) and 1 hasArgBlock(int), so argBlock's length shoud be 368.

    opened by hugebean 3
  • patch to compile/run on Linux on 2019.2 MDL SDK binary release

    patch to compile/run on Linux on 2019.2 MDL SDK binary release

    On master, needed to make some edits to compile and build samples with binary MDL SDK release. Didn't see these covered or mentioned elsewhere.

    Have the binary MDL SDK (mdl-sdk-325000.1814.zip) unzipped locally

    Summary for compilation (patch below):

    • add a stub for MDL::Logger virtual function
    • add a Sample4D() and point to with some Sample3D() call sites
    • chose data.evaluate.bsdf_diffuse for .bsdf from a templated mi::neuraylib::Bsdf_evaluate_data<mi::neuraylib::DF_HSM_NONE> struct. not sure if this is the appropriate struct or evaluate.field mapping.

    to build and run on my Ubuntu Linux 19.10 machine.

    with MDL SDK, installed CUDA SDK (ubuntu 19.10 system toolkit package) and Optix 6.5 SDK (installer)

    cd /home/dpc/projects/learning/rt/github/optix/VisRTX/
    mkdir build && cd build
    
    cmake \
        -D OptiX_INSTALL_DIR="/usr/local/nvidia/NVIDIA-OptiX-SDK-6.5.0-linux64/" \
        -D MDL_INSTALL_DIR=$HOME/projects/learning/rt/github/optix/mdl-sdk-325000.1814 \
        -D VISRTX_BUILD_SAMPLE=ON \
        -B . ..
    
    make
    
    LD_LIBRARY_PATH=$HOME/projects/learning/rt/github/optix/mdl-sdk-325000.1814/linux-x86-64/lib ./visRtxSampleBasic
    

    here's a diff of edits (my editorconfig setting trims whitespace in some paces)

    diff --git a/src/MDL/MDL.cpp b/src/MDL/MDL.cpp
    index a2f8021..54e8c43 100644
    --- a/src/MDL/MDL.cpp
    +++ b/src/MDL/MDL.cpp
    @@ -481,6 +481,13 @@ public:
                 this->logFile << "[" << module_category << "] " << message_severity_to_string(level) << ": " << message << std::endl;
         }
     
    +    virtual void message( mi::base::Message_severity  	level,
    +                          const char *  	module_category,
    +                          const mi::base::Message_details &  	,
    +                          const char *  	message)
    +        {
    +        }
    +
     private:
         std::ofstream logFile;
     };
    @@ -879,7 +886,7 @@ MDL::CompiledMaterial MDL::Compile(const MDL::Material& material, bool classComp
                     &result.pdfProg,
                     &result.opacityProg,
     				&result.thinwalledProg,
    -				&result.iorProg,				
    +				&result.iorProg,
     				&result.absorbProg
                 };
     
    @@ -1020,7 +1027,7 @@ MDL::CompiledMaterial MDL::Compile(const MDL::Material& material, bool classComp
                     &result.pdfProg,
                     &result.opacityProg,
     				&result.thinwalledProg,
    -				&result.iorProg,				
    +				&result.iorProg,
     				&result.absorbProg
                 };
     
    diff --git a/src/Pathtracer/Pathtracer.cu b/src/Pathtracer/Pathtracer.cu
    index 9970e75..47674d5 100644
    --- a/src/Pathtracer/Pathtracer.cu
    +++ b/src/Pathtracer/Pathtracer.cu
    @@ -654,7 +654,8 @@ RT_FUNCTION bool SampleMaterial(PathtracePRD & prd, optix::Ray & ray, VolumeStac
     				union // Put the BSDF data structs into a union to reduce number of memory writes
     				{
     					mi::neuraylib::Bsdf_sample_data sample;
    -					mi::neuraylib::Bsdf_evaluate_data evaluate;
    +					//mi::neuraylib::Bsdf_evaluate_data evaluate;
    +					mi::neuraylib::Bsdf_evaluate_data<mi::neuraylib::DF_HSM_NONE> evaluate;
     					mi::neuraylib::Bsdf_pdf_data pdf;
     				} data;
     
    @@ -714,7 +715,7 @@ RT_FUNCTION bool SampleMaterial(PathtracePRD & prd, optix::Ray & ray, VolumeStac
     						data.evaluate.k2 = L;
     						parameters.evaluate(&data.evaluate, &state, &res_data, NULL, argBlock);
     
    -						if (0.0f < data.evaluate.pdf && isNotNull(data.evaluate.bsdf))
    +						if (0.0f < data.evaluate.pdf && isNotNull(data.evaluate.bsdf_diffuse))
     						{
     #ifdef TEST_NEE_ONLY
     							const float misWeight = 1.0f;
    @@ -723,7 +724,7 @@ RT_FUNCTION bool SampleMaterial(PathtracePRD & prd, optix::Ray & ray, VolumeStac
     							const float misWeight = (lightPdf <= 0.0f) ? 1.0f : powerHeuristic(lightPdf * prd.lastLightPdfFactor, data.evaluate.pdf);
     #endif
     
    -							const optix::float3 radiance = prd.alpha * data.evaluate.bsdf * lightEdf_over_pdf * lightFactor * misWeight; //  data.evaluate.bsdf contains: bsdf * dot(normal, k2)
    +							const optix::float3 radiance = prd.alpha * data.evaluate.bsdf_diffuse * lightEdf_over_pdf * lightFactor * misWeight; //  data.evaluate.bsdf contains: bsdf * dot(normal, k2)
     							prd.radiance += clampRadiance(prd.depth, launchParameters[0].fireflyClampingIndirect, radiance);
     						}
     					}
    @@ -731,7 +732,7 @@ RT_FUNCTION bool SampleMaterial(PathtracePRD & prd, optix::Ray & ray, VolumeStac
     #endif
     
     				// Sample BSDF
    -				data.sample.xi = Sample3D(prd.randState);
    +				data.sample.xi = Sample4D(prd.randState);
     				parameters.sample(&data.sample, &state, &res_data, NULL, argBlock);
     
     				prd.lastPdf = data.sample.pdf;
    @@ -784,7 +785,7 @@ RT_FUNCTION bool SampleMaterial(PathtracePRD & prd, optix::Ray & ray, VolumeStac
     RT_FUNCTION void Pathtrace(const float3& rayOrigin, const float3& rayDirection, RandState* randState)
     {
     #ifdef VISRTX_USE_DEBUG_EXCEPTIONS
    -#ifdef PRINT_PIXEL_X	
    +#ifdef PRINT_PIXEL_X
     
     	rtPrintf("\n\n--- New frame ---\n");
     
    @@ -865,7 +866,7 @@ RT_FUNCTION void Pathtrace(const float3& rayOrigin, const float3& rayDirection,
     			}
     
     			break;
    -		}		
    +		}
             else
             {
                 ray.origin = prd.hitPoint;
    @@ -1218,7 +1219,7 @@ RT_PROGRAM void AnyHitOcclusion()
     		//data.ior2 = make_float3(1.f);
     		data.k1 = optix::normalize(-ray.direction);
     
    -		data.xi = Sample3D(shadowPrd.randState);
    +		data.xi = Sample4D(shadowPrd.randState);
     		parameters.sample(&data, &state, &res_data, NULL, argBlock);
     
     		if (data.event_type & mi::neuraylib::BSDF_EVENT_TRANSMISSION)
    diff --git a/src/Pathtracer/Random.h b/src/Pathtracer/Random.h
    index 32560a9..495e9f0 100644
    --- a/src/Pathtracer/Random.h
    +++ b/src/Pathtracer/Random.h
    @@ -55,10 +55,14 @@ RT_FUNCTION optix::float3 Sample3D(RandState* state)
         return optix::make_float3(curand_uniform(state), curand_uniform(state), curand_uniform(state));
     }
     
    +RT_FUNCTION optix::float4 Sample4D(RandState* state)
    +{
    +    return optix::make_float4(curand_uniform(state), curand_uniform(state), curand_uniform(state),
    +                              curand_uniform(state));
    +}
    +
     #else
     
     typedef int RandState;
     
     #endif
    -
    -
    
    opened by idcrook 3
  • Lighting

    Lighting

    Hi Tim,

    I am trying to make the rendering look photorealistic and I am wondering if you have pointers on how to do that? Attached is what I get with 4 directional lights. The specular highlights don't look very realistic. Any idea on how this can be improved? Thanks. lighting.tar.gz

    wood

    opened by lynetcha 3
Releases(v0.3.2)
  • v0.3.2(Apr 13, 2022)

    Changes in this release:

    • Fix build issues found on certain platforms
    • Fix crash when querying device properties in certain cases
    • Fix occasional instability of PTX generation + embedding process
    Source code(tar.gz)
    Source code(zip)
  • v0.3.1(Apr 5, 2022)

  • v0.3.0(Mar 31, 2022)

    Changes in this release:

    • Update to latest ANARI SDK v0.1.0 (please note new versioning scheme)
    • Added support for cone geometry
    • Improved warning messages in various places
    • Fix incorrect handling of array deleters for captured arrays
    • Fix bug in instancing code causing UB in some cases
    Source code(tar.gz)
    Source code(zip)
  • v0.2.0(Mar 2, 2022)

    This release is a complete re-implementation of VisRTX for the ANARI API. The project's goals have somewhat shifted toward tracking the ANARI standard closely, and will continue to evolve over time with additional features through extensions. Please use the v0.1.x releases below for the old implementation, which is now deprecated.

    For information on details of the new implementation, please refer to the README in the root of the repository.

    Source code(tar.gz)
    Source code(zip)
  • v0.1.6(Aug 21, 2019)

    Patch release 0.1.6

    Automatic ray epsilon handling Clipping planes Bug fixes (sampling, light visibility, device enumeration, VS 2013 support)

    Source code(tar.gz)
    Source code(zip)
Owner
NVIDIA Corporation
NVIDIA Corporation
GPU ray tracing framework using NVIDIA OptiX 7

GPU ray tracing framework using NVIDIA OptiX 7

Shunji Kiuchi 22 Jun 11, 2022
Wally: Visualization of aligned sequencing reads and genomic variants.

Wally Plotting of aligned sequencing reads in BAM/CRAM format and visualization of genomic variants. Installing Wally Wally is available as a Bioconda

Tobias Rausch 13 Jun 28, 2022
GPU Cloth TOP in TouchDesigner using CUDA-enabled NVIDIA Flex

This project demonstrates how to use NVIDIA FleX for GPU cloth simulation in a TouchDesigner Custom Operator. It also shows how to render dynamic meshes from the texture data using custom PBR GLSL material shaders inside TouchDesigner.

Vinícius Ginja 35 Apr 7, 2022
Forward - A library for high performance deep learning inference on NVIDIA GPUs

a library for high performance deep learning inference on NVIDIA GPUs.

Tencent 123 Mar 17, 2021
A library for high performance deep learning inference on NVIDIA GPUs.

Forward - A library for high performance deep learning inference on NVIDIA GPUs Forward - A library for high performance deep learning inference on NV

Tencent 502 May 31, 2022
Gstreamer plugin that allows use of NVIDIA Maxine SDK in a generic pipeline.

GST-NVMAXINE Gstreamer plugin that allows use of NVIDIA MaxineTM sdk in a generic pipeline. This plugin is intended for use with NVIDIA hardware. Visi

Alex Pitrolo 14 May 11, 2022
ROS2 packages based on NVIDIA libArgus library for hardware-accelerated CSI camera support.

Isaac ROS Argus Camera This repository provides monocular and stereo nodes that enable ROS developers to use cameras connected to Jetson platforms ove

NVIDIA Isaac ROS 26 Jul 1, 2022
Hardware-accelerated DNN model inference ROS2 packages using NVIDIA Triton/TensorRT for both Jetson and x86_64 with CUDA-capable GPU.

Isaac ROS DNN Inference Overview This repository provides two NVIDIA GPU-accelerated ROS2 nodes that perform deep learning inference using custom mode

NVIDIA Isaac ROS 36 Jun 20, 2022
Visual odometry package based on hardware-accelerated NVIDIA Elbrus library with world class quality and performance.

Isaac ROS Visual Odometry This repository provides a ROS2 package that estimates stereo visual inertial odometry using the Isaac Elbrus GPU-accelerate

NVIDIA Isaac ROS 167 Jul 1, 2022
The core engine forked from NVidia's Q2RTX. Heavily modified and extended to allow for a nicer experience all-round.

Nail & Crescent - Development Branch Scratchpad - Things to do or not forget: Items are obviously broken. Physics.cpp needs more work, revising. Proba

PalmliX Studio 12 Jun 28, 2022
Docker files and scripts to setup and run VINS-FUSION-gpu on NVIDIA jetson boards inside a docker container.

jetson_vins_fusion_docker This repository provides Docker files and scripts to easily setup and run VINS-FUSION-gpu on NVIDIA jetson boards inside a d

Mohamed Abdelkader Zahana 18 May 30, 2022
NVIDIA Texture Tools samples for compression, image processing, and decompression.

NVTT 3 Samples This repository contains a number of samples showing how to use NVTT 3, a GPU-accelerated texture compression and image processing libr

NVIDIA DesignWorks Samples 31 Jun 13, 2022
NVIDIA Image Scaling SDK

NVIDIA Image Scaling SDK v1.0 The MIT License(MIT) Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. Permission is hereby grante

NVIDIA GameWorks 346 Jun 23, 2022
Golang bindings for Nvidia Datacenter GPU Manager (DCGM)

Bindings Golang bindings are provided for NVIDIA Data Center GPU Manager (DCGM). DCGM is a set of tools for managing and monitoring NVIDIA GPUs in clu

NVIDIA Corporation 28 Jun 23, 2022
Vendor and game agnostic latency reduction middleware. An alternative to NVIDIA Reflex.

LatencyFleX (LFX) Vendor and game agnostic latency reduction middleware. An alternative to NVIDIA Reflex. Why LatencyFleX? There is a phenomenon commo

Tatsuyuki Ishi 480 Jun 26, 2022
TensorRT is a C++ library for high performance inference on NVIDIA GPUs and deep learning accelerators.

TensorRT Open Source Software This repository contains the Open Source Software (OSS) components of NVIDIA TensorRT. Included are the sources for Tens

NVIDIA Corporation 5.5k Jun 27, 2022
Dataset Synthesizer - NVIDIA Deep learning Dataset Synthesizer (NDDS)

NVIDIA Deep learning Dataset Synthesizer (NDDS) Overview NDDS is a UE4 plugin from NVIDIA to empower computer vision researchers to export high-qualit

NVIDIA Corporation 502 Jun 15, 2022
NVIDIA PhysX SDK

NVIDIA PhysX SDK 4.1 Copyright (c) 2021 NVIDIA Corporation. All rights reserved. Redistribution and use in source and binary forms, with or without mo

NVIDIA GameWorks 2.4k Jun 23, 2022