All Projects → google → Xrtl

google / Xrtl

Licence: apache-2.0
Cross-platform Real-Time Rendering Library

Programming Languages

cpp
1120 projects

Projects that are alternatives of or similar to Xrtl

Diligentsamples
Sample projects demonstrating the usage of Diligent Engine
Stars: ✭ 138 (+27.78%)
Mutual labels:  opengl, vulkan, graphics-programming
3d Game Shaders For Beginners
🎮 A step-by-step guide to implementing SSAO, depth of field, lighting, normal mapping, and more for your 3D game.
Stars: ✭ 11,698 (+10731.48%)
Mutual labels:  opengl, vulkan, graphics-programming
Diligentengine
A modern cross-platform low-level graphics library and rendering framework
Stars: ✭ 2,142 (+1883.33%)
Mutual labels:  opengl, vulkan, graphics-programming
Commandbuffer
A lock-free CommandBuffer implementation designed for multi-threaded rendering applications.
Stars: ✭ 151 (+39.81%)
Mutual labels:  opengl, vulkan, graphics-programming
Imguizmo.quat
ImGui GIZMO widget - 3D object manipulator / orientator
Stars: ✭ 187 (+73.15%)
Mutual labels:  emscripten, opengl, vulkan
Magnum
Lightweight and modular C++11 graphics middleware for games and data visualization
Stars: ✭ 3,728 (+3351.85%)
Mutual labels:  emscripten, opengl, vulkan
Rabbittoolbox
🤸🏾‍♀️👗开源的动画渲染软件,提倡以简单、易用,高质量的物理演算以及渲染质量和性能,为喜爱二次元动画的用户降低视频制作门槛
Stars: ✭ 309 (+186.11%)
Mutual labels:  emscripten, opengl, graphics-programming
Renderdoc
RenderDoc is a stand-alone graphics debugging tool.
Stars: ✭ 5,969 (+5426.85%)
Mutual labels:  opengl, vulkan, graphics-programming
Llgl
Low Level Graphics Library (LLGL) is a thin abstraction layer for the modern graphics APIs OpenGL, Direct3D, Vulkan, and Metal
Stars: ✭ 1,011 (+836.11%)
Mutual labels:  opengl, vulkan
Gl vs vk
Comparison of OpenGL and Vulkan API in terms of performance.
Stars: ✭ 65 (-39.81%)
Mutual labels:  opengl, vulkan
Vulkan Samples
One stop solution for all Vulkan samples
Stars: ✭ 2,009 (+1760.19%)
Mutual labels:  vulkan, graphics-programming
Glfw
A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input
Stars: ✭ 8,416 (+7692.59%)
Mutual labels:  opengl, vulkan
Swfw
Pure C Simple Window Framework (to be rebased soon).
Stars: ✭ 23 (-78.7%)
Mutual labels:  opengl, vulkan
Shaderconductor
ShaderConductor is a tool designed for cross-compiling HLSL to other shading languages
Stars: ✭ 1,146 (+961.11%)
Mutual labels:  opengl, vulkan
Vk9
Direct3D 9 compatibility layer using Vulkan.
Stars: ✭ 799 (+639.81%)
Mutual labels:  vulkan, graphics-programming
Rules docker
Rules for building and handling Docker images with Bazel
Stars: ✭ 744 (+588.89%)
Mutual labels:  bazel, google
Openframeworks
openFrameworks is a community-developed cross platform toolkit for creative coding in C++.
Stars: ✭ 8,652 (+7911.11%)
Mutual labels:  emscripten, opengl
Magnum Plugins
Plugins for the Magnum C++11/C++14 graphics engine
Stars: ✭ 66 (-38.89%)
Mutual labels:  emscripten, opengl
Magnum Bootstrap
Bootstrap projects for Magnum C++11/C++14 graphics engine
Stars: ✭ 69 (-36.11%)
Mutual labels:  emscripten, opengl
Bgfx
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
Stars: ✭ 10,252 (+9392.59%)
Mutual labels:  opengl, vulkan

Cross-platform Real-Time Rendering Library

Linux/Mac CPU Windows CPU
Build Status Build status

Status: currently bringing up the foundations of the library and massaging code from previous internal projects to something acceptable for public release. Please be patient!

A lightweight framework for writing efficient cross-platform rendering code in modern C++. It abstracts operating system and toolchain concepts to enable quick prototyping and interation of rich interactive applications that run beautifully everywhere. The library is engineered for small code sizes to enable fast loading and low resource usage even within web browsers.

Pronounced 'zurtle'.

This is not an official Google product.

Setup Instructions

MacOS

$ brew install bazel go
  • Install protobuf:
$ sudo easy_install protobuf
  • Run initial setup with xtool:
$ ./xtool setup

Ubuntu

$ sudo apt-get install bazel golang-go libegl1-mesa-dev libgles2-mesa-dev
  • Run initial setup with xtool:
$ ./xtool setup

Windows

> choco install bazel golang
  • Follow the bazel on Windows instructions (set BAZEL_SH, etc)
  • Run initial setup with xtool:
> xtool setup

IDE Setup

Visual Studio 2017

  • Generate a Visual Studio solution; do this each time you change BUILD files:
> xtool sln
  • Open .vs\xrtl.sln, select a project, and press F5!

CLion

  • Install the 'CLion with Bazel' plugin from the repository.
  • Import the bazel project from the root git folder.
  • Set the bazel binary to xtool (or xtool.bat on Windows).
  • Import the project view from the workspace .bazelproject file.

If clang is not your default CC you should start CLion with CC=clang.

Developing

  • Build/test/run/query for host platform:
$ ./xtool build --all
$ ./xtool test --all
$ ./xtool run //xrtl/base:math_test_linux -- --some_arg
# Note that you can use `bazel` instead of `xtool` in most cases, but you must
# specify a config.
$ bazel build --config=macos_x86_64 //xrtl/base/...
  • Run linter and fix common errors:
$ ./xtool fix

Debugging Notes

GDB may need the following commands run at startup to resolve some third party source code. Replace directories with your workspace location:

dir $HOME/xrtl/bazel-xrtl
set substitute-path external/com_github_google_swiftshader $HOME/xrtl/third_party/swiftshader/
set substitute-path external/com_github_khronosgroup_glslang $HOME/xrtl/third_party/glslang/

Committing Code

  • Run presubmit to perform lint/style check/run tests.
$ ./xtool presubmit --fix

Testing

Test Tags

Common tags that can be added to tests:

  • exclusive: no other tests should run while this test is executing.
  • requires_gui: test uses a GUI and requires a window manager (X11/etc).
  • requires_gpu: test requires a real hardware GPU to run.
# Run all tests except those that require a hardware GPU:
$ ./xtool test --all --test_tag_filter=-requires_gpu
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].