-
Notifications
You must be signed in to change notification settings - Fork 351
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Loading status checks…
deploy: e8696bd
0 parents
commit 43b6609
Showing
54 changed files
with
6,350 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# Sphinx build info version 1 | ||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. | ||
config: ef4470187c582ab45e2cdfe9e0cd7ecb | ||
tags: 645f666f9bcd5a90fca523b33c5a78b7 |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
docs.gsplat.studio |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
ProjectGaussians | ||
=================================== | ||
|
||
.. currentmodule:: gsplat | ||
|
||
Given 3D gaussians parametrized by means :math:`μ`, covariances :math:`Σ`, colors :math:`c`, and opacities :math:`o`, the | ||
:func:`gsplat.project_gaussians` function computes the projected 2D gaussians in the camera frame with means :math:`μ'`, covariances :math:`Σ'`, and depths :math:`z` | ||
as well as their maximum radii in screen space and conic parameters. | ||
|
||
Note, covariances are reparametrized by the eigen decomposition: | ||
|
||
.. math:: | ||
Σ = RSS^{T}R^{T} | ||
Where rotation matrices :math:`R` are obtained from four dimensional quaternions. | ||
|
||
The projection of 3D Gaussians is approximated with the Jacobian of the perspective projection equation | ||
as shown in :cite:p:`zwicker2002ewa`: | ||
|
||
.. math:: | ||
J = \begin{bmatrix} | ||
f_{x}/t_{z} & 0 & -f_{x} t_{x}/t_{z}^{2} \\ | ||
0 & f_{y}/t_{z} & -f_{y} t_{y}/t_{z}^{2} \\ | ||
0 & 0 & 0 | ||
\end{bmatrix} | ||
Where :math:`t` is the center of a gaussian in camera frame :math:`t = Wμ+p`. The projected 2D covarience is then given by: | ||
|
||
.. math:: | ||
Σ' = J W Σ W^{⊤} J^{⊤} | ||
Citations | ||
------------- | ||
.. bibliography:: | ||
:style: unsrt | ||
:filter: docname in docnames | ||
|
||
.. autofunction:: project_gaussians |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
RasterizeGaussians | ||
=================================== | ||
|
||
.. currentmodule:: gsplat | ||
|
||
Given 2D gaussians that are parametrized by their means :math:`μ'` and covariances :math:`Σ'` as well as their radii and conic parameters, | ||
the :func:`gsplat.rasterize_gaussians` function first sorts each gaussian such that all gaussians within the bounds of a tile are grouped and sorted by increasing depth :math:`z`, | ||
and then renders each pixel within a tile with alpha-compositing. | ||
|
||
The discrete rendering equation is given by: | ||
|
||
.. math:: | ||
\sum_{t=n}^{N}c_{n}·α_{n}·T_{n} | ||
Where | ||
|
||
.. math:: | ||
T_{n} = \prod_{t=m}^{M}(1-α_{m}) | ||
And | ||
|
||
.. math:: | ||
α_{n} = o_{n} \exp(-σ_{n}) | ||
σ_{n} = \frac{1}{2} ∆^{⊤}_{n} Σ'^{−1} ∆_{n} | ||
:math:`σ ∈ R^{2}` is the Mahalanobis distance (here referred to as sigma) which measures how many standard deviations away the center of a gaussian and the rendered pixel center is which is denoted by delta :math:`∆.` | ||
|
||
The python bindings support conventional 3-channel RGB rasterization as well as N-dimensional rasterization with :func:`gsplat.rasterize_gaussians`. | ||
|
||
|
||
.. autofunction:: rasterize_gaussians |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
Utils | ||
=================================== | ||
In addition to the main projection and rasterization functions, a few CUDA kernel and helper functions are exposed to python with the following bindings: | ||
|
||
|
||
.. currentmodule:: gsplat | ||
|
||
.. autofunction:: bin_and_sort_gaussians | ||
|
||
.. autofunction:: compute_cov2d_bounds | ||
|
||
.. autofunction:: get_tile_bin_edges | ||
|
||
.. autofunction:: spherical_harmonics | ||
|
||
.. autofunction:: map_gaussian_to_intersects | ||
|
||
.. autofunction:: compute_cumulative_intersects |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
CUDA Conventions | ||
=================================== | ||
|
||
.. currentmodule:: diff_rast | ||
|
||
Here we explain some conventions used for the implementation of the CUDA backend. | ||
|
||
Kernel Launch Conventions | ||
------------------------- | ||
|
||
The backend CUDA code consists of several kernel functions that run in parallel for either arbitrary number of gaussians or for arbitrary image dimensions. | ||
Here we explain some of the conventions used for launching these kernel functions using the ``<<<gridDim, blockDim>>>`` notation. | ||
|
||
|
||
1D Grids | ||
^^^^^^^^ | ||
|
||
Kernel functions that depend on the number of input gaussians are organized into one dimensional CUDA grids consisting of | ||
|
||
.. code-block:: | ||
const int gridDim = (num_gaussian_operations + NUM_THREADS - 1) / NUM_THREADS; | ||
1-D blocks containing ``const int blockDim = NUM_THREADS;`` threads each. An example of a kernel function that depends on the number of gaussians (here denoted by the ``num_gaussian_operations`` variable) | ||
is the main `project_gaussians` kernel that projects an arbitrary number of 3D gaussians into 2D. | ||
|
||
|
||
2D Grids | ||
^^^^^^^^ | ||
|
||
Kernel functions that depend on the rendered output image size are organized into two dimensional CUDA grids. The shape of the grid is determined by | ||
|
||
.. code-block:: | ||
const dim3 gridDim = {(img_width + NUM_THREADS_X - 1) / NUM_THREADS_X, (img_height + NUM_THREADS_Y - 1) / NUM_THREADS_Y, 1}; | ||
where each individual block within the grid contains a layout of threads defined by ``const dim3 blockDim = {NUM_THREADS_X, NUM_THREADS_Y, 1};``. | ||
An example of a kernel function that requires two dimensional grids is the main :func:`gsplat.rasterize_gaussians` kernel that renders an arbitrary number of pixels in an output image. | ||
|
||
|
||
Config Constants | ||
---------------- | ||
|
||
We fix the total number of threads within a block to 256. This means that for 1D blocks the block dimension is given by ``const int blockDim = 256;`` and for 2D blocks ``const dim3 blockDim = {16, 16, 1};``. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
Data Conventions | ||
=================================== | ||
|
||
.. currentmodule:: gsplat | ||
|
||
Here we explain the various data conventions used in our repo. | ||
|
||
Rotation Convention | ||
------------------- | ||
We represent rotations with four dimensional vectors :math:`q = (w,x,y,z)` such that the 3x3 :math:`SO(3)` rotation matrix is defined by: | ||
|
||
.. math:: | ||
R = \begin{bmatrix} | ||
1 - 2 \left( y^2 + z^2 \right) & 2 \left( x y - w z \right) & 2 \left( x z + w y \right) \\ | ||
2 \left( x y + w z \right) & 1 - 2 \left( x^2 + z^2 \right) & 2 \left( y z - w x \right) \\ | ||
2 \left( x z - w y \right) & 2 \left( y z + w x \right) & 1 - 2 \left( x^2 + y^2 \right) \\ | ||
\end{bmatrix} | ||
View Matrix and Projection Matrix | ||
--------------------------------- | ||
We refer to the `view matrix` :math:`W` as the world to camera frame transformation (referred to as `w2c` in some sources) that maps | ||
3D world points :math:`(x,y,z)_{world}` to 3D camera points :math:`(x,y,z)_{cam}` where :math:`z_{cam}` is the relative depth to the camera center. | ||
|
||
|
||
The `projection matrix` refers to the full projective transformation that maps 3D points in the world frame to the 2D points in the image/pixel frame. | ||
This transformation is the concatenation of the perspective projection matrix :math:`K` (obtained from camera intrinsics) and the view matrix :math:`W`. | ||
We adopt the `OpenGL <http://www.songho.ca/opengl/gl_projectionmatrix.html>`_ perspective projection convention. The projection matrix :math:`P` is given by: | ||
|
||
.. math:: | ||
P = K W | ||
.. math:: | ||
K = \begin{bmatrix} | ||
\frac{2n}{r - l} & 0.0 & \frac{r + l}{r - l} & 0.0 \\ | ||
0.0 & \frac{2n}{t - b} & \frac{t + b}{t - b} & 0.0 \\ | ||
0.0 & 0.0 & \frac{f + n}{f - n} & -\frac{f \cdot n}{f - n} \\ | ||
0.0 & 0.0 & 1.0 & 0.0 \\ | ||
\end{bmatrix} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
Simple Trainer | ||
=================================== | ||
|
||
.. currentmodule:: gsplat | ||
|
||
Training on an image | ||
----------------------------------- | ||
The `examples/simple_trainer.py` script allows you to test the basic forward projection and rasterization of random gaussians | ||
and their differentiability on a single training image. This allows you to overfit gaussians on a single view. | ||
|
||
Simply run the script with: | ||
|
||
.. code-block:: bash | ||
:caption: simple_trainer.py | ||
python examples/simple_trainer.py --height 256 --width 256 --num_points 2000 --save_imgs | ||
to get a result similar to the one below: | ||
|
||
.. image:: ../imgs/square.gif | ||
:alt: Gaussians overfit on a single image | ||
:width: 256 | ||
|
||
You can also provide a path to your own custom image file using the ``--img_path`` flag: | ||
|
||
.. code-block:: bash | ||
python examples/simple_trainer.py --img_path PATH_TO_IMG --save_imgs |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
gsplat | ||
=================================== | ||
|
||
.. image:: imgs/training.gif | ||
:width: 800 | ||
:alt: Example training image | ||
|
||
Overview | ||
-------- | ||
|
||
*gsplat* is an open-source library for CUDA accelerated rasterization of gaussians with python bindings. It is inspired by the SIGGRAPH paper "3D Gaussian Splatting for Real-Time Rendering of Radiance Fields" :cite:p:`kerbl3Dgaussians`. | ||
This libary contains the neccessary components for efficient 3D to 2D projection, sorting, and alpha compositing of gaussians and their associated backward passes for inverse rendering. | ||
|
||
Contributing | ||
------------ | ||
|
||
This repository was born from the curiosity of people on the Nerfstudio team trying to understand a new rendering technique. We welcome contributions of any kind and are open to feedback, bug-reports, and improvements to help expand the capabilities of this software. | ||
|
||
|
||
Links | ||
----- | ||
|
||
.. toctree:: | ||
:glob: | ||
:maxdepth: 1 | ||
:caption: Examples | ||
|
||
examples/* | ||
|
||
|
||
.. toctree:: | ||
:glob: | ||
:maxdepth: 1 | ||
:caption: Conventions | ||
|
||
conventions/* | ||
|
||
|
||
.. toctree:: | ||
:glob: | ||
:maxdepth: 1 | ||
:caption: Python API | ||
|
||
apis/* | ||
|
||
|
||
.. toctree:: | ||
:glob: | ||
:maxdepth: 1 | ||
:caption: Tests | ||
|
||
tests/* | ||
|
||
|
||
Citations | ||
------------- | ||
.. bibliography:: | ||
:style: unsrt | ||
:filter: docname in docnames |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
Tests | ||
=================================== | ||
|
||
Testing and verifying CUDA implementations | ||
-------------------------------------------- | ||
|
||
The `tests/` folder provides automatic test scripts that are ran to verify that the CUDA implementations agree with native PyTorch ones. | ||
They are also ran with any pull-requests into main branch on our github repository. | ||
|
||
The tests include: | ||
|
||
.. code-block:: bash | ||
:caption: tests/ | ||
./test_cov2d_bounds.py | ||
./test_cumulative_intersects.py | ||
./test_get_tile_bin_edges.py | ||
./test_map_gaussians.py | ||
./test_project_gaussians | ||
./test_rasterize_forward_kernel.py | ||
./test_sh.py |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
/* | ||
This CSS file should be overridden by the theme authors. It's | ||
meant for debugging and developing the skeleton that this theme provides. | ||
*/ | ||
body { | ||
font-family: -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, | ||
"Apple Color Emoji", "Segoe UI Emoji"; | ||
background: lavender; | ||
} | ||
.sb-announcement { | ||
background: rgb(131, 131, 131); | ||
} | ||
.sb-announcement__inner { | ||
background: black; | ||
color: white; | ||
} | ||
.sb-header { | ||
background: lightskyblue; | ||
} | ||
.sb-header__inner { | ||
background: royalblue; | ||
color: white; | ||
} | ||
.sb-header-secondary { | ||
background: lightcyan; | ||
} | ||
.sb-header-secondary__inner { | ||
background: cornflowerblue; | ||
color: white; | ||
} | ||
.sb-sidebar-primary { | ||
background: lightgreen; | ||
} | ||
.sb-main { | ||
background: blanchedalmond; | ||
} | ||
.sb-main__inner { | ||
background: antiquewhite; | ||
} | ||
.sb-header-article { | ||
background: lightsteelblue; | ||
} | ||
.sb-article-container { | ||
background: snow; | ||
} | ||
.sb-article-main { | ||
background: white; | ||
} | ||
.sb-footer-article { | ||
background: lightpink; | ||
} | ||
.sb-sidebar-secondary { | ||
background: lightgoldenrodyellow; | ||
} | ||
.sb-footer-content { | ||
background: plum; | ||
} | ||
.sb-footer-content__inner { | ||
background: palevioletred; | ||
} | ||
.sb-footer { | ||
background: pink; | ||
} | ||
.sb-footer__inner { | ||
background: salmon; | ||
} | ||
.sb-article { | ||
background: white; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,156 @@ | ||
/* | ||
* doctools.js | ||
* ~~~~~~~~~~~ | ||
* | ||
* Base JavaScript utilities for all Sphinx HTML documentation. | ||
* | ||
* :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. | ||
* :license: BSD, see LICENSE for details. | ||
* | ||
*/ | ||
"use strict"; | ||
|
||
const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ | ||
"TEXTAREA", | ||
"INPUT", | ||
"SELECT", | ||
"BUTTON", | ||
]); | ||
|
||
const _ready = (callback) => { | ||
if (document.readyState !== "loading") { | ||
callback(); | ||
} else { | ||
document.addEventListener("DOMContentLoaded", callback); | ||
} | ||
}; | ||
|
||
/** | ||
* Small JavaScript module for the documentation. | ||
*/ | ||
const Documentation = { | ||
init: () => { | ||
Documentation.initDomainIndexTable(); | ||
Documentation.initOnKeyListeners(); | ||
}, | ||
|
||
/** | ||
* i18n support | ||
*/ | ||
TRANSLATIONS: {}, | ||
PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), | ||
LOCALE: "unknown", | ||
|
||
// gettext and ngettext don't access this so that the functions | ||
// can safely bound to a different name (_ = Documentation.gettext) | ||
gettext: (string) => { | ||
const translated = Documentation.TRANSLATIONS[string]; | ||
switch (typeof translated) { | ||
case "undefined": | ||
return string; // no translation | ||
case "string": | ||
return translated; // translation exists | ||
default: | ||
return translated[0]; // (singular, plural) translation tuple exists | ||
} | ||
}, | ||
|
||
ngettext: (singular, plural, n) => { | ||
const translated = Documentation.TRANSLATIONS[singular]; | ||
if (typeof translated !== "undefined") | ||
return translated[Documentation.PLURAL_EXPR(n)]; | ||
return n === 1 ? singular : plural; | ||
}, | ||
|
||
addTranslations: (catalog) => { | ||
Object.assign(Documentation.TRANSLATIONS, catalog.messages); | ||
Documentation.PLURAL_EXPR = new Function( | ||
"n", | ||
`return (${catalog.plural_expr})` | ||
); | ||
Documentation.LOCALE = catalog.locale; | ||
}, | ||
|
||
/** | ||
* helper function to focus on search bar | ||
*/ | ||
focusSearchBar: () => { | ||
document.querySelectorAll("input[name=q]")[0]?.focus(); | ||
}, | ||
|
||
/** | ||
* Initialise the domain index toggle buttons | ||
*/ | ||
initDomainIndexTable: () => { | ||
const toggler = (el) => { | ||
const idNumber = el.id.substr(7); | ||
const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); | ||
if (el.src.substr(-9) === "minus.png") { | ||
el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; | ||
toggledRows.forEach((el) => (el.style.display = "none")); | ||
} else { | ||
el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; | ||
toggledRows.forEach((el) => (el.style.display = "")); | ||
} | ||
}; | ||
|
||
const togglerElements = document.querySelectorAll("img.toggler"); | ||
togglerElements.forEach((el) => | ||
el.addEventListener("click", (event) => toggler(event.currentTarget)) | ||
); | ||
togglerElements.forEach((el) => (el.style.display = "")); | ||
if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); | ||
}, | ||
|
||
initOnKeyListeners: () => { | ||
// only install a listener if it is really needed | ||
if ( | ||
!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && | ||
!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS | ||
) | ||
return; | ||
|
||
document.addEventListener("keydown", (event) => { | ||
// bail for input elements | ||
if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; | ||
// bail with special keys | ||
if (event.altKey || event.ctrlKey || event.metaKey) return; | ||
|
||
if (!event.shiftKey) { | ||
switch (event.key) { | ||
case "ArrowLeft": | ||
if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; | ||
|
||
const prevLink = document.querySelector('link[rel="prev"]'); | ||
if (prevLink && prevLink.href) { | ||
window.location.href = prevLink.href; | ||
event.preventDefault(); | ||
} | ||
break; | ||
case "ArrowRight": | ||
if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; | ||
|
||
const nextLink = document.querySelector('link[rel="next"]'); | ||
if (nextLink && nextLink.href) { | ||
window.location.href = nextLink.href; | ||
event.preventDefault(); | ||
} | ||
break; | ||
} | ||
} | ||
|
||
// some keyboard layouts may need Shift to get / | ||
switch (event.key) { | ||
case "/": | ||
if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; | ||
Documentation.focusSearchBar(); | ||
event.preventDefault(); | ||
} | ||
}); | ||
}, | ||
}; | ||
|
||
// quick alias for translations | ||
const _ = Documentation.gettext; | ||
|
||
_ready(Documentation.init); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
const DOCUMENTATION_OPTIONS = { | ||
VERSION: '0.1.2', | ||
LANGUAGE: 'en', | ||
COLLAPSE_INDEX: false, | ||
BUILDER: 'html', | ||
FILE_SUFFIX: '.html', | ||
LINK_SUFFIX: '.html', | ||
HAS_SOURCE: true, | ||
SOURCELINK_SUFFIX: '.txt', | ||
NAVIGATION_WITH_KEYS: false, | ||
SHOW_SEARCH_SUMMARY: true, | ||
ENABLE_SEARCH_SHORTCUTS: true, | ||
}; |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,199 @@ | ||
/* | ||
* language_data.js | ||
* ~~~~~~~~~~~~~~~~ | ||
* | ||
* This script contains the language-specific data used by searchtools.js, | ||
* namely the list of stopwords, stemmer, scorer and splitter. | ||
* | ||
* :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. | ||
* :license: BSD, see LICENSE for details. | ||
* | ||
*/ | ||
|
||
var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; | ||
|
||
|
||
/* Non-minified version is copied as a separate JS file, is available */ | ||
|
||
/** | ||
* Porter Stemmer | ||
*/ | ||
var Stemmer = function() { | ||
|
||
var step2list = { | ||
ational: 'ate', | ||
tional: 'tion', | ||
enci: 'ence', | ||
anci: 'ance', | ||
izer: 'ize', | ||
bli: 'ble', | ||
alli: 'al', | ||
entli: 'ent', | ||
eli: 'e', | ||
ousli: 'ous', | ||
ization: 'ize', | ||
ation: 'ate', | ||
ator: 'ate', | ||
alism: 'al', | ||
iveness: 'ive', | ||
fulness: 'ful', | ||
ousness: 'ous', | ||
aliti: 'al', | ||
iviti: 'ive', | ||
biliti: 'ble', | ||
logi: 'log' | ||
}; | ||
|
||
var step3list = { | ||
icate: 'ic', | ||
ative: '', | ||
alize: 'al', | ||
iciti: 'ic', | ||
ical: 'ic', | ||
ful: '', | ||
ness: '' | ||
}; | ||
|
||
var c = "[^aeiou]"; // consonant | ||
var v = "[aeiouy]"; // vowel | ||
var C = c + "[^aeiouy]*"; // consonant sequence | ||
var V = v + "[aeiou]*"; // vowel sequence | ||
|
||
var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 | ||
var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 | ||
var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 | ||
var s_v = "^(" + C + ")?" + v; // vowel in stem | ||
|
||
this.stemWord = function (w) { | ||
var stem; | ||
var suffix; | ||
var firstch; | ||
var origword = w; | ||
|
||
if (w.length < 3) | ||
return w; | ||
|
||
var re; | ||
var re2; | ||
var re3; | ||
var re4; | ||
|
||
firstch = w.substr(0,1); | ||
if (firstch == "y") | ||
w = firstch.toUpperCase() + w.substr(1); | ||
|
||
// Step 1a | ||
re = /^(.+?)(ss|i)es$/; | ||
re2 = /^(.+?)([^s])s$/; | ||
|
||
if (re.test(w)) | ||
w = w.replace(re,"$1$2"); | ||
else if (re2.test(w)) | ||
w = w.replace(re2,"$1$2"); | ||
|
||
// Step 1b | ||
re = /^(.+?)eed$/; | ||
re2 = /^(.+?)(ed|ing)$/; | ||
if (re.test(w)) { | ||
var fp = re.exec(w); | ||
re = new RegExp(mgr0); | ||
if (re.test(fp[1])) { | ||
re = /.$/; | ||
w = w.replace(re,""); | ||
} | ||
} | ||
else if (re2.test(w)) { | ||
var fp = re2.exec(w); | ||
stem = fp[1]; | ||
re2 = new RegExp(s_v); | ||
if (re2.test(stem)) { | ||
w = stem; | ||
re2 = /(at|bl|iz)$/; | ||
re3 = new RegExp("([^aeiouylsz])\\1$"); | ||
re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); | ||
if (re2.test(w)) | ||
w = w + "e"; | ||
else if (re3.test(w)) { | ||
re = /.$/; | ||
w = w.replace(re,""); | ||
} | ||
else if (re4.test(w)) | ||
w = w + "e"; | ||
} | ||
} | ||
|
||
// Step 1c | ||
re = /^(.+?)y$/; | ||
if (re.test(w)) { | ||
var fp = re.exec(w); | ||
stem = fp[1]; | ||
re = new RegExp(s_v); | ||
if (re.test(stem)) | ||
w = stem + "i"; | ||
} | ||
|
||
// Step 2 | ||
re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; | ||
if (re.test(w)) { | ||
var fp = re.exec(w); | ||
stem = fp[1]; | ||
suffix = fp[2]; | ||
re = new RegExp(mgr0); | ||
if (re.test(stem)) | ||
w = stem + step2list[suffix]; | ||
} | ||
|
||
// Step 3 | ||
re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; | ||
if (re.test(w)) { | ||
var fp = re.exec(w); | ||
stem = fp[1]; | ||
suffix = fp[2]; | ||
re = new RegExp(mgr0); | ||
if (re.test(stem)) | ||
w = stem + step3list[suffix]; | ||
} | ||
|
||
// Step 4 | ||
re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; | ||
re2 = /^(.+?)(s|t)(ion)$/; | ||
if (re.test(w)) { | ||
var fp = re.exec(w); | ||
stem = fp[1]; | ||
re = new RegExp(mgr1); | ||
if (re.test(stem)) | ||
w = stem; | ||
} | ||
else if (re2.test(w)) { | ||
var fp = re2.exec(w); | ||
stem = fp[1] + fp[2]; | ||
re2 = new RegExp(mgr1); | ||
if (re2.test(stem)) | ||
w = stem; | ||
} | ||
|
||
// Step 5 | ||
re = /^(.+?)e$/; | ||
if (re.test(w)) { | ||
var fp = re.exec(w); | ||
stem = fp[1]; | ||
re = new RegExp(mgr1); | ||
re2 = new RegExp(meq1); | ||
re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); | ||
if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) | ||
w = stem; | ||
} | ||
re = /ll$/; | ||
re2 = new RegExp(mgr1); | ||
if (re.test(w) && re2.test(w)) { | ||
re = /.$/; | ||
w = w.replace(re,""); | ||
} | ||
|
||
// and turn initial Y back to y | ||
if (firstch == "y") | ||
w = firstch.toLowerCase() + w.substr(1); | ||
return w; | ||
} | ||
} | ||
|
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Large diffs are not rendered by default.
Oops, something went wrong.
Empty file.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
/*! | ||
* gumshoejs v5.1.2 (patched by @pradyunsg) | ||
* A simple, framework-agnostic scrollspy script. | ||
* (c) 2019 Chris Ferdinandi | ||
* MIT License | ||
* http://github.com/cferdinandi/gumshoe | ||
*/ |
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,296 @@ | ||
/* Some sane resets. */ | ||
html { | ||
height: 100%; | ||
} | ||
|
||
body { | ||
margin: 0; | ||
min-height: 100%; | ||
} | ||
|
||
/* All the flexbox magic! */ | ||
body, | ||
.sb-announcement, | ||
.sb-content, | ||
.sb-main, | ||
.sb-container, | ||
.sb-container__inner, | ||
.sb-article-container, | ||
.sb-footer-content, | ||
.sb-header, | ||
.sb-header-secondary, | ||
.sb-footer { | ||
display: flex; | ||
} | ||
|
||
/* These order things vertically */ | ||
body, | ||
.sb-main, | ||
.sb-article-container { | ||
flex-direction: column; | ||
} | ||
|
||
/* Put elements in the center */ | ||
.sb-header, | ||
.sb-header-secondary, | ||
.sb-container, | ||
.sb-content, | ||
.sb-footer, | ||
.sb-footer-content { | ||
justify-content: center; | ||
} | ||
/* Put elements at the ends */ | ||
.sb-article-container { | ||
justify-content: space-between; | ||
} | ||
|
||
/* These elements grow. */ | ||
.sb-main, | ||
.sb-content, | ||
.sb-container, | ||
article { | ||
flex-grow: 1; | ||
} | ||
|
||
/* Because padding making this wider is not fun */ | ||
article { | ||
box-sizing: border-box; | ||
} | ||
|
||
/* The announcements element should never be wider than the page. */ | ||
.sb-announcement { | ||
max-width: 100%; | ||
} | ||
|
||
.sb-sidebar-primary, | ||
.sb-sidebar-secondary { | ||
flex-shrink: 0; | ||
width: 17rem; | ||
} | ||
|
||
.sb-announcement__inner { | ||
justify-content: center; | ||
|
||
box-sizing: border-box; | ||
height: 3rem; | ||
|
||
overflow-x: auto; | ||
white-space: nowrap; | ||
} | ||
|
||
/* Sidebars, with checkbox-based toggle */ | ||
.sb-sidebar-primary, | ||
.sb-sidebar-secondary { | ||
position: fixed; | ||
height: 100%; | ||
top: 0; | ||
} | ||
|
||
.sb-sidebar-primary { | ||
left: -17rem; | ||
transition: left 250ms ease-in-out; | ||
} | ||
.sb-sidebar-secondary { | ||
right: -17rem; | ||
transition: right 250ms ease-in-out; | ||
} | ||
|
||
.sb-sidebar-toggle { | ||
display: none; | ||
} | ||
.sb-sidebar-overlay { | ||
position: fixed; | ||
top: 0; | ||
width: 0; | ||
height: 0; | ||
|
||
transition: width 0ms ease 250ms, height 0ms ease 250ms, opacity 250ms ease; | ||
|
||
opacity: 0; | ||
background-color: rgba(0, 0, 0, 0.54); | ||
} | ||
|
||
#sb-sidebar-toggle--primary:checked | ||
~ .sb-sidebar-overlay[for="sb-sidebar-toggle--primary"], | ||
#sb-sidebar-toggle--secondary:checked | ||
~ .sb-sidebar-overlay[for="sb-sidebar-toggle--secondary"] { | ||
width: 100%; | ||
height: 100%; | ||
opacity: 1; | ||
transition: width 0ms ease, height 0ms ease, opacity 250ms ease; | ||
} | ||
|
||
#sb-sidebar-toggle--primary:checked ~ .sb-container .sb-sidebar-primary { | ||
left: 0; | ||
} | ||
#sb-sidebar-toggle--secondary:checked ~ .sb-container .sb-sidebar-secondary { | ||
right: 0; | ||
} | ||
|
||
/* Full-width mode */ | ||
.drop-secondary-sidebar-for-full-width-content | ||
.hide-when-secondary-sidebar-shown { | ||
display: none !important; | ||
} | ||
.drop-secondary-sidebar-for-full-width-content .sb-sidebar-secondary { | ||
display: none !important; | ||
} | ||
|
||
/* Mobile views */ | ||
.sb-page-width { | ||
width: 100%; | ||
} | ||
|
||
.sb-article-container, | ||
.sb-footer-content__inner, | ||
.drop-secondary-sidebar-for-full-width-content .sb-article, | ||
.drop-secondary-sidebar-for-full-width-content .match-content-width { | ||
width: 100vw; | ||
} | ||
|
||
.sb-article, | ||
.match-content-width { | ||
padding: 0 1rem; | ||
box-sizing: border-box; | ||
} | ||
|
||
@media (min-width: 32rem) { | ||
.sb-article, | ||
.match-content-width { | ||
padding: 0 2rem; | ||
} | ||
} | ||
|
||
/* Tablet views */ | ||
@media (min-width: 42rem) { | ||
.sb-article-container { | ||
width: auto; | ||
} | ||
.sb-footer-content__inner, | ||
.drop-secondary-sidebar-for-full-width-content .sb-article, | ||
.drop-secondary-sidebar-for-full-width-content .match-content-width { | ||
width: 42rem; | ||
} | ||
.sb-article, | ||
.match-content-width { | ||
width: 42rem; | ||
} | ||
} | ||
@media (min-width: 46rem) { | ||
.sb-footer-content__inner, | ||
.drop-secondary-sidebar-for-full-width-content .sb-article, | ||
.drop-secondary-sidebar-for-full-width-content .match-content-width { | ||
width: 46rem; | ||
} | ||
.sb-article, | ||
.match-content-width { | ||
width: 46rem; | ||
} | ||
} | ||
@media (min-width: 50rem) { | ||
.sb-footer-content__inner, | ||
.drop-secondary-sidebar-for-full-width-content .sb-article, | ||
.drop-secondary-sidebar-for-full-width-content .match-content-width { | ||
width: 50rem; | ||
} | ||
.sb-article, | ||
.match-content-width { | ||
width: 50rem; | ||
} | ||
} | ||
|
||
/* Tablet views */ | ||
@media (min-width: 59rem) { | ||
.sb-sidebar-secondary { | ||
position: static; | ||
} | ||
.hide-when-secondary-sidebar-shown { | ||
display: none !important; | ||
} | ||
.sb-footer-content__inner, | ||
.drop-secondary-sidebar-for-full-width-content .sb-article, | ||
.drop-secondary-sidebar-for-full-width-content .match-content-width { | ||
width: 59rem; | ||
} | ||
.sb-article, | ||
.match-content-width { | ||
width: 42rem; | ||
} | ||
} | ||
@media (min-width: 63rem) { | ||
.sb-footer-content__inner, | ||
.drop-secondary-sidebar-for-full-width-content .sb-article, | ||
.drop-secondary-sidebar-for-full-width-content .match-content-width { | ||
width: 63rem; | ||
} | ||
.sb-article, | ||
.match-content-width { | ||
width: 46rem; | ||
} | ||
} | ||
@media (min-width: 67rem) { | ||
.sb-footer-content__inner, | ||
.drop-secondary-sidebar-for-full-width-content .sb-article, | ||
.drop-secondary-sidebar-for-full-width-content .match-content-width { | ||
width: 67rem; | ||
} | ||
.sb-article, | ||
.match-content-width { | ||
width: 50rem; | ||
} | ||
} | ||
|
||
/* Desktop views */ | ||
@media (min-width: 76rem) { | ||
.sb-sidebar-primary { | ||
position: static; | ||
} | ||
.hide-when-primary-sidebar-shown { | ||
display: none !important; | ||
} | ||
.sb-footer-content__inner, | ||
.drop-secondary-sidebar-for-full-width-content .sb-article, | ||
.drop-secondary-sidebar-for-full-width-content .match-content-width { | ||
width: 59rem; | ||
} | ||
.sb-article, | ||
.match-content-width { | ||
width: 42rem; | ||
} | ||
} | ||
|
||
/* Full desktop views */ | ||
@media (min-width: 80rem) { | ||
.sb-article, | ||
.match-content-width { | ||
width: 46rem; | ||
} | ||
.sb-footer-content__inner, | ||
.drop-secondary-sidebar-for-full-width-content .sb-article, | ||
.drop-secondary-sidebar-for-full-width-content .match-content-width { | ||
width: 63rem; | ||
} | ||
} | ||
|
||
@media (min-width: 84rem) { | ||
.sb-article, | ||
.match-content-width { | ||
width: 50rem; | ||
} | ||
.sb-footer-content__inner, | ||
.drop-secondary-sidebar-for-full-width-content .sb-article, | ||
.drop-secondary-sidebar-for-full-width-content .match-content-width { | ||
width: 67rem; | ||
} | ||
} | ||
|
||
@media (min-width: 88rem) { | ||
.sb-footer-content__inner, | ||
.drop-secondary-sidebar-for-full-width-content .sb-article, | ||
.drop-secondary-sidebar-for-full-width-content .match-content-width { | ||
width: 67rem; | ||
} | ||
.sb-page-width { | ||
width: 88rem; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,154 @@ | ||
/* Highlighting utilities for Sphinx HTML documentation. */ | ||
"use strict"; | ||
|
||
const SPHINX_HIGHLIGHT_ENABLED = true | ||
|
||
/** | ||
* highlight a given string on a node by wrapping it in | ||
* span elements with the given class name. | ||
*/ | ||
const _highlight = (node, addItems, text, className) => { | ||
if (node.nodeType === Node.TEXT_NODE) { | ||
const val = node.nodeValue; | ||
const parent = node.parentNode; | ||
const pos = val.toLowerCase().indexOf(text); | ||
if ( | ||
pos >= 0 && | ||
!parent.classList.contains(className) && | ||
!parent.classList.contains("nohighlight") | ||
) { | ||
let span; | ||
|
||
const closestNode = parent.closest("body, svg, foreignObject"); | ||
const isInSVG = closestNode && closestNode.matches("svg"); | ||
if (isInSVG) { | ||
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); | ||
} else { | ||
span = document.createElement("span"); | ||
span.classList.add(className); | ||
} | ||
|
||
span.appendChild(document.createTextNode(val.substr(pos, text.length))); | ||
const rest = document.createTextNode(val.substr(pos + text.length)); | ||
parent.insertBefore( | ||
span, | ||
parent.insertBefore( | ||
rest, | ||
node.nextSibling | ||
) | ||
); | ||
node.nodeValue = val.substr(0, pos); | ||
/* There may be more occurrences of search term in this node. So call this | ||
* function recursively on the remaining fragment. | ||
*/ | ||
_highlight(rest, addItems, text, className); | ||
|
||
if (isInSVG) { | ||
const rect = document.createElementNS( | ||
"http://www.w3.org/2000/svg", | ||
"rect" | ||
); | ||
const bbox = parent.getBBox(); | ||
rect.x.baseVal.value = bbox.x; | ||
rect.y.baseVal.value = bbox.y; | ||
rect.width.baseVal.value = bbox.width; | ||
rect.height.baseVal.value = bbox.height; | ||
rect.setAttribute("class", className); | ||
addItems.push({ parent: parent, target: rect }); | ||
} | ||
} | ||
} else if (node.matches && !node.matches("button, select, textarea")) { | ||
node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); | ||
} | ||
}; | ||
const _highlightText = (thisNode, text, className) => { | ||
let addItems = []; | ||
_highlight(thisNode, addItems, text, className); | ||
addItems.forEach((obj) => | ||
obj.parent.insertAdjacentElement("beforebegin", obj.target) | ||
); | ||
}; | ||
|
||
/** | ||
* Small JavaScript module for the documentation. | ||
*/ | ||
const SphinxHighlight = { | ||
|
||
/** | ||
* highlight the search words provided in localstorage in the text | ||
*/ | ||
highlightSearchWords: () => { | ||
if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight | ||
|
||
// get and clear terms from localstorage | ||
const url = new URL(window.location); | ||
const highlight = | ||
localStorage.getItem("sphinx_highlight_terms") | ||
|| url.searchParams.get("highlight") | ||
|| ""; | ||
localStorage.removeItem("sphinx_highlight_terms") | ||
url.searchParams.delete("highlight"); | ||
window.history.replaceState({}, "", url); | ||
|
||
// get individual terms from highlight string | ||
const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); | ||
if (terms.length === 0) return; // nothing to do | ||
|
||
// There should never be more than one element matching "div.body" | ||
const divBody = document.querySelectorAll("div.body"); | ||
const body = divBody.length ? divBody[0] : document.querySelector("body"); | ||
window.setTimeout(() => { | ||
terms.forEach((term) => _highlightText(body, term, "highlighted")); | ||
}, 10); | ||
|
||
const searchBox = document.getElementById("searchbox"); | ||
if (searchBox === null) return; | ||
searchBox.appendChild( | ||
document | ||
.createRange() | ||
.createContextualFragment( | ||
'<p class="highlight-link">' + | ||
'<a href="javascript:SphinxHighlight.hideSearchWords()">' + | ||
_("Hide Search Matches") + | ||
"</a></p>" | ||
) | ||
); | ||
}, | ||
|
||
/** | ||
* helper function to hide the search marks again | ||
*/ | ||
hideSearchWords: () => { | ||
document | ||
.querySelectorAll("#searchbox .highlight-link") | ||
.forEach((el) => el.remove()); | ||
document | ||
.querySelectorAll("span.highlighted") | ||
.forEach((el) => el.classList.remove("highlighted")); | ||
localStorage.removeItem("sphinx_highlight_terms") | ||
}, | ||
|
||
initEscapeListener: () => { | ||
// only install a listener if it is really needed | ||
if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; | ||
|
||
document.addEventListener("keydown", (event) => { | ||
// bail for input elements | ||
if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; | ||
// bail with special keys | ||
if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; | ||
if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { | ||
SphinxHighlight.hideSearchWords(); | ||
event.preventDefault(); | ||
} | ||
}); | ||
}, | ||
}; | ||
|
||
_ready(() => { | ||
/* Do not call highlightSearchWords() when we are on the search page. | ||
* It will highlight words from the *previous* search query. | ||
*/ | ||
if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); | ||
SphinxHighlight.initEscapeListener(); | ||
}); |
Oops, something went wrong.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,329 @@ | ||
<!doctype html> | ||
<html class="no-js" lang="en" data-content_root="../"> | ||
<head><meta charset="utf-8"/> | ||
<meta name="viewport" content="width=device-width,initial-scale=1"/> | ||
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" /> | ||
<link rel="index" title="Index" href="../genindex.html" /><link rel="search" title="Search" href="../search.html" /><link rel="next" title="ProjectGaussians" href="../apis/proj.html" /><link rel="prev" title="CUDA Conventions" href="cuda_conventions.html" /> | ||
|
||
<!-- Generated with Sphinx 7.2.6 and Furo 2023.09.10 --> | ||
<title>Data Conventions - gsplat 0.1.2 documentation</title> | ||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=a746c00c" /> | ||
<link rel="stylesheet" type="text/css" href="../_static/styles/furo.css?v=135e06be" /> | ||
<link rel="stylesheet" type="text/css" href="../_static/styles/furo-extensions.css?v=36a5483c" /> | ||
|
||
|
||
|
||
|
||
<style> | ||
body { | ||
--color-code-background: #f8f8f8; | ||
--color-code-foreground: black; | ||
|
||
} | ||
@media not print { | ||
body[data-theme="dark"] { | ||
--color-code-background: #202020; | ||
--color-code-foreground: #d0d0d0; | ||
|
||
} | ||
@media (prefers-color-scheme: dark) { | ||
body:not([data-theme="light"]) { | ||
--color-code-background: #202020; | ||
--color-code-foreground: #d0d0d0; | ||
|
||
} | ||
} | ||
} | ||
</style></head> | ||
<body> | ||
|
||
<script> | ||
document.body.dataset.theme = localStorage.getItem("theme") || "auto"; | ||
</script> | ||
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> | ||
<symbol id="svg-toc" viewBox="0 0 24 24"> | ||
<title>Contents</title> | ||
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024"> | ||
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-menu" viewBox="0 0 24 24"> | ||
<title>Menu</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu"> | ||
<line x1="3" y1="12" x2="21" y2="12"></line> | ||
<line x1="3" y1="6" x2="21" y2="6"></line> | ||
<line x1="3" y1="18" x2="21" y2="18"></line> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-arrow-right" viewBox="0 0 24 24"> | ||
<title>Expand</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right"> | ||
<polyline points="9 18 15 12 9 6"></polyline> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-sun" viewBox="0 0 24 24"> | ||
<title>Light mode</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="feather-sun"> | ||
<circle cx="12" cy="12" r="5"></circle> | ||
<line x1="12" y1="1" x2="12" y2="3"></line> | ||
<line x1="12" y1="21" x2="12" y2="23"></line> | ||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line> | ||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line> | ||
<line x1="1" y1="12" x2="3" y2="12"></line> | ||
<line x1="21" y1="12" x2="23" y2="12"></line> | ||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line> | ||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-moon" viewBox="0 0 24 24"> | ||
<title>Dark mode</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon"> | ||
<path stroke="none" d="M0 0h24v24H0z" fill="none" /> | ||
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" /> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-sun-half" viewBox="0 0 24 24"> | ||
<title>Auto light/dark mode</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-shadow"> | ||
<path stroke="none" d="M0 0h24v24H0z" fill="none"/> | ||
<circle cx="12" cy="12" r="9" /> | ||
<path d="M13 12h5" /> | ||
<path d="M13 15h4" /> | ||
<path d="M13 18h1" /> | ||
<path d="M13 9h4" /> | ||
<path d="M13 6h1" /> | ||
</svg> | ||
</symbol> | ||
</svg> | ||
|
||
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation"> | ||
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc"> | ||
<label class="overlay sidebar-overlay" for="__navigation"> | ||
<div class="visually-hidden">Hide navigation sidebar</div> | ||
</label> | ||
<label class="overlay toc-overlay" for="__toc"> | ||
<div class="visually-hidden">Hide table of contents sidebar</div> | ||
</label> | ||
|
||
|
||
|
||
<div class="page"> | ||
<header class="mobile-header"> | ||
<div class="header-left"> | ||
<label class="nav-overlay-icon" for="__navigation"> | ||
<div class="visually-hidden">Toggle site navigation sidebar</div> | ||
<i class="icon"><svg><use href="#svg-menu"></use></svg></i> | ||
</label> | ||
</div> | ||
<div class="header-center"> | ||
<a href="../index.html"><div class="brand">gsplat 0.1.2 documentation</div></a> | ||
</div> | ||
<div class="header-right"> | ||
<div class="theme-toggle-container theme-toggle-header"> | ||
<button class="theme-toggle"> | ||
<div class="visually-hidden">Toggle Light / Dark / Auto color theme</div> | ||
<svg class="theme-icon-when-auto"><use href="#svg-sun-half"></use></svg> | ||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg> | ||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg> | ||
</button> | ||
</div> | ||
<label class="toc-overlay-icon toc-header-icon" for="__toc"> | ||
<div class="visually-hidden">Toggle table of contents sidebar</div> | ||
<i class="icon"><svg><use href="#svg-toc"></use></svg></i> | ||
</label> | ||
</div> | ||
</header> | ||
<aside class="sidebar-drawer"> | ||
<div class="sidebar-container"> | ||
|
||
<div class="sidebar-sticky"><a class="sidebar-brand" href="../index.html"> | ||
|
||
<span class="sidebar-brand-text">gsplat 0.1.2 documentation</span> | ||
</a> | ||
|
||
<div style="text-align: center"> | ||
<script async defer src="https://buttons.github.io/buttons.js"></script> | ||
<a class="github-button" href="https://github.com/nerfstudio-project/gsplat" | ||
data-color-scheme="no-preference: light; light: light; dark: light;" data-size="large" data-show-count="true" | ||
aria-label="Download buttons/github-buttons on GitHub"> | ||
Github | ||
</a> | ||
</div><form class="sidebar-search-container" method="get" action="../search.html" role="search"> | ||
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search"> | ||
<input type="hidden" name="check_keywords" value="yes"> | ||
<input type="hidden" name="area" value="default"> | ||
</form> | ||
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree"> | ||
<p class="caption" role="heading"><span class="caption-text">Examples</span></p> | ||
<ul> | ||
<li class="toctree-l1"><a class="reference internal" href="../examples/simple_trainer.html">Simple Trainer</a></li> | ||
</ul> | ||
<p class="caption" role="heading"><span class="caption-text">Conventions</span></p> | ||
<ul class="current"> | ||
<li class="toctree-l1"><a class="reference internal" href="cuda_conventions.html">CUDA Conventions</a></li> | ||
<li class="toctree-l1 current current-page"><a class="current reference internal" href="#">Data Conventions</a></li> | ||
</ul> | ||
<p class="caption" role="heading"><span class="caption-text">Python API</span></p> | ||
<ul> | ||
<li class="toctree-l1"><a class="reference internal" href="../apis/proj.html">ProjectGaussians</a></li> | ||
<li class="toctree-l1"><a class="reference internal" href="../apis/rast.html">RasterizeGaussians</a></li> | ||
<li class="toctree-l1"><a class="reference internal" href="../apis/utils.html">Utils</a></li> | ||
</ul> | ||
<p class="caption" role="heading"><span class="caption-text">Tests</span></p> | ||
<ul> | ||
<li class="toctree-l1"><a class="reference internal" href="../tests/tests.html">Tests</a></li> | ||
</ul> | ||
|
||
</div> | ||
</div> | ||
|
||
</div> | ||
|
||
</div> | ||
</aside> | ||
<div class="main"> | ||
<div class="content"> | ||
<div class="article-container"> | ||
<a href="#" class="back-to-top muted-link"> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> | ||
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path> | ||
</svg> | ||
<span>Back to top</span> | ||
</a> | ||
<div class="content-icon-container"> | ||
|
||
<div class="theme-toggle-container theme-toggle-content"> | ||
<button class="theme-toggle"> | ||
<div class="visually-hidden">Toggle Light / Dark / Auto color theme</div> | ||
<svg class="theme-icon-when-auto"><use href="#svg-sun-half"></use></svg> | ||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg> | ||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg> | ||
</button> | ||
</div> | ||
<label class="toc-overlay-icon toc-content-icon" for="__toc"> | ||
<div class="visually-hidden">Toggle table of contents sidebar</div> | ||
<i class="icon"><svg><use href="#svg-toc"></use></svg></i> | ||
</label> | ||
</div> | ||
<article role="main"> | ||
<section id="data-conventions"> | ||
<h1>Data Conventions<a class="headerlink" href="#data-conventions" title="Link to this heading">#</a></h1> | ||
<p>Here we explain the various data conventions used in our repo.</p> | ||
<section id="rotation-convention"> | ||
<h2>Rotation Convention<a class="headerlink" href="#rotation-convention" title="Link to this heading">#</a></h2> | ||
<p>We represent rotations with four dimensional vectors <span class="math notranslate nohighlight">\(q = (w,x,y,z)\)</span> such that the 3x3 <span class="math notranslate nohighlight">\(SO(3)\)</span> rotation matrix is defined by:</p> | ||
<div class="math-wrapper docutils container"> | ||
<div class="math notranslate nohighlight"> | ||
\[\begin{split}R = \begin{bmatrix} | ||
1 - 2 \left( y^2 + z^2 \right) & 2 \left( x y - w z \right) & 2 \left( x z + w y \right) \\ | ||
2 \left( x y + w z \right) & 1 - 2 \left( x^2 + z^2 \right) & 2 \left( y z - w x \right) \\ | ||
2 \left( x z - w y \right) & 2 \left( y z + w x \right) & 1 - 2 \left( x^2 + y^2 \right) \\ | ||
\end{bmatrix}\end{split}\]</div> | ||
</div> | ||
</section> | ||
<section id="view-matrix-and-projection-matrix"> | ||
<h2>View Matrix and Projection Matrix<a class="headerlink" href="#view-matrix-and-projection-matrix" title="Link to this heading">#</a></h2> | ||
<p>We refer to the <cite>view matrix</cite> <span class="math notranslate nohighlight">\(W\)</span> as the world to camera frame transformation (referred to as <cite>w2c</cite> in some sources) that maps | ||
3D world points <span class="math notranslate nohighlight">\((x,y,z)_{world}\)</span> to 3D camera points <span class="math notranslate nohighlight">\((x,y,z)_{cam}\)</span> where <span class="math notranslate nohighlight">\(z_{cam}\)</span> is the relative depth to the camera center.</p> | ||
<p>The <cite>projection matrix</cite> refers to the full projective transformation that maps 3D points in the world frame to the 2D points in the image/pixel frame. | ||
This transformation is the concatenation of the perspective projection matrix <span class="math notranslate nohighlight">\(K\)</span> (obtained from camera intrinsics) and the view matrix <span class="math notranslate nohighlight">\(W\)</span>. | ||
We adopt the <a class="reference external" href="http://www.songho.ca/opengl/gl_projectionmatrix.html">OpenGL</a> perspective projection convention. The projection matrix <span class="math notranslate nohighlight">\(P\)</span> is given by:</p> | ||
<div class="math-wrapper docutils container"> | ||
<div class="math notranslate nohighlight"> | ||
\[P = K W\]</div> | ||
</div> | ||
<div class="math-wrapper docutils container"> | ||
<div class="math notranslate nohighlight"> | ||
\[\begin{split}K = \begin{bmatrix} | ||
\frac{2n}{r - l} & 0.0 & \frac{r + l}{r - l} & 0.0 \\ | ||
0.0 & \frac{2n}{t - b} & \frac{t + b}{t - b} & 0.0 \\ | ||
0.0 & 0.0 & \frac{f + n}{f - n} & -\frac{f \cdot n}{f - n} \\ | ||
0.0 & 0.0 & 1.0 & 0.0 \\ | ||
\end{bmatrix}\end{split}\]</div> | ||
</div> | ||
</section> | ||
</section> | ||
|
||
</article> | ||
</div> | ||
<footer> | ||
|
||
<div class="related-pages"> | ||
<a class="next-page" href="../apis/proj.html"> | ||
<div class="page-info"> | ||
<div class="context"> | ||
<span>Next</span> | ||
</div> | ||
<div class="title">ProjectGaussians</div> | ||
</div> | ||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg> | ||
</a> | ||
<a class="prev-page" href="cuda_conventions.html"> | ||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg> | ||
<div class="page-info"> | ||
<div class="context"> | ||
<span>Previous</span> | ||
</div> | ||
|
||
<div class="title">CUDA Conventions</div> | ||
|
||
</div> | ||
</a> | ||
</div> | ||
<div class="bottom-of-page"> | ||
<div class="left-details"> | ||
<div class="copyright"> | ||
Copyright © 2023, nerfstudio team | ||
</div> | ||
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s | ||
|
||
<a href="https://github.com/pradyunsg/furo">Furo</a> | ||
|
||
</div> | ||
<div class="right-details"> | ||
|
||
</div> | ||
</div> | ||
|
||
</footer> | ||
</div> | ||
<aside class="toc-drawer"> | ||
|
||
|
||
<div class="toc-sticky toc-scroll"> | ||
<div class="toc-title-container"> | ||
<span class="toc-title"> | ||
On this page | ||
</span> | ||
</div> | ||
<div class="toc-tree-container"> | ||
<div class="toc-tree"> | ||
<ul> | ||
<li><a class="reference internal" href="#">Data Conventions</a><ul> | ||
<li><a class="reference internal" href="#rotation-convention">Rotation Convention</a></li> | ||
<li><a class="reference internal" href="#view-matrix-and-projection-matrix">View Matrix and Projection Matrix</a></li> | ||
</ul> | ||
</li> | ||
</ul> | ||
|
||
</div> | ||
</div> | ||
</div> | ||
|
||
|
||
</aside> | ||
</div> | ||
</div><script src="../_static/documentation_options.js?v=92734c54"></script> | ||
<script src="../_static/doctools.js?v=888ff710"></script> | ||
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script> | ||
<script src="../_static/scripts/furo.js?v=32e29ea5"></script> | ||
<script async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> | ||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,311 @@ | ||
<!doctype html> | ||
<html class="no-js" lang="en" data-content_root="../"> | ||
<head><meta charset="utf-8"/> | ||
<meta name="viewport" content="width=device-width,initial-scale=1"/> | ||
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" /> | ||
<link rel="index" title="Index" href="../genindex.html" /><link rel="search" title="Search" href="../search.html" /><link rel="next" title="CUDA Conventions" href="../conventions/cuda_conventions.html" /><link rel="prev" title="gsplat" href="../index.html" /> | ||
|
||
<!-- Generated with Sphinx 7.2.6 and Furo 2023.09.10 --> | ||
<title>Simple Trainer - gsplat 0.1.2 documentation</title> | ||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=a746c00c" /> | ||
<link rel="stylesheet" type="text/css" href="../_static/styles/furo.css?v=135e06be" /> | ||
<link rel="stylesheet" type="text/css" href="../_static/styles/furo-extensions.css?v=36a5483c" /> | ||
|
||
|
||
|
||
|
||
<style> | ||
body { | ||
--color-code-background: #f8f8f8; | ||
--color-code-foreground: black; | ||
|
||
} | ||
@media not print { | ||
body[data-theme="dark"] { | ||
--color-code-background: #202020; | ||
--color-code-foreground: #d0d0d0; | ||
|
||
} | ||
@media (prefers-color-scheme: dark) { | ||
body:not([data-theme="light"]) { | ||
--color-code-background: #202020; | ||
--color-code-foreground: #d0d0d0; | ||
|
||
} | ||
} | ||
} | ||
</style></head> | ||
<body> | ||
|
||
<script> | ||
document.body.dataset.theme = localStorage.getItem("theme") || "auto"; | ||
</script> | ||
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> | ||
<symbol id="svg-toc" viewBox="0 0 24 24"> | ||
<title>Contents</title> | ||
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024"> | ||
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-menu" viewBox="0 0 24 24"> | ||
<title>Menu</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu"> | ||
<line x1="3" y1="12" x2="21" y2="12"></line> | ||
<line x1="3" y1="6" x2="21" y2="6"></line> | ||
<line x1="3" y1="18" x2="21" y2="18"></line> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-arrow-right" viewBox="0 0 24 24"> | ||
<title>Expand</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right"> | ||
<polyline points="9 18 15 12 9 6"></polyline> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-sun" viewBox="0 0 24 24"> | ||
<title>Light mode</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="feather-sun"> | ||
<circle cx="12" cy="12" r="5"></circle> | ||
<line x1="12" y1="1" x2="12" y2="3"></line> | ||
<line x1="12" y1="21" x2="12" y2="23"></line> | ||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line> | ||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line> | ||
<line x1="1" y1="12" x2="3" y2="12"></line> | ||
<line x1="21" y1="12" x2="23" y2="12"></line> | ||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line> | ||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-moon" viewBox="0 0 24 24"> | ||
<title>Dark mode</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon"> | ||
<path stroke="none" d="M0 0h24v24H0z" fill="none" /> | ||
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" /> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-sun-half" viewBox="0 0 24 24"> | ||
<title>Auto light/dark mode</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-shadow"> | ||
<path stroke="none" d="M0 0h24v24H0z" fill="none"/> | ||
<circle cx="12" cy="12" r="9" /> | ||
<path d="M13 12h5" /> | ||
<path d="M13 15h4" /> | ||
<path d="M13 18h1" /> | ||
<path d="M13 9h4" /> | ||
<path d="M13 6h1" /> | ||
</svg> | ||
</symbol> | ||
</svg> | ||
|
||
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation"> | ||
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc"> | ||
<label class="overlay sidebar-overlay" for="__navigation"> | ||
<div class="visually-hidden">Hide navigation sidebar</div> | ||
</label> | ||
<label class="overlay toc-overlay" for="__toc"> | ||
<div class="visually-hidden">Hide table of contents sidebar</div> | ||
</label> | ||
|
||
|
||
|
||
<div class="page"> | ||
<header class="mobile-header"> | ||
<div class="header-left"> | ||
<label class="nav-overlay-icon" for="__navigation"> | ||
<div class="visually-hidden">Toggle site navigation sidebar</div> | ||
<i class="icon"><svg><use href="#svg-menu"></use></svg></i> | ||
</label> | ||
</div> | ||
<div class="header-center"> | ||
<a href="../index.html"><div class="brand">gsplat 0.1.2 documentation</div></a> | ||
</div> | ||
<div class="header-right"> | ||
<div class="theme-toggle-container theme-toggle-header"> | ||
<button class="theme-toggle"> | ||
<div class="visually-hidden">Toggle Light / Dark / Auto color theme</div> | ||
<svg class="theme-icon-when-auto"><use href="#svg-sun-half"></use></svg> | ||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg> | ||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg> | ||
</button> | ||
</div> | ||
<label class="toc-overlay-icon toc-header-icon" for="__toc"> | ||
<div class="visually-hidden">Toggle table of contents sidebar</div> | ||
<i class="icon"><svg><use href="#svg-toc"></use></svg></i> | ||
</label> | ||
</div> | ||
</header> | ||
<aside class="sidebar-drawer"> | ||
<div class="sidebar-container"> | ||
|
||
<div class="sidebar-sticky"><a class="sidebar-brand" href="../index.html"> | ||
|
||
<span class="sidebar-brand-text">gsplat 0.1.2 documentation</span> | ||
</a> | ||
|
||
<div style="text-align: center"> | ||
<script async defer src="https://buttons.github.io/buttons.js"></script> | ||
<a class="github-button" href="https://github.com/nerfstudio-project/gsplat" | ||
data-color-scheme="no-preference: light; light: light; dark: light;" data-size="large" data-show-count="true" | ||
aria-label="Download buttons/github-buttons on GitHub"> | ||
Github | ||
</a> | ||
</div><form class="sidebar-search-container" method="get" action="../search.html" role="search"> | ||
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search"> | ||
<input type="hidden" name="check_keywords" value="yes"> | ||
<input type="hidden" name="area" value="default"> | ||
</form> | ||
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree"> | ||
<p class="caption" role="heading"><span class="caption-text">Examples</span></p> | ||
<ul class="current"> | ||
<li class="toctree-l1 current current-page"><a class="current reference internal" href="#">Simple Trainer</a></li> | ||
</ul> | ||
<p class="caption" role="heading"><span class="caption-text">Conventions</span></p> | ||
<ul> | ||
<li class="toctree-l1"><a class="reference internal" href="../conventions/cuda_conventions.html">CUDA Conventions</a></li> | ||
<li class="toctree-l1"><a class="reference internal" href="../conventions/data_conventions.html">Data Conventions</a></li> | ||
</ul> | ||
<p class="caption" role="heading"><span class="caption-text">Python API</span></p> | ||
<ul> | ||
<li class="toctree-l1"><a class="reference internal" href="../apis/proj.html">ProjectGaussians</a></li> | ||
<li class="toctree-l1"><a class="reference internal" href="../apis/rast.html">RasterizeGaussians</a></li> | ||
<li class="toctree-l1"><a class="reference internal" href="../apis/utils.html">Utils</a></li> | ||
</ul> | ||
<p class="caption" role="heading"><span class="caption-text">Tests</span></p> | ||
<ul> | ||
<li class="toctree-l1"><a class="reference internal" href="../tests/tests.html">Tests</a></li> | ||
</ul> | ||
|
||
</div> | ||
</div> | ||
|
||
</div> | ||
|
||
</div> | ||
</aside> | ||
<div class="main"> | ||
<div class="content"> | ||
<div class="article-container"> | ||
<a href="#" class="back-to-top muted-link"> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> | ||
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path> | ||
</svg> | ||
<span>Back to top</span> | ||
</a> | ||
<div class="content-icon-container"> | ||
|
||
<div class="theme-toggle-container theme-toggle-content"> | ||
<button class="theme-toggle"> | ||
<div class="visually-hidden">Toggle Light / Dark / Auto color theme</div> | ||
<svg class="theme-icon-when-auto"><use href="#svg-sun-half"></use></svg> | ||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg> | ||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg> | ||
</button> | ||
</div> | ||
<label class="toc-overlay-icon toc-content-icon" for="__toc"> | ||
<div class="visually-hidden">Toggle table of contents sidebar</div> | ||
<i class="icon"><svg><use href="#svg-toc"></use></svg></i> | ||
</label> | ||
</div> | ||
<article role="main"> | ||
<section id="simple-trainer"> | ||
<h1>Simple Trainer<a class="headerlink" href="#simple-trainer" title="Link to this heading">#</a></h1> | ||
<section id="training-on-an-image"> | ||
<h2>Training on an image<a class="headerlink" href="#training-on-an-image" title="Link to this heading">#</a></h2> | ||
<p>The <cite>examples/simple_trainer.py</cite> script allows you to test the basic forward projection and rasterization of random gaussians | ||
and their differentiability on a single training image. This allows you to overfit gaussians on a single view.</p> | ||
<p>Simply run the script with:</p> | ||
<div class="literal-block-wrapper docutils container" id="id1"> | ||
<div class="code-block-caption"><span class="caption-text">simple_trainer.py</span><a class="headerlink" href="#id1" title="Link to this code">#</a></div> | ||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python<span class="w"> </span>examples/simple_trainer.py<span class="w"> </span>--height<span class="w"> </span><span class="m">256</span><span class="w"> </span>--width<span class="w"> </span><span class="m">256</span><span class="w"> </span>--num_points<span class="w"> </span><span class="m">2000</span><span class="w"> </span>--save_imgs | ||
</pre></div> | ||
</div> | ||
</div> | ||
<p>to get a result similar to the one below:</p> | ||
<a class="reference internal image-reference" href="../_images/square.gif"><img alt="Gaussians overfit on a single image" src="../_images/square.gif" style="width: 256px;" /></a> | ||
<p>You can also provide a path to your own custom image file using the <code class="docutils literal notranslate"><span class="pre">--img_path</span></code> flag:</p> | ||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python<span class="w"> </span>examples/simple_trainer.py<span class="w"> </span>--img_path<span class="w"> </span>PATH_TO_IMG<span class="w"> </span>--save_imgs | ||
</pre></div> | ||
</div> | ||
</section> | ||
</section> | ||
|
||
</article> | ||
</div> | ||
<footer> | ||
|
||
<div class="related-pages"> | ||
<a class="next-page" href="../conventions/cuda_conventions.html"> | ||
<div class="page-info"> | ||
<div class="context"> | ||
<span>Next</span> | ||
</div> | ||
<div class="title">CUDA Conventions</div> | ||
</div> | ||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg> | ||
</a> | ||
<a class="prev-page" href="../index.html"> | ||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg> | ||
<div class="page-info"> | ||
<div class="context"> | ||
<span>Previous</span> | ||
</div> | ||
|
||
<div class="title">Home</div> | ||
|
||
</div> | ||
</a> | ||
</div> | ||
<div class="bottom-of-page"> | ||
<div class="left-details"> | ||
<div class="copyright"> | ||
Copyright © 2023, nerfstudio team | ||
</div> | ||
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s | ||
|
||
<a href="https://github.com/pradyunsg/furo">Furo</a> | ||
|
||
</div> | ||
<div class="right-details"> | ||
|
||
</div> | ||
</div> | ||
|
||
</footer> | ||
</div> | ||
<aside class="toc-drawer"> | ||
|
||
|
||
<div class="toc-sticky toc-scroll"> | ||
<div class="toc-title-container"> | ||
<span class="toc-title"> | ||
On this page | ||
</span> | ||
</div> | ||
<div class="toc-tree-container"> | ||
<div class="toc-tree"> | ||
<ul> | ||
<li><a class="reference internal" href="#">Simple Trainer</a><ul> | ||
<li><a class="reference internal" href="#training-on-an-image">Training on an image</a></li> | ||
</ul> | ||
</li> | ||
</ul> | ||
|
||
</div> | ||
</div> | ||
</div> | ||
|
||
|
||
</aside> | ||
</div> | ||
</div><script src="../_static/documentation_options.js?v=92734c54"></script> | ||
<script src="../_static/doctools.js?v=888ff710"></script> | ||
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script> | ||
<script src="../_static/scripts/furo.js?v=32e29ea5"></script> | ||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,329 @@ | ||
<!doctype html> | ||
<html class="no-js" lang="en" data-content_root="./"> | ||
<head><meta charset="utf-8"/> | ||
<meta name="viewport" content="width=device-width,initial-scale=1"/> | ||
<meta name="color-scheme" content="light dark"><link rel="index" title="Index" href="#" /><link rel="search" title="Search" href="search.html" /> | ||
|
||
<!-- Generated with Sphinx 7.2.6 and Furo 2023.09.10 --><title>Index - gsplat 0.1.2 documentation</title> | ||
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=a746c00c" /> | ||
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=135e06be" /> | ||
<link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=36a5483c" /> | ||
|
||
|
||
|
||
|
||
<style> | ||
body { | ||
--color-code-background: #f8f8f8; | ||
--color-code-foreground: black; | ||
|
||
} | ||
@media not print { | ||
body[data-theme="dark"] { | ||
--color-code-background: #202020; | ||
--color-code-foreground: #d0d0d0; | ||
|
||
} | ||
@media (prefers-color-scheme: dark) { | ||
body:not([data-theme="light"]) { | ||
--color-code-background: #202020; | ||
--color-code-foreground: #d0d0d0; | ||
|
||
} | ||
} | ||
} | ||
</style></head> | ||
<body> | ||
|
||
<script> | ||
document.body.dataset.theme = localStorage.getItem("theme") || "auto"; | ||
</script> | ||
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> | ||
<symbol id="svg-toc" viewBox="0 0 24 24"> | ||
<title>Contents</title> | ||
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024"> | ||
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-menu" viewBox="0 0 24 24"> | ||
<title>Menu</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu"> | ||
<line x1="3" y1="12" x2="21" y2="12"></line> | ||
<line x1="3" y1="6" x2="21" y2="6"></line> | ||
<line x1="3" y1="18" x2="21" y2="18"></line> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-arrow-right" viewBox="0 0 24 24"> | ||
<title>Expand</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right"> | ||
<polyline points="9 18 15 12 9 6"></polyline> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-sun" viewBox="0 0 24 24"> | ||
<title>Light mode</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="feather-sun"> | ||
<circle cx="12" cy="12" r="5"></circle> | ||
<line x1="12" y1="1" x2="12" y2="3"></line> | ||
<line x1="12" y1="21" x2="12" y2="23"></line> | ||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line> | ||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line> | ||
<line x1="1" y1="12" x2="3" y2="12"></line> | ||
<line x1="21" y1="12" x2="23" y2="12"></line> | ||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line> | ||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-moon" viewBox="0 0 24 24"> | ||
<title>Dark mode</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon"> | ||
<path stroke="none" d="M0 0h24v24H0z" fill="none" /> | ||
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" /> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-sun-half" viewBox="0 0 24 24"> | ||
<title>Auto light/dark mode</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-shadow"> | ||
<path stroke="none" d="M0 0h24v24H0z" fill="none"/> | ||
<circle cx="12" cy="12" r="9" /> | ||
<path d="M13 12h5" /> | ||
<path d="M13 15h4" /> | ||
<path d="M13 18h1" /> | ||
<path d="M13 9h4" /> | ||
<path d="M13 6h1" /> | ||
</svg> | ||
</symbol> | ||
</svg> | ||
|
||
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation"> | ||
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc"> | ||
<label class="overlay sidebar-overlay" for="__navigation"> | ||
<div class="visually-hidden">Hide navigation sidebar</div> | ||
</label> | ||
<label class="overlay toc-overlay" for="__toc"> | ||
<div class="visually-hidden">Hide table of contents sidebar</div> | ||
</label> | ||
|
||
|
||
|
||
<div class="page"> | ||
<header class="mobile-header"> | ||
<div class="header-left"> | ||
<label class="nav-overlay-icon" for="__navigation"> | ||
<div class="visually-hidden">Toggle site navigation sidebar</div> | ||
<i class="icon"><svg><use href="#svg-menu"></use></svg></i> | ||
</label> | ||
</div> | ||
<div class="header-center"> | ||
<a href="index.html"><div class="brand">gsplat 0.1.2 documentation</div></a> | ||
</div> | ||
<div class="header-right"> | ||
<div class="theme-toggle-container theme-toggle-header"> | ||
<button class="theme-toggle"> | ||
<div class="visually-hidden">Toggle Light / Dark / Auto color theme</div> | ||
<svg class="theme-icon-when-auto"><use href="#svg-sun-half"></use></svg> | ||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg> | ||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg> | ||
</button> | ||
</div> | ||
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc"> | ||
<div class="visually-hidden">Toggle table of contents sidebar</div> | ||
<i class="icon"><svg><use href="#svg-toc"></use></svg></i> | ||
</label> | ||
</div> | ||
</header> | ||
<aside class="sidebar-drawer"> | ||
<div class="sidebar-container"> | ||
|
||
<div class="sidebar-sticky"><a class="sidebar-brand" href="index.html"> | ||
|
||
<span class="sidebar-brand-text">gsplat 0.1.2 documentation</span> | ||
</a> | ||
|
||
<div style="text-align: center"> | ||
<script async defer src="https://buttons.github.io/buttons.js"></script> | ||
<a class="github-button" href="https://github.com/nerfstudio-project/gsplat" | ||
data-color-scheme="no-preference: light; light: light; dark: light;" data-size="large" data-show-count="true" | ||
aria-label="Download buttons/github-buttons on GitHub"> | ||
Github | ||
</a> | ||
</div><form class="sidebar-search-container" method="get" action="search.html" role="search"> | ||
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search"> | ||
<input type="hidden" name="check_keywords" value="yes"> | ||
<input type="hidden" name="area" value="default"> | ||
</form> | ||
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree"> | ||
<p class="caption" role="heading"><span class="caption-text">Examples</span></p> | ||
<ul> | ||
<li class="toctree-l1"><a class="reference internal" href="examples/simple_trainer.html">Simple Trainer</a></li> | ||
</ul> | ||
<p class="caption" role="heading"><span class="caption-text">Conventions</span></p> | ||
<ul> | ||
<li class="toctree-l1"><a class="reference internal" href="conventions/cuda_conventions.html">CUDA Conventions</a></li> | ||
<li class="toctree-l1"><a class="reference internal" href="conventions/data_conventions.html">Data Conventions</a></li> | ||
</ul> | ||
<p class="caption" role="heading"><span class="caption-text">Python API</span></p> | ||
<ul> | ||
<li class="toctree-l1"><a class="reference internal" href="apis/proj.html">ProjectGaussians</a></li> | ||
<li class="toctree-l1"><a class="reference internal" href="apis/rast.html">RasterizeGaussians</a></li> | ||
<li class="toctree-l1"><a class="reference internal" href="apis/utils.html">Utils</a></li> | ||
</ul> | ||
<p class="caption" role="heading"><span class="caption-text">Tests</span></p> | ||
<ul> | ||
<li class="toctree-l1"><a class="reference internal" href="tests/tests.html">Tests</a></li> | ||
</ul> | ||
|
||
</div> | ||
</div> | ||
|
||
</div> | ||
|
||
</div> | ||
</aside> | ||
<div class="main"> | ||
<div class="content"> | ||
<div class="article-container"> | ||
<a href="#" class="back-to-top muted-link"> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> | ||
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path> | ||
</svg> | ||
<span>Back to top</span> | ||
</a> | ||
<div class="content-icon-container"> | ||
<div class="theme-toggle-container theme-toggle-content"> | ||
<button class="theme-toggle"> | ||
<div class="visually-hidden">Toggle Light / Dark / Auto color theme</div> | ||
<svg class="theme-icon-when-auto"><use href="#svg-sun-half"></use></svg> | ||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg> | ||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg> | ||
</button> | ||
</div> | ||
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc"> | ||
<div class="visually-hidden">Toggle table of contents sidebar</div> | ||
<i class="icon"><svg><use href="#svg-toc"></use></svg></i> | ||
</label> | ||
</div> | ||
<article role="main"> | ||
|
||
<section class="genindex-section"> | ||
<h1 id="index">Index</h1> | ||
<div class="genindex-jumpbox"><a href="#B"><strong>B</strong></a> | <a href="#C"><strong>C</strong></a> | <a href="#G"><strong>G</strong></a> | <a href="#M"><strong>M</strong></a> | <a href="#P"><strong>P</strong></a> | <a href="#R"><strong>R</strong></a> | <a href="#S"><strong>S</strong></a></div> | ||
</section> | ||
<section id="B" class="genindex-section"> | ||
<h2>B</h2> | ||
<table style="width: 100%" class="indextable genindextable"><tr> | ||
<td style="width: 33%; vertical-align: top;"><ul> | ||
<li><a href="apis/utils.html#gsplat.bin_and_sort_gaussians">bin_and_sort_gaussians() (in module gsplat)</a> | ||
</li> | ||
</ul></td> | ||
</tr></table> | ||
</section> | ||
|
||
<section id="C" class="genindex-section"> | ||
<h2>C</h2> | ||
<table style="width: 100%" class="indextable genindextable"><tr> | ||
<td style="width: 33%; vertical-align: top;"><ul> | ||
<li><a href="apis/utils.html#gsplat.compute_cov2d_bounds">compute_cov2d_bounds() (in module gsplat)</a> | ||
</li> | ||
</ul></td> | ||
<td style="width: 33%; vertical-align: top;"><ul> | ||
<li><a href="apis/utils.html#gsplat.compute_cumulative_intersects">compute_cumulative_intersects() (in module gsplat)</a> | ||
</li> | ||
</ul></td> | ||
</tr></table> | ||
</section> | ||
|
||
<section id="G" class="genindex-section"> | ||
<h2>G</h2> | ||
<table style="width: 100%" class="indextable genindextable"><tr> | ||
<td style="width: 33%; vertical-align: top;"><ul> | ||
<li><a href="apis/utils.html#gsplat.get_tile_bin_edges">get_tile_bin_edges() (in module gsplat)</a> | ||
</li> | ||
</ul></td> | ||
</tr></table> | ||
</section> | ||
|
||
<section id="M" class="genindex-section"> | ||
<h2>M</h2> | ||
<table style="width: 100%" class="indextable genindextable"><tr> | ||
<td style="width: 33%; vertical-align: top;"><ul> | ||
<li><a href="apis/utils.html#gsplat.map_gaussian_to_intersects">map_gaussian_to_intersects() (in module gsplat)</a> | ||
</li> | ||
</ul></td> | ||
</tr></table> | ||
</section> | ||
|
||
<section id="P" class="genindex-section"> | ||
<h2>P</h2> | ||
<table style="width: 100%" class="indextable genindextable"><tr> | ||
<td style="width: 33%; vertical-align: top;"><ul> | ||
<li><a href="apis/proj.html#gsplat.project_gaussians">project_gaussians() (in module gsplat)</a> | ||
</li> | ||
</ul></td> | ||
</tr></table> | ||
</section> | ||
|
||
<section id="R" class="genindex-section"> | ||
<h2>R</h2> | ||
<table style="width: 100%" class="indextable genindextable"><tr> | ||
<td style="width: 33%; vertical-align: top;"><ul> | ||
<li><a href="apis/rast.html#gsplat.rasterize_gaussians">rasterize_gaussians() (in module gsplat)</a> | ||
</li> | ||
</ul></td> | ||
</tr></table> | ||
</section> | ||
|
||
<section id="S" class="genindex-section"> | ||
<h2>S</h2> | ||
<table style="width: 100%" class="indextable genindextable"><tr> | ||
<td style="width: 33%; vertical-align: top;"><ul> | ||
<li><a href="apis/utils.html#gsplat.spherical_harmonics">spherical_harmonics() (in module gsplat)</a> | ||
</li> | ||
</ul></td> | ||
</tr></table> | ||
</section> | ||
|
||
|
||
</article> | ||
</div> | ||
<footer> | ||
|
||
<div class="related-pages"> | ||
|
||
|
||
</div> | ||
<div class="bottom-of-page"> | ||
<div class="left-details"> | ||
<div class="copyright"> | ||
Copyright © 2023, nerfstudio team | ||
</div> | ||
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s | ||
|
||
<a href="https://github.com/pradyunsg/furo">Furo</a> | ||
|
||
</div> | ||
<div class="right-details"> | ||
|
||
</div> | ||
</div> | ||
|
||
</footer> | ||
</div> | ||
<aside class="toc-drawer no-toc"> | ||
|
||
|
||
|
||
</aside> | ||
</div> | ||
</div><script src="_static/documentation_options.js?v=92734c54"></script> | ||
<script src="_static/doctools.js?v=888ff710"></script> | ||
<script src="_static/sphinx_highlight.js?v=dc90522c"></script> | ||
<script src="_static/scripts/furo.js?v=32e29ea5"></script> | ||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,339 @@ | ||
<!doctype html> | ||
<html class="no-js" lang="en" data-content_root="./"> | ||
<head><meta charset="utf-8"/> | ||
<meta name="viewport" content="width=device-width,initial-scale=1"/> | ||
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" /> | ||
<link rel="index" title="Index" href="genindex.html" /><link rel="search" title="Search" href="search.html" /><link rel="next" title="Simple Trainer" href="examples/simple_trainer.html" /> | ||
|
||
<!-- Generated with Sphinx 7.2.6 and Furo 2023.09.10 --> | ||
<title>gsplat 0.1.2 documentation</title> | ||
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=a746c00c" /> | ||
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=135e06be" /> | ||
<link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=36a5483c" /> | ||
|
||
|
||
|
||
|
||
<style> | ||
body { | ||
--color-code-background: #f8f8f8; | ||
--color-code-foreground: black; | ||
|
||
} | ||
@media not print { | ||
body[data-theme="dark"] { | ||
--color-code-background: #202020; | ||
--color-code-foreground: #d0d0d0; | ||
|
||
} | ||
@media (prefers-color-scheme: dark) { | ||
body:not([data-theme="light"]) { | ||
--color-code-background: #202020; | ||
--color-code-foreground: #d0d0d0; | ||
|
||
} | ||
} | ||
} | ||
</style></head> | ||
<body> | ||
|
||
<script> | ||
document.body.dataset.theme = localStorage.getItem("theme") || "auto"; | ||
</script> | ||
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> | ||
<symbol id="svg-toc" viewBox="0 0 24 24"> | ||
<title>Contents</title> | ||
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024"> | ||
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-menu" viewBox="0 0 24 24"> | ||
<title>Menu</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu"> | ||
<line x1="3" y1="12" x2="21" y2="12"></line> | ||
<line x1="3" y1="6" x2="21" y2="6"></line> | ||
<line x1="3" y1="18" x2="21" y2="18"></line> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-arrow-right" viewBox="0 0 24 24"> | ||
<title>Expand</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right"> | ||
<polyline points="9 18 15 12 9 6"></polyline> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-sun" viewBox="0 0 24 24"> | ||
<title>Light mode</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="feather-sun"> | ||
<circle cx="12" cy="12" r="5"></circle> | ||
<line x1="12" y1="1" x2="12" y2="3"></line> | ||
<line x1="12" y1="21" x2="12" y2="23"></line> | ||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line> | ||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line> | ||
<line x1="1" y1="12" x2="3" y2="12"></line> | ||
<line x1="21" y1="12" x2="23" y2="12"></line> | ||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line> | ||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-moon" viewBox="0 0 24 24"> | ||
<title>Dark mode</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon"> | ||
<path stroke="none" d="M0 0h24v24H0z" fill="none" /> | ||
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" /> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-sun-half" viewBox="0 0 24 24"> | ||
<title>Auto light/dark mode</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-shadow"> | ||
<path stroke="none" d="M0 0h24v24H0z" fill="none"/> | ||
<circle cx="12" cy="12" r="9" /> | ||
<path d="M13 12h5" /> | ||
<path d="M13 15h4" /> | ||
<path d="M13 18h1" /> | ||
<path d="M13 9h4" /> | ||
<path d="M13 6h1" /> | ||
</svg> | ||
</symbol> | ||
</svg> | ||
|
||
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation"> | ||
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc"> | ||
<label class="overlay sidebar-overlay" for="__navigation"> | ||
<div class="visually-hidden">Hide navigation sidebar</div> | ||
</label> | ||
<label class="overlay toc-overlay" for="__toc"> | ||
<div class="visually-hidden">Hide table of contents sidebar</div> | ||
</label> | ||
|
||
|
||
|
||
<div class="page"> | ||
<header class="mobile-header"> | ||
<div class="header-left"> | ||
<label class="nav-overlay-icon" for="__navigation"> | ||
<div class="visually-hidden">Toggle site navigation sidebar</div> | ||
<i class="icon"><svg><use href="#svg-menu"></use></svg></i> | ||
</label> | ||
</div> | ||
<div class="header-center"> | ||
<a href="#"><div class="brand">gsplat 0.1.2 documentation</div></a> | ||
</div> | ||
<div class="header-right"> | ||
<div class="theme-toggle-container theme-toggle-header"> | ||
<button class="theme-toggle"> | ||
<div class="visually-hidden">Toggle Light / Dark / Auto color theme</div> | ||
<svg class="theme-icon-when-auto"><use href="#svg-sun-half"></use></svg> | ||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg> | ||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg> | ||
</button> | ||
</div> | ||
<label class="toc-overlay-icon toc-header-icon" for="__toc"> | ||
<div class="visually-hidden">Toggle table of contents sidebar</div> | ||
<i class="icon"><svg><use href="#svg-toc"></use></svg></i> | ||
</label> | ||
</div> | ||
</header> | ||
<aside class="sidebar-drawer"> | ||
<div class="sidebar-container"> | ||
|
||
<div class="sidebar-sticky"><a class="sidebar-brand" href="#"> | ||
|
||
<span class="sidebar-brand-text">gsplat 0.1.2 documentation</span> | ||
</a> | ||
|
||
<div style="text-align: center"> | ||
<script async defer src="https://buttons.github.io/buttons.js"></script> | ||
<a class="github-button" href="https://github.com/nerfstudio-project/gsplat" | ||
data-color-scheme="no-preference: light; light: light; dark: light;" data-size="large" data-show-count="true" | ||
aria-label="Download buttons/github-buttons on GitHub"> | ||
Github | ||
</a> | ||
</div><form class="sidebar-search-container" method="get" action="search.html" role="search"> | ||
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search"> | ||
<input type="hidden" name="check_keywords" value="yes"> | ||
<input type="hidden" name="area" value="default"> | ||
</form> | ||
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree"> | ||
<p class="caption" role="heading"><span class="caption-text">Examples</span></p> | ||
<ul> | ||
<li class="toctree-l1"><a class="reference internal" href="examples/simple_trainer.html">Simple Trainer</a></li> | ||
</ul> | ||
<p class="caption" role="heading"><span class="caption-text">Conventions</span></p> | ||
<ul> | ||
<li class="toctree-l1"><a class="reference internal" href="conventions/cuda_conventions.html">CUDA Conventions</a></li> | ||
<li class="toctree-l1"><a class="reference internal" href="conventions/data_conventions.html">Data Conventions</a></li> | ||
</ul> | ||
<p class="caption" role="heading"><span class="caption-text">Python API</span></p> | ||
<ul> | ||
<li class="toctree-l1"><a class="reference internal" href="apis/proj.html">ProjectGaussians</a></li> | ||
<li class="toctree-l1"><a class="reference internal" href="apis/rast.html">RasterizeGaussians</a></li> | ||
<li class="toctree-l1"><a class="reference internal" href="apis/utils.html">Utils</a></li> | ||
</ul> | ||
<p class="caption" role="heading"><span class="caption-text">Tests</span></p> | ||
<ul> | ||
<li class="toctree-l1"><a class="reference internal" href="tests/tests.html">Tests</a></li> | ||
</ul> | ||
|
||
</div> | ||
</div> | ||
|
||
</div> | ||
|
||
</div> | ||
</aside> | ||
<div class="main"> | ||
<div class="content"> | ||
<div class="article-container"> | ||
<a href="#" class="back-to-top muted-link"> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> | ||
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path> | ||
</svg> | ||
<span>Back to top</span> | ||
</a> | ||
<div class="content-icon-container"> | ||
|
||
<div class="theme-toggle-container theme-toggle-content"> | ||
<button class="theme-toggle"> | ||
<div class="visually-hidden">Toggle Light / Dark / Auto color theme</div> | ||
<svg class="theme-icon-when-auto"><use href="#svg-sun-half"></use></svg> | ||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg> | ||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg> | ||
</button> | ||
</div> | ||
<label class="toc-overlay-icon toc-content-icon" for="__toc"> | ||
<div class="visually-hidden">Toggle table of contents sidebar</div> | ||
<i class="icon"><svg><use href="#svg-toc"></use></svg></i> | ||
</label> | ||
</div> | ||
<article role="main"> | ||
<section id="gsplat"> | ||
<h1>gsplat<a class="headerlink" href="#gsplat" title="Link to this heading">#</a></h1> | ||
<a class="reference internal image-reference" href="_images/training.gif"><img alt="Example training image" src="_images/training.gif" style="width: 800px;" /></a> | ||
<section id="overview"> | ||
<h2>Overview<a class="headerlink" href="#overview" title="Link to this heading">#</a></h2> | ||
<p><em>gsplat</em> is an open-source library for CUDA accelerated rasterization of gaussians with python bindings. It is inspired by the SIGGRAPH paper “3D Gaussian Splatting for Real-Time Rendering of Radiance Fields” <span id="id1">[<a class="reference internal" href="#id3" title="Bernhard Kerbl, Georgios Kopanas, Thomas Leimkühler, and George Drettakis. 3d gaussian splatting for real-time radiance field rendering. ACM Transactions on Graphics, July 2023. URL: https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/.">1</a>]</span>. | ||
This libary contains the neccessary components for efficient 3D to 2D projection, sorting, and alpha compositing of gaussians and their associated backward passes for inverse rendering.</p> | ||
</section> | ||
<section id="contributing"> | ||
<h2>Contributing<a class="headerlink" href="#contributing" title="Link to this heading">#</a></h2> | ||
<p>This repository was born from the curiosity of people on the Nerfstudio team trying to understand a new rendering technique. We welcome contributions of any kind and are open to feedback, bug-reports, and improvements to help expand the capabilities of this software.</p> | ||
</section> | ||
<section id="links"> | ||
<h2>Links<a class="headerlink" href="#links" title="Link to this heading">#</a></h2> | ||
<div class="toctree-wrapper compound"> | ||
<p class="caption" role="heading"><span class="caption-text">Examples</span></p> | ||
<ul> | ||
<li class="toctree-l1"><a class="reference internal" href="examples/simple_trainer.html">Simple Trainer</a></li> | ||
</ul> | ||
</div> | ||
<div class="toctree-wrapper compound"> | ||
<p class="caption" role="heading"><span class="caption-text">Conventions</span></p> | ||
<ul> | ||
<li class="toctree-l1"><a class="reference internal" href="conventions/cuda_conventions.html">CUDA Conventions</a></li> | ||
<li class="toctree-l1"><a class="reference internal" href="conventions/data_conventions.html">Data Conventions</a></li> | ||
</ul> | ||
</div> | ||
<div class="toctree-wrapper compound"> | ||
<p class="caption" role="heading"><span class="caption-text">Python API</span></p> | ||
<ul> | ||
<li class="toctree-l1"><a class="reference internal" href="apis/proj.html">ProjectGaussians</a></li> | ||
<li class="toctree-l1"><a class="reference internal" href="apis/rast.html">RasterizeGaussians</a></li> | ||
<li class="toctree-l1"><a class="reference internal" href="apis/utils.html">Utils</a></li> | ||
</ul> | ||
</div> | ||
<div class="toctree-wrapper compound"> | ||
<p class="caption" role="heading"><span class="caption-text">Tests</span></p> | ||
<ul> | ||
<li class="toctree-l1"><a class="reference internal" href="tests/tests.html">Tests</a></li> | ||
</ul> | ||
</div> | ||
</section> | ||
<section id="citations"> | ||
<h2>Citations<a class="headerlink" href="#citations" title="Link to this heading">#</a></h2> | ||
<div class="docutils container" id="id2"> | ||
<div role="list" class="citation-list"> | ||
<div class="citation" id="id3" role="doc-biblioentry"> | ||
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id1">1</a><span class="fn-bracket">]</span></span> | ||
<p>Bernhard Kerbl, Georgios Kopanas, Thomas Leimkühler, and George Drettakis. 3d gaussian splatting for real-time radiance field rendering. <em>ACM Transactions on Graphics</em>, July 2023. URL: <a class="reference external" href="https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/">https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/</a>.</p> | ||
</div> | ||
</div> | ||
</div> | ||
</section> | ||
</section> | ||
|
||
</article> | ||
</div> | ||
<footer> | ||
|
||
<div class="related-pages"> | ||
<a class="next-page" href="examples/simple_trainer.html"> | ||
<div class="page-info"> | ||
<div class="context"> | ||
<span>Next</span> | ||
</div> | ||
<div class="title">Simple Trainer</div> | ||
</div> | ||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg> | ||
</a> | ||
|
||
</div> | ||
<div class="bottom-of-page"> | ||
<div class="left-details"> | ||
<div class="copyright"> | ||
Copyright © 2023, nerfstudio team | ||
</div> | ||
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s | ||
|
||
<a href="https://github.com/pradyunsg/furo">Furo</a> | ||
|
||
</div> | ||
<div class="right-details"> | ||
|
||
</div> | ||
</div> | ||
|
||
</footer> | ||
</div> | ||
<aside class="toc-drawer"> | ||
|
||
|
||
<div class="toc-sticky toc-scroll"> | ||
<div class="toc-title-container"> | ||
<span class="toc-title"> | ||
On this page | ||
</span> | ||
</div> | ||
<div class="toc-tree-container"> | ||
<div class="toc-tree"> | ||
<ul> | ||
<li><a class="reference internal" href="#">gsplat</a><ul> | ||
<li><a class="reference internal" href="#overview">Overview</a></li> | ||
<li><a class="reference internal" href="#contributing">Contributing</a></li> | ||
<li><a class="reference internal" href="#links">Links</a><ul> | ||
</ul> | ||
</li> | ||
<li><a class="reference internal" href="#citations">Citations</a></li> | ||
</ul> | ||
</li> | ||
</ul> | ||
|
||
</div> | ||
</div> | ||
</div> | ||
|
||
|
||
</aside> | ||
</div> | ||
</div><script src="_static/documentation_options.js?v=92734c54"></script> | ||
<script src="_static/doctools.js?v=888ff710"></script> | ||
<script src="_static/sphinx_highlight.js?v=dc90522c"></script> | ||
<script src="_static/scripts/furo.js?v=32e29ea5"></script> | ||
</body> | ||
</html> |
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,263 @@ | ||
<!doctype html> | ||
<html class="no-js" lang="en" data-content_root="./"> | ||
<head><meta charset="utf-8"/> | ||
<meta name="viewport" content="width=device-width,initial-scale=1"/> | ||
<meta name="color-scheme" content="light dark"><link rel="index" title="Index" href="genindex.html" /><link rel="search" title="Search" href="#" /> | ||
|
||
<!-- Generated with Sphinx 7.2.6 and Furo 2023.09.10 --><title>Search - gsplat 0.1.2 documentation</title><link rel="stylesheet" type="text/css" href="_static/pygments.css?v=a746c00c" /> | ||
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=135e06be" /> | ||
<link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=36a5483c" /> | ||
|
||
|
||
|
||
|
||
<style> | ||
body { | ||
--color-code-background: #f8f8f8; | ||
--color-code-foreground: black; | ||
|
||
} | ||
@media not print { | ||
body[data-theme="dark"] { | ||
--color-code-background: #202020; | ||
--color-code-foreground: #d0d0d0; | ||
|
||
} | ||
@media (prefers-color-scheme: dark) { | ||
body:not([data-theme="light"]) { | ||
--color-code-background: #202020; | ||
--color-code-foreground: #d0d0d0; | ||
|
||
} | ||
} | ||
} | ||
</style></head> | ||
<body> | ||
|
||
<script> | ||
document.body.dataset.theme = localStorage.getItem("theme") || "auto"; | ||
</script> | ||
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> | ||
<symbol id="svg-toc" viewBox="0 0 24 24"> | ||
<title>Contents</title> | ||
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024"> | ||
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-menu" viewBox="0 0 24 24"> | ||
<title>Menu</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu"> | ||
<line x1="3" y1="12" x2="21" y2="12"></line> | ||
<line x1="3" y1="6" x2="21" y2="6"></line> | ||
<line x1="3" y1="18" x2="21" y2="18"></line> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-arrow-right" viewBox="0 0 24 24"> | ||
<title>Expand</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right"> | ||
<polyline points="9 18 15 12 9 6"></polyline> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-sun" viewBox="0 0 24 24"> | ||
<title>Light mode</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="feather-sun"> | ||
<circle cx="12" cy="12" r="5"></circle> | ||
<line x1="12" y1="1" x2="12" y2="3"></line> | ||
<line x1="12" y1="21" x2="12" y2="23"></line> | ||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line> | ||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line> | ||
<line x1="1" y1="12" x2="3" y2="12"></line> | ||
<line x1="21" y1="12" x2="23" y2="12"></line> | ||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line> | ||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-moon" viewBox="0 0 24 24"> | ||
<title>Dark mode</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon"> | ||
<path stroke="none" d="M0 0h24v24H0z" fill="none" /> | ||
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" /> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-sun-half" viewBox="0 0 24 24"> | ||
<title>Auto light/dark mode</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-shadow"> | ||
<path stroke="none" d="M0 0h24v24H0z" fill="none"/> | ||
<circle cx="12" cy="12" r="9" /> | ||
<path d="M13 12h5" /> | ||
<path d="M13 15h4" /> | ||
<path d="M13 18h1" /> | ||
<path d="M13 9h4" /> | ||
<path d="M13 6h1" /> | ||
</svg> | ||
</symbol> | ||
</svg> | ||
|
||
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation"> | ||
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc"> | ||
<label class="overlay sidebar-overlay" for="__navigation"> | ||
<div class="visually-hidden">Hide navigation sidebar</div> | ||
</label> | ||
<label class="overlay toc-overlay" for="__toc"> | ||
<div class="visually-hidden">Hide table of contents sidebar</div> | ||
</label> | ||
|
||
|
||
|
||
<div class="page"> | ||
<header class="mobile-header"> | ||
<div class="header-left"> | ||
<label class="nav-overlay-icon" for="__navigation"> | ||
<div class="visually-hidden">Toggle site navigation sidebar</div> | ||
<i class="icon"><svg><use href="#svg-menu"></use></svg></i> | ||
</label> | ||
</div> | ||
<div class="header-center"> | ||
<a href="index.html"><div class="brand">gsplat 0.1.2 documentation</div></a> | ||
</div> | ||
<div class="header-right"> | ||
<div class="theme-toggle-container theme-toggle-header"> | ||
<button class="theme-toggle"> | ||
<div class="visually-hidden">Toggle Light / Dark / Auto color theme</div> | ||
<svg class="theme-icon-when-auto"><use href="#svg-sun-half"></use></svg> | ||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg> | ||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg> | ||
</button> | ||
</div> | ||
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc"> | ||
<div class="visually-hidden">Toggle table of contents sidebar</div> | ||
<i class="icon"><svg><use href="#svg-toc"></use></svg></i> | ||
</label> | ||
</div> | ||
</header> | ||
<aside class="sidebar-drawer"> | ||
<div class="sidebar-container"> | ||
|
||
<div class="sidebar-sticky"><a class="sidebar-brand" href="index.html"> | ||
|
||
<span class="sidebar-brand-text">gsplat 0.1.2 documentation</span> | ||
</a> | ||
|
||
<div style="text-align: center"> | ||
<script async defer src="https://buttons.github.io/buttons.js"></script> | ||
<a class="github-button" href="https://github.com/nerfstudio-project/gsplat" | ||
data-color-scheme="no-preference: light; light: light; dark: light;" data-size="large" data-show-count="true" | ||
aria-label="Download buttons/github-buttons on GitHub"> | ||
Github | ||
</a> | ||
</div><form class="sidebar-search-container" method="get" action="#" role="search"> | ||
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search"> | ||
<input type="hidden" name="check_keywords" value="yes"> | ||
<input type="hidden" name="area" value="default"> | ||
</form> | ||
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree"> | ||
<p class="caption" role="heading"><span class="caption-text">Examples</span></p> | ||
<ul> | ||
<li class="toctree-l1"><a class="reference internal" href="examples/simple_trainer.html">Simple Trainer</a></li> | ||
</ul> | ||
<p class="caption" role="heading"><span class="caption-text">Conventions</span></p> | ||
<ul> | ||
<li class="toctree-l1"><a class="reference internal" href="conventions/cuda_conventions.html">CUDA Conventions</a></li> | ||
<li class="toctree-l1"><a class="reference internal" href="conventions/data_conventions.html">Data Conventions</a></li> | ||
</ul> | ||
<p class="caption" role="heading"><span class="caption-text">Python API</span></p> | ||
<ul> | ||
<li class="toctree-l1"><a class="reference internal" href="apis/proj.html">ProjectGaussians</a></li> | ||
<li class="toctree-l1"><a class="reference internal" href="apis/rast.html">RasterizeGaussians</a></li> | ||
<li class="toctree-l1"><a class="reference internal" href="apis/utils.html">Utils</a></li> | ||
</ul> | ||
<p class="caption" role="heading"><span class="caption-text">Tests</span></p> | ||
<ul> | ||
<li class="toctree-l1"><a class="reference internal" href="tests/tests.html">Tests</a></li> | ||
</ul> | ||
|
||
</div> | ||
</div> | ||
|
||
</div> | ||
|
||
</div> | ||
</aside> | ||
<div class="main"> | ||
<div class="content"> | ||
<div class="article-container"> | ||
<a href="#" class="back-to-top muted-link"> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> | ||
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path> | ||
</svg> | ||
<span>Back to top</span> | ||
</a> | ||
<div class="content-icon-container"> | ||
<div class="theme-toggle-container theme-toggle-content"> | ||
<button class="theme-toggle"> | ||
<div class="visually-hidden">Toggle Light / Dark / Auto color theme</div> | ||
<svg class="theme-icon-when-auto"><use href="#svg-sun-half"></use></svg> | ||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg> | ||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg> | ||
</button> | ||
</div> | ||
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc"> | ||
<div class="visually-hidden">Toggle table of contents sidebar</div> | ||
<i class="icon"><svg><use href="#svg-toc"></use></svg></i> | ||
</label> | ||
</div> | ||
<article role="main"> | ||
|
||
<noscript> | ||
<div class="admonition error"> | ||
<p class="admonition-title">Error</p> | ||
<p> | ||
Please activate JavaScript to enable the search functionality. | ||
</p> | ||
</div> | ||
</noscript> | ||
|
||
<div id="search-results"></div> | ||
|
||
</article> | ||
</div> | ||
<footer> | ||
|
||
<div class="related-pages"> | ||
|
||
|
||
</div> | ||
<div class="bottom-of-page"> | ||
<div class="left-details"> | ||
<div class="copyright"> | ||
Copyright © 2023, nerfstudio team | ||
</div> | ||
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s | ||
|
||
<a href="https://github.com/pradyunsg/furo">Furo</a> | ||
|
||
</div> | ||
<div class="right-details"> | ||
|
||
</div> | ||
</div> | ||
|
||
</footer> | ||
</div> | ||
<aside class="toc-drawer no-toc"> | ||
|
||
|
||
|
||
</aside> | ||
</div> | ||
</div><script src="_static/documentation_options.js?v=92734c54"></script> | ||
<script src="_static/doctools.js?v=888ff710"></script> | ||
<script src="_static/sphinx_highlight.js?v=dc90522c"></script> | ||
<script src="_static/scripts/furo.js?v=32e29ea5"></script> | ||
|
||
<script src="_static/searchtools.js"></script> | ||
<script src="_static/language_data.js"></script> | ||
<script src="searchindex.js"></script></body> | ||
</html> |
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,303 @@ | ||
<!doctype html> | ||
<html class="no-js" lang="en" data-content_root="../"> | ||
<head><meta charset="utf-8"/> | ||
<meta name="viewport" content="width=device-width,initial-scale=1"/> | ||
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" /> | ||
<link rel="index" title="Index" href="../genindex.html" /><link rel="search" title="Search" href="../search.html" /><link rel="prev" title="Utils" href="../apis/utils.html" /> | ||
|
||
<!-- Generated with Sphinx 7.2.6 and Furo 2023.09.10 --> | ||
<title>Tests - gsplat 0.1.2 documentation</title> | ||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=a746c00c" /> | ||
<link rel="stylesheet" type="text/css" href="../_static/styles/furo.css?v=135e06be" /> | ||
<link rel="stylesheet" type="text/css" href="../_static/styles/furo-extensions.css?v=36a5483c" /> | ||
|
||
|
||
|
||
|
||
<style> | ||
body { | ||
--color-code-background: #f8f8f8; | ||
--color-code-foreground: black; | ||
|
||
} | ||
@media not print { | ||
body[data-theme="dark"] { | ||
--color-code-background: #202020; | ||
--color-code-foreground: #d0d0d0; | ||
|
||
} | ||
@media (prefers-color-scheme: dark) { | ||
body:not([data-theme="light"]) { | ||
--color-code-background: #202020; | ||
--color-code-foreground: #d0d0d0; | ||
|
||
} | ||
} | ||
} | ||
</style></head> | ||
<body> | ||
|
||
<script> | ||
document.body.dataset.theme = localStorage.getItem("theme") || "auto"; | ||
</script> | ||
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> | ||
<symbol id="svg-toc" viewBox="0 0 24 24"> | ||
<title>Contents</title> | ||
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024"> | ||
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-menu" viewBox="0 0 24 24"> | ||
<title>Menu</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu"> | ||
<line x1="3" y1="12" x2="21" y2="12"></line> | ||
<line x1="3" y1="6" x2="21" y2="6"></line> | ||
<line x1="3" y1="18" x2="21" y2="18"></line> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-arrow-right" viewBox="0 0 24 24"> | ||
<title>Expand</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right"> | ||
<polyline points="9 18 15 12 9 6"></polyline> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-sun" viewBox="0 0 24 24"> | ||
<title>Light mode</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="feather-sun"> | ||
<circle cx="12" cy="12" r="5"></circle> | ||
<line x1="12" y1="1" x2="12" y2="3"></line> | ||
<line x1="12" y1="21" x2="12" y2="23"></line> | ||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line> | ||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line> | ||
<line x1="1" y1="12" x2="3" y2="12"></line> | ||
<line x1="21" y1="12" x2="23" y2="12"></line> | ||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line> | ||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-moon" viewBox="0 0 24 24"> | ||
<title>Dark mode</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon"> | ||
<path stroke="none" d="M0 0h24v24H0z" fill="none" /> | ||
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" /> | ||
</svg> | ||
</symbol> | ||
<symbol id="svg-sun-half" viewBox="0 0 24 24"> | ||
<title>Auto light/dark mode</title> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" | ||
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-shadow"> | ||
<path stroke="none" d="M0 0h24v24H0z" fill="none"/> | ||
<circle cx="12" cy="12" r="9" /> | ||
<path d="M13 12h5" /> | ||
<path d="M13 15h4" /> | ||
<path d="M13 18h1" /> | ||
<path d="M13 9h4" /> | ||
<path d="M13 6h1" /> | ||
</svg> | ||
</symbol> | ||
</svg> | ||
|
||
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation"> | ||
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc"> | ||
<label class="overlay sidebar-overlay" for="__navigation"> | ||
<div class="visually-hidden">Hide navigation sidebar</div> | ||
</label> | ||
<label class="overlay toc-overlay" for="__toc"> | ||
<div class="visually-hidden">Hide table of contents sidebar</div> | ||
</label> | ||
|
||
|
||
|
||
<div class="page"> | ||
<header class="mobile-header"> | ||
<div class="header-left"> | ||
<label class="nav-overlay-icon" for="__navigation"> | ||
<div class="visually-hidden">Toggle site navigation sidebar</div> | ||
<i class="icon"><svg><use href="#svg-menu"></use></svg></i> | ||
</label> | ||
</div> | ||
<div class="header-center"> | ||
<a href="../index.html"><div class="brand">gsplat 0.1.2 documentation</div></a> | ||
</div> | ||
<div class="header-right"> | ||
<div class="theme-toggle-container theme-toggle-header"> | ||
<button class="theme-toggle"> | ||
<div class="visually-hidden">Toggle Light / Dark / Auto color theme</div> | ||
<svg class="theme-icon-when-auto"><use href="#svg-sun-half"></use></svg> | ||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg> | ||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg> | ||
</button> | ||
</div> | ||
<label class="toc-overlay-icon toc-header-icon" for="__toc"> | ||
<div class="visually-hidden">Toggle table of contents sidebar</div> | ||
<i class="icon"><svg><use href="#svg-toc"></use></svg></i> | ||
</label> | ||
</div> | ||
</header> | ||
<aside class="sidebar-drawer"> | ||
<div class="sidebar-container"> | ||
|
||
<div class="sidebar-sticky"><a class="sidebar-brand" href="../index.html"> | ||
|
||
<span class="sidebar-brand-text">gsplat 0.1.2 documentation</span> | ||
</a> | ||
|
||
<div style="text-align: center"> | ||
<script async defer src="https://buttons.github.io/buttons.js"></script> | ||
<a class="github-button" href="https://github.com/nerfstudio-project/gsplat" | ||
data-color-scheme="no-preference: light; light: light; dark: light;" data-size="large" data-show-count="true" | ||
aria-label="Download buttons/github-buttons on GitHub"> | ||
Github | ||
</a> | ||
</div><form class="sidebar-search-container" method="get" action="../search.html" role="search"> | ||
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search"> | ||
<input type="hidden" name="check_keywords" value="yes"> | ||
<input type="hidden" name="area" value="default"> | ||
</form> | ||
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree"> | ||
<p class="caption" role="heading"><span class="caption-text">Examples</span></p> | ||
<ul> | ||
<li class="toctree-l1"><a class="reference internal" href="../examples/simple_trainer.html">Simple Trainer</a></li> | ||
</ul> | ||
<p class="caption" role="heading"><span class="caption-text">Conventions</span></p> | ||
<ul> | ||
<li class="toctree-l1"><a class="reference internal" href="../conventions/cuda_conventions.html">CUDA Conventions</a></li> | ||
<li class="toctree-l1"><a class="reference internal" href="../conventions/data_conventions.html">Data Conventions</a></li> | ||
</ul> | ||
<p class="caption" role="heading"><span class="caption-text">Python API</span></p> | ||
<ul> | ||
<li class="toctree-l1"><a class="reference internal" href="../apis/proj.html">ProjectGaussians</a></li> | ||
<li class="toctree-l1"><a class="reference internal" href="../apis/rast.html">RasterizeGaussians</a></li> | ||
<li class="toctree-l1"><a class="reference internal" href="../apis/utils.html">Utils</a></li> | ||
</ul> | ||
<p class="caption" role="heading"><span class="caption-text">Tests</span></p> | ||
<ul class="current"> | ||
<li class="toctree-l1 current current-page"><a class="current reference internal" href="#">Tests</a></li> | ||
</ul> | ||
|
||
</div> | ||
</div> | ||
|
||
</div> | ||
|
||
</div> | ||
</aside> | ||
<div class="main"> | ||
<div class="content"> | ||
<div class="article-container"> | ||
<a href="#" class="back-to-top muted-link"> | ||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> | ||
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path> | ||
</svg> | ||
<span>Back to top</span> | ||
</a> | ||
<div class="content-icon-container"> | ||
|
||
<div class="theme-toggle-container theme-toggle-content"> | ||
<button class="theme-toggle"> | ||
<div class="visually-hidden">Toggle Light / Dark / Auto color theme</div> | ||
<svg class="theme-icon-when-auto"><use href="#svg-sun-half"></use></svg> | ||
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg> | ||
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg> | ||
</button> | ||
</div> | ||
<label class="toc-overlay-icon toc-content-icon" for="__toc"> | ||
<div class="visually-hidden">Toggle table of contents sidebar</div> | ||
<i class="icon"><svg><use href="#svg-toc"></use></svg></i> | ||
</label> | ||
</div> | ||
<article role="main"> | ||
<section id="tests"> | ||
<h1>Tests<a class="headerlink" href="#tests" title="Link to this heading">#</a></h1> | ||
<section id="testing-and-verifying-cuda-implementations"> | ||
<h2>Testing and verifying CUDA implementations<a class="headerlink" href="#testing-and-verifying-cuda-implementations" title="Link to this heading">#</a></h2> | ||
<p>The <cite>tests/</cite> folder provides automatic test scripts that are ran to verify that the CUDA implementations agree with native PyTorch ones. | ||
They are also ran with any pull-requests into main branch on our github repository.</p> | ||
<p>The tests include:</p> | ||
<div class="literal-block-wrapper docutils container" id="id1"> | ||
<div class="code-block-caption"><span class="caption-text">tests/</span><a class="headerlink" href="#id1" title="Link to this code">#</a></div> | ||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>./test_cov2d_bounds.py | ||
./test_cumulative_intersects.py | ||
./test_get_tile_bin_edges.py | ||
./test_map_gaussians.py | ||
./test_project_gaussians | ||
./test_rasterize_forward_kernel.py | ||
./test_sh.py | ||
</pre></div> | ||
</div> | ||
</div> | ||
</section> | ||
</section> | ||
|
||
</article> | ||
</div> | ||
<footer> | ||
|
||
<div class="related-pages"> | ||
|
||
<a class="prev-page" href="../apis/utils.html"> | ||
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg> | ||
<div class="page-info"> | ||
<div class="context"> | ||
<span>Previous</span> | ||
</div> | ||
|
||
<div class="title">Utils</div> | ||
|
||
</div> | ||
</a> | ||
</div> | ||
<div class="bottom-of-page"> | ||
<div class="left-details"> | ||
<div class="copyright"> | ||
Copyright © 2023, nerfstudio team | ||
</div> | ||
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s | ||
|
||
<a href="https://github.com/pradyunsg/furo">Furo</a> | ||
|
||
</div> | ||
<div class="right-details"> | ||
|
||
</div> | ||
</div> | ||
|
||
</footer> | ||
</div> | ||
<aside class="toc-drawer"> | ||
|
||
|
||
<div class="toc-sticky toc-scroll"> | ||
<div class="toc-title-container"> | ||
<span class="toc-title"> | ||
On this page | ||
</span> | ||
</div> | ||
<div class="toc-tree-container"> | ||
<div class="toc-tree"> | ||
<ul> | ||
<li><a class="reference internal" href="#">Tests</a><ul> | ||
<li><a class="reference internal" href="#testing-and-verifying-cuda-implementations">Testing and verifying CUDA implementations</a></li> | ||
</ul> | ||
</li> | ||
</ul> | ||
|
||
</div> | ||
</div> | ||
</div> | ||
|
||
|
||
</aside> | ||
</div> | ||
</div><script src="../_static/documentation_options.js?v=92734c54"></script> | ||
<script src="../_static/doctools.js?v=888ff710"></script> | ||
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script> | ||
<script src="../_static/scripts/furo.js?v=32e29ea5"></script> | ||
</body> | ||
</html> |