{"id":13441438,"url":"https://github.com/google/xrtl","last_synced_at":"2025-03-20T12:30:43.255Z","repository":{"id":65981625,"uuid":"86608918","full_name":"google/xrtl","owner":"google","description":"Cross-platform Real-Time Rendering Library","archived":true,"fork":false,"pushed_at":"2018-07-18T17:48:58.000Z","size":1547,"stargazers_count":128,"open_issues_count":17,"forks_count":26,"subscribers_count":15,"default_branch":"master","last_synced_at":"2024-08-01T03:34:33.086Z","etag":null,"topics":["android","bazel","cpp","emscripten","google","graphics-programming","ios","opengl","vulkan"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/google.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-03-29T17:10:19.000Z","updated_at":"2024-07-21T05:17:14.000Z","dependencies_parsed_at":"2023-02-19T18:45:22.718Z","dependency_job_id":null,"html_url":"https://github.com/google/xrtl","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fxrtl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fxrtl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fxrtl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fxrtl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google","download_url":"https://codeload.github.com/google/xrtl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221759989,"owners_count":16876330,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","bazel","cpp","emscripten","google","graphics-programming","ios","opengl","vulkan"],"created_at":"2024-07-31T03:01:33.931Z","updated_at":"2025-03-20T12:30:43.243Z","avatar_url":"https://github.com/google.png","language":"C++","readme":"Cross-platform Real-Time Rendering Library\n==========================================\n\n| **`Linux/Mac CPU`** | **`Windows CPU`** |\n|---------------------|-------------------|\n| [![Build Status](https://travis-ci.org/google/xrtl.svg?branch=master)](https://travis-ci.org/google/xrtl) | [![Build status](https://ci.appveyor.com/api/projects/status/wp1p760x93tw1p1d/branch/master?svg=true)](https://ci.appveyor.com/project/benvanik/xrtl/branch/master) |\n\n**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!\n\nA lightweight framework for writing efficient cross-platform rendering code in\nmodern C++. It abstracts operating system and toolchain concepts to enable quick\nprototyping and interation of rich interactive applications that run beautifully\neverywhere. The library is engineered for small code sizes to enable fast\nloading and low resource usage even within web browsers.\n\nPronounced 'zurtle'.\n\n*This is not an official Google product.*\n\n## Setup Instructions\n\n### MacOS\n\n* Install clang (and clang-tools-extra) from the [LLVM downloads page](http://releases.llvm.org/download.html)\n* Install bazel via [homebrew](https://brew.sh/) or the [bazel releases page](https://github.com/bazelbuild/bazel/releases):\n```\n$ brew install bazel go\n```\n* Install protobuf:\n```\n$ sudo easy_install protobuf\n```\n* Run initial setup with xtool:\n```\n$ ./xtool setup\n```\n\n### Ubuntu\n\n* Install clang (and clang-tools-extra) from the [LLVM downloads page](http://releases.llvm.org/download.html)\n* Install bazel via your package manager or the [bazel releases page](https://github.com/bazelbuild/bazel/releases):\n```\n$ sudo apt-get install bazel golang-go libegl1-mesa-dev libgles2-mesa-dev\n```\n* Run initial setup with xtool:\n```\n$ ./xtool setup\n```\n\n### Windows\n\n* Install clang (and clang-tools-extra) from the [LLVM downloads page](http://releases.llvm.org/download.html)\n* Install Visual Studio 2017 with the Windows SDK and C++ tools\n* Install bazel via [chocolatey](https://chocolatey.org/) or the [bazel releases page](https://github.com/bazelbuild/bazel/releases):\n```\n\u003e choco install bazel golang\n```\n* Follow the [bazel on Windows](https://bazel.build/versions/master/docs/windows.html) instructions (set `BAZEL_SH`, etc)\n* Run initial setup with xtool:\n```\n\u003e xtool setup\n```\n\n## IDE Setup\n\n### Visual Studio 2017\n\n* Generate a Visual Studio solution; do this each time you change BUILD files:\n```\n\u003e xtool sln\n```\n* Open `.vs\\xrtl.sln`, select a project, and press `F5`!\n\n### CLion\n\n* Install the 'CLion with Bazel' plugin from the repository.\n* Import the bazel project from the root git folder.\n* Set the bazel binary to `xtool` (or `xtool.bat` on Windows).\n* Import the project view from the workspace `.bazelproject` file.\n\nIf clang is not your default CC you should start CLion with CC=clang.\n\n## Developing\n\n* Build/test/run/query for host platform:\n```\n$ ./xtool build --all\n$ ./xtool test --all\n$ ./xtool run //xrtl/base:math_test_linux -- --some_arg\n# Note that you can use `bazel` instead of `xtool` in most cases, but you must\n# specify a config.\n$ bazel build --config=macos_x86_64 //xrtl/base/...\n```\n\n* Run linter and fix common errors:\n```\n$ ./xtool fix\n```\n\n### Debugging Notes\n\nGDB may need the following commands run at startup to resolve some third party\nsource code. Replace directories with your workspace location:\n```\ndir $HOME/xrtl/bazel-xrtl\nset substitute-path external/com_github_google_swiftshader $HOME/xrtl/third_party/swiftshader/\nset substitute-path external/com_github_khronosgroup_glslang $HOME/xrtl/third_party/glslang/\n```\n\n## Committing Code\n\n* Run presubmit to perform lint/style check/run tests.\n```\n$ ./xtool presubmit --fix\n```\n\n## Testing\n\n### Test Tags\n\nCommon `tags` that can be added to tests:\n\n* `exclusive`: no other tests should run while this test is executing.\n* `requires_gui`: test uses a GUI and requires a window manager (X11/etc).\n* `requires_gpu`: test requires a real hardware GPU to run.\n\n```\n# Run all tests except those that require a hardware GPU:\n$ ./xtool test --all --test_tag_filter=-requires_gpu\n```\n","funding_links":[],"categories":["C++","Projects built with Bazel"],"sub_categories":["Google projects"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogle%2Fxrtl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoogle%2Fxrtl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogle%2Fxrtl/lists"}