All Projects → pablode → gatling

pablode / gatling

Licence: GPL-3.0 license
Hydra-enabled GPU path tracer that supports MaterialX and MDL.

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
GLSL
2045 projects
CMake
9771 projects

Projects that are alternatives of or similar to gatling

Nabla
OpenGL/OpenGL ES/Vulkan/CUDA/OptiX Modular Rendering Framework for PC/Linux/Android
Stars: ✭ 235 (+47.8%)
Mutual labels:  vulkan, path-tracing
rendering-fw
Rendering framework with rasterizers & path tracers implemented using Vulkan, OptiX & OpenGL
Stars: ✭ 81 (-49.06%)
Mutual labels:  vulkan, path-tracing
specification
RDF vocabulary and specification
Stars: ✭ 21 (-86.79%)
Mutual labels:  hydra
switch
Switch is a small logic game that demonstrates usage of Pixar USD and Hydra on Windows.
Stars: ✭ 22 (-86.16%)
Mutual labels:  usd
variance shadow mapping vk
Variance shadow mapping for omni lights with Vulkan
Stars: ✭ 27 (-83.02%)
Mutual labels:  vulkan
imgui-rs-vulkan-renderer
A Vulkan renderer for imgui-rs using Ash
Stars: ✭ 44 (-72.33%)
Mutual labels:  vulkan
hydra-antlia
A collection of functions for Hydra
Stars: ✭ 45 (-71.7%)
Mutual labels:  hydra
AngryEngine
Game Engine for Windows by Vulkan SDK
Stars: ✭ 20 (-87.42%)
Mutual labels:  vulkan
racket-vulkan
Racket integration with all things Vulkan 💥
Stars: ✭ 40 (-74.84%)
Mutual labels:  vulkan
hydra-hpp
Hydra Hot Potato Player (game)
Stars: ✭ 12 (-92.45%)
Mutual labels:  hydra
vortice
Cross-platform .NET 6.0 game engine.
Stars: ✭ 210 (+32.08%)
Mutual labels:  vulkan
FANCY
A rendering-framework for DX12 and Vulkan. Mostly intended for personal learning purposes and graphics demos
Stars: ✭ 21 (-86.79%)
Mutual labels:  vulkan
LittleEngineVk
3D game engine using C++20 and Vulkan (WIP)
Stars: ✭ 87 (-45.28%)
Mutual labels:  vulkan
vulkan.gpuinfo.org
Front-End and Back-End for the Vulkan Hardware Database
Stars: ✭ 21 (-86.79%)
Mutual labels:  vulkan
Vortice.Vulkan
Cross platform .NET bindings for Vulkan, VMA, SPIRV-Cross and shaderc
Stars: ✭ 172 (+8.18%)
Mutual labels:  vulkan
scenery
Flexible VR Visualisation for Volumetric and Geometric Data on the Java VM, powered by Kotlin and Vulkan
Stars: ✭ 107 (-32.7%)
Mutual labels:  vulkan
go-vk
Go bindings for Vulkan
Stars: ✭ 20 (-87.42%)
Mutual labels:  vulkan
vil
Vulkan Layer for Live Introspection & Debugging. Allows to view all vulkan state live inside your application.
Stars: ✭ 39 (-75.47%)
Mutual labels:  vulkan
SourceRenderer
A tiny 3D engine that loads and renders Source engine maps - Also known as dreieck.exe
Stars: ✭ 32 (-79.87%)
Mutual labels:  vulkan
Barycentrics
No description or website provided.
Stars: ✭ 68 (-57.23%)
Mutual labels:  vulkan

gatling

1965 Ford Mustang Fastback from Wire Wheels Club, rendered in Gatling.

About

This is my toy path tracer I work on in my free time.

It is exposed as a Hydra render delegate and comes with a standalone that accepts Universal Scene Description (USD) files. It is cross-platform, GPU-accelerated, and supports MaterialX, MDL and UsdPreviewSurface materials.

Technically, gatling uses the MDL code generation backend of the MaterialX project to support and importance-sample complex BSDFs like the Autodesk Standard Surface or the glTF shading model. The MDL SDK then generates GLSL code which is compiled to SPIR-V for use in Vulkan. A compressed 8-wide BVH is used to speed up rendering, but hardware ray tracing will be used in the future.

Build

You need to

Note: EXR export requires building USD with OpenImageIO support.

Do a recursive clone of the repository and set up a build folder:

git clone https://github.com/pablode/gatling --recursive
mkdir gatling/build && cd gatling/build

Pass following parameters in the CMake generation phase:

cmake .. -Wno-dev \
         -DUSD_ROOT=<USD_INSTALL_DIR> \
         -DMDL_ROOT=<MDL_INSTALL_DIR> \
         -DCMAKE_INSTALL_PREFIX=<USD_INSTALL_DIR>/plugin/usd
         -DCMAKE_BUILD_TYPE=Release

Note: If you're using MSVC, be sure to select a 64-bit generator.

Build the relevant targets and install the Hydra delegate to the USD plugin folder:

cmake --build . -j8 --target hdGatling gatling --config Release
cmake --install . --component hdGatling

Usage

Gatling can be used by every application which supports Hydra, either natively or through a plugin.

cekuhnen's Coffee Maker (CC-BY), slightly modified, rendered using Gatling inside Pixar's usdview tool.

A headless standalone is provided that accepts a USD file (.usd, .usda, .usdc, .usdz) as input. Make sure that there is a polygonal light source in the scene.

./bin/gatling <scene.usd> render.png \
    --image-width 1200 \
    --image-height 1200 \
    --spp 1024 \
    --max-bounces 8

Note: Disable the system's GPU watchdog or set an appropriate timeout value.

Outlook

Work in progress: texture support, material network patching, NEE/MIS.

License

Gatling is licensed under the GNU General Public License, as included in the LICENSE file.


    Copyright (C) 2019-2022 Pablo Delgado Krämer

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program. If not, see <https://www.gnu.org/licenses/>.

It contains code from the Ray Tracing Gems I book, which is MIT licensed and copyrighted:

  • Copyright 2019 NVIDIA Corporation

It contains code from the MDL SDK, which is BSD licensed and copyrighted:

  • Copyright (c) 2018-2021, NVIDIA CORPORATION. All rights reserved.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].