Showing preview only (1,044K chars total). Download the full file or copy to clipboard to get everything.
Repository: theialab/radfoam
Branch: main
Commit: 3e7b52cf74e3
Files: 73
Total size: 1007.7 KB
Directory structure:
gitextract_8j_wb4v1/
├── .clang-format
├── .gitignore
├── .gitmodules
├── CMakeLists.txt
├── LICENSE
├── README.md
├── benchmark.py
├── configs/
│ ├── __init__.py
│ ├── db.yaml
│ ├── mipnerf360_indoor.yaml
│ └── mipnerf360_outdoor.yaml
├── data_loader/
│ ├── __init__.py
│ ├── blender.py
│ └── colmap.py
├── external/
│ ├── CMakeLists.txt
│ ├── gl3w/
│ │ └── gl3w.c
│ └── include/
│ ├── GL/
│ │ ├── gl3w.h
│ │ └── glcorearb.h
│ └── KHR/
│ └── khrplatform.h
├── prepare_colmap_data.py
├── pyproject.toml
├── radfoam_model/
│ ├── __init__.py
│ ├── render.py
│ ├── scene.py
│ └── utils.py
├── requirements.txt
├── scripts/
│ ├── cmake_clean.sh
│ └── torch_info.py
├── setup.cfg
├── setup.py
├── src/
│ ├── CMakeLists.txt
│ ├── aabb_tree/
│ │ ├── aabb_tree.cu
│ │ ├── aabb_tree.cuh
│ │ └── aabb_tree.h
│ ├── delaunay/
│ │ ├── delaunay.cu
│ │ ├── delaunay.cuh
│ │ ├── delaunay.h
│ │ ├── delete_violations.cu
│ │ ├── exact_tree_ops.cuh
│ │ ├── growth_iteration.cu
│ │ ├── predicate.cuh
│ │ ├── sample_initial_tets.cu
│ │ ├── shewchuk.cuh
│ │ ├── sorted_map.cuh
│ │ ├── triangulation_ops.cu
│ │ └── triangulation_ops.h
│ ├── tracing/
│ │ ├── camera.h
│ │ ├── pipeline.cu
│ │ ├── pipeline.h
│ │ ├── sh_utils.cuh
│ │ └── tracing_utils.cuh
│ ├── utils/
│ │ ├── batch_fetcher.cpp
│ │ ├── batch_fetcher.h
│ │ ├── common_kernels.cuh
│ │ ├── cuda_array.h
│ │ ├── cuda_helpers.h
│ │ ├── geometry.h
│ │ ├── random.h
│ │ ├── typing.h
│ │ └── unenumerate_iterator.cuh
│ └── viewer/
│ ├── viewer.cpp
│ └── viewer.h
├── test.py
├── torch_bindings/
│ ├── CMakeLists.txt
│ ├── bindings.h
│ ├── pipeline_bindings.cpp
│ ├── pipeline_bindings.h
│ ├── radfoam/
│ │ └── __init__.py.in
│ ├── torch_bindings.cpp
│ ├── triangulation_bindings.cpp
│ └── triangulation_bindings.h
├── train.py
└── viewer.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .clang-format
================================================
BasedOnStyle: LLVM
UseTab: Never
TabWidth: 4
IndentWidth: 4
ColumnLimit: 80
AlwaysBreakTemplateDeclarations: Yes
BinPackArguments: false
BinPackParameters: false
================================================
FILE: .gitignore
================================================
.vscode
/build*/
/dist/
/data
/radfoam/
/*output*
*.egg-info
__pycache__
/*nsight
*.mp4b
*ipynb
================================================
FILE: .gitmodules
================================================
[submodule "external/submodules/glfw"]
path = external/submodules/glfw
url = https://github.com/glfw/glfw
[submodule "external/submodules/eigen"]
path = external/submodules/eigen
url = https://gitlab.com/libeigen/eigen.git
[submodule "external/submodules/imgui"]
path = external/submodules/imgui
url = https://github.com/ocornut/imgui
[submodule "external/submodules/atomic_queue"]
path = external/submodules/atomic_queue
url = https://github.com/max0x7ba/atomic_queue
[submodule "external/submodules/mesa"]
path = external/submodules/mesa
url = https://gitlab.freedesktop.org/mesa/mesa.git
[submodule "external/submodules/tbb"]
path = external/submodules/tbb
url = https://github.com/uxlfoundation/oneTBB
================================================
FILE: CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.27)
project(RadFoam VERSION 1.0.0)
cmake_policy(SET CMP0060 NEW)
enable_language(CUDA)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CUDA_STANDARD 17)
set(CMAKE_C_EXTENSIONS OFF)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(GPU_DEBUG
ON
CACHE BOOL "Enable GPU debug features")
add_definitions(-DGPU_DEBUG=$<BOOL:${GPU_DEBUG}>)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE
"Release"
CACHE STRING "Build type")
endif()
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
list(APPEND CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/external"
"${CMAKE_SOURCE_DIR}/external/submodules")
find_package(
Python3
COMPONENTS Interpreter Development.Module
REQUIRED)
find_package(pybind11 REQUIRED)
if(NOT Torch_DIR)
set(Torch_DIR ${Python3_SITELIB}/torch/share/cmake/Torch)
endif()
find_package(Torch REQUIRED)
find_library(TORCH_PYTHON_LIBRARY torch_python PATH
"${TORCH_INSTALL_PREFIX}/lib")
add_subdirectory(external)
include_directories(${RADFOAM_EXTERNAL_INCLUDES})
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX
"${CMAKE_SOURCE_DIR}/radfoam"
CACHE PATH "..." FORCE)
endif()
set(RADFOAM_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
add_subdirectory(src)
add_subdirectory(torch_bindings)
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2025 The Radiant Foam Authors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: README.md
================================================
# Radiant Foam: Real-Time Differentiable Ray Tracing

## Shrisudhan Govindarajan, Daniel Rebain, Kwang Moo Yi, Andrea Tagliasacchi
This repository contains the official implementation of [Radiant Foam: Real-Time Differentiable Ray Tracing](https://radfoam.github.io).
The code includes scripts for training and evaluation, as well as a real-time viewer that can be used to visualize trained models, or optionally to observe the progression of models as they train. Everything in this repository is non-final and subject to change as the project is still being actively developed. **We encourage anyone citing our results to do as RadFoam (vx), where x is the version specified for those metrics in the paper or tagged to a commit on GitHub.** This should hopefully reduce confusion.
Warning: this is an organic, free-range research codebase, and should be treated with the appropriate care when integrating it into any other software.
## Known issues
- GPU memory usage can be high for scenes with many points. You may need to reduce the `final_points` setting to train outdoor scenes on a 24GB GPU. This will hopefully be improved the future.
- Best PSNR is acheived with the default softplus density activation, but also it causes an increase in volumetric artifacts. Using exponential activation may result in qualitatively better renders. We are planning to add configuration options for this.
- The Delaunay triangulation is not perfectly robust, and relies on random perturbation of points and iterative retries to attempt to recover from failures. Training may stall for long periods when this occurs.
## Getting started
Start by cloning the repository and submodules:
git clone --recursive https://github.com/theialab/radfoam
You will need a Linux environment with Python 3.10 or newer, as well as version 12.x of the [CUDA Toolkit](https://developer.nvidia.com/cuda-downloads) and a CUDA-compatible GPU of Compute Capability 7.0 or higher. Please ensure that your installation method for CUDA places `nvcc` in your `PATH`. The following instructions were tested with Ubuntu 24.04.
After installing the CUDA Toolkit and initializing your python virtual environment, install PyTorch 2.3 or newer. For example, with CUDA 12.1:
pip install torch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 --index-url https://download.pytorch.org/whl/cu121
From here, there are two options:
### Option 1: build with `pip install`
Choose this option if you want to run the code as-is, and do not need to make modifications to the CUDA/C++ code.
Simply run `pip install .` in the repository root. This will build the CUDA kernels and install them along with the python bindings into your python environment. This may take some time to complete, but once finished, you should be able to run the code without further setup.
Optionally if you want to install with the frozen version of required packages, you can do so by running `pip install -r requirements.txt` before running `pip install .`
### Option 2: build with CMake
Choose this option if you intend to modify the CUDA/C++ code. Using CMake directly will allow you to quickly recompile the kernels as needed.
First install the Python dependencies:
pip install -r requirements.txt
Then, create a `build` directory in the repository root and run the following commands from it to initialize CMake and build the bindings library:
cmake ..
make install
This will install to a local `radfoam` directory in the repository root. Recompilation can be performed by re-running `make install` in the build directory.
### Training
Place the [Mip-NeRF 360](https://jonbarron.info/mipnerf360) and [Deep Blending](https://github.com/Phog/DeepBlending) datasets in `data/mipnerf360` and `data/db`.
Training can then be launched with:
python train.py -c configs/<config_file>.yaml
Where `<config_file>` is either one of the supplied files in the `configs` directory or your own.
You can optionally include the `--viewer` flag to train interactively, or use the `viewer.py` script to view saved checkpoints.
### Evaluation
The standard test metrics can be computed with:
python test.py -c outputs/<checkpoint_directory>/config.yaml
Rendering speed can be computed with:
python benchmark.py -c outputs/<checkpoint_directory>/config.yaml
### Checkpoints
You can find trained checkpoints, as well as COLMAP output for some scenes [here](https://drive.google.com/drive/folders/1o8ulZORogwjrfsz3E-QY3f-oPjVFrEVI?usp=drive_link).
## BibTeX
@article{govindarajan2025radfoam,
author = {Govindarajan, Shrisudhan and Rebain, Daniel and Yi, Kwang Moo and Tagliasacchi, Andrea},
title = {Radiant Foam: Real-Time Differentiable Ray Tracing},
journal = {arXiv:2502.01157},
year = {2025},
}
================================================
FILE: benchmark.py
================================================
import os
import numpy as np
from PIL import Image
import configargparse
import warnings
warnings.filterwarnings("ignore")
import torch
from data_loader import DataHandler
from configs import *
from radfoam_model.scene import RadFoamScene
import radfoam
seed = 42
torch.random.manual_seed(seed)
np.random.seed(seed)
def benchmark(args, pipeline_args, model_args, optimizer_args, dataset_args):
checkpoint = args.config.replace("/config.yaml", "")
os.makedirs(os.path.join(checkpoint, "test"), exist_ok=True)
device = torch.device(args.device)
test_data_handler = DataHandler(
dataset_args, rays_per_batch=0, device=device
)
test_data_handler.reload(
split="test", downsample=min(dataset_args.downsample)
)
# Setting up model
model = RadFoamScene(
args=model_args, device=device, attr_dtype=torch.float16
)
model.load_pt(f"{checkpoint}/model.pt")
points, attributes, point_adjacency, point_adjacency_offsets = (
model.get_trace_data()
)
self_point_inds = torch.zeros_like(point_adjacency.long())
scatter_inds = point_adjacency_offsets[1:-1].long()
self_point_inds.scatter_add_(0, scatter_inds, torch.ones_like(scatter_inds))
self_point_inds = torch.cumsum(self_point_inds, dim=0)
self_points = points[self_point_inds]
adjacent_points = points[point_adjacency.long()]
adjacent_offsets = adjacent_points - self_points
adjacent_offsets = torch.cat(
[adjacent_offsets, torch.zeros_like(adjacent_offsets[:, :1])], dim=1
).to(torch.half)
c2w = test_data_handler.c2ws
width, height = test_data_handler.img_wh
fy = test_data_handler.fy
cameras = []
positions = []
for i in range(c2w.shape[0]):
if i % 8 == 0:
position = c2w[i, :3, 3].contiguous()
fov = float(2 * np.arctan(height / (2 * fy)))
right = c2w[i, :3, 0].contiguous()
up = -c2w[i, :3, 1].contiguous()
forward = c2w[i, :3, 2].contiguous()
positions.append(position)
camera = {
"position": position,
"forward": forward,
"right": right,
"up": up,
"fov": fov,
"width": width,
"height": height,
"model": "pinhole",
}
cameras.append(camera)
n_frames = len(cameras)
positions = torch.stack(positions, dim=0).to(device)
start_points = radfoam.nn(points, model.aabb_tree, positions)
output = torch.zeros(
(n_frames, height, width), dtype=torch.uint32, device=device
)
torch.cuda.synchronize()
# warmup
for i in range(n_frames):
model.pipeline.trace_benchmark(
points,
attributes,
point_adjacency,
point_adjacency_offsets,
adjacent_offsets,
cameras[i],
start_points[i],
output[i],
weight_threshold=0.05,
)
torch.cuda.synchronize()
n_reps = 5
start_event = torch.cuda.Event(enable_timing=True)
start_event.record()
for _ in range(n_reps):
for i in range(n_frames):
model.pipeline.trace_benchmark(
points,
attributes,
point_adjacency,
point_adjacency_offsets,
adjacent_offsets,
cameras[i],
start_points[i],
output[i],
weight_threshold=0.05,
)
end_event = torch.cuda.Event(enable_timing=True)
end_event.record()
torch.cuda.synchronize()
total_time = start_event.elapsed_time(end_event)
framerate = n_reps * n_frames / (total_time / 1000.0)
print(f"Total time: {total_time} ms")
print(f"FPS: {framerate}")
def main():
parser = configargparse.ArgParser()
model_params = ModelParams(parser)
dataset_params = DatasetParams(parser)
pipeline_params = PipelineParams(parser)
optimization_params = OptimizationParams(parser)
# Add argument to specify a custom config file
parser.add_argument(
"-c", "--config", is_config_file=True, help="Path to config file"
)
# Parse arguments
args = parser.parse_args()
benchmark(
args,
pipeline_params.extract(args),
model_params.extract(args),
optimization_params.extract(args),
dataset_params.extract(args),
)
if __name__ == "__main__":
main()
================================================
FILE: configs/__init__.py
================================================
import configargparse
import os
from argparse import Namespace
class GroupParams:
pass
class ParamGroup:
def __init__(
self, parser: configargparse.ArgParser, name: str, fill_none=False
):
group = parser.add_argument_group(name)
for key, value in vars(self).items():
t = type(value)
value = value if not fill_none else None
if t == bool:
group.add_argument(
"--" + key, default=value, action="store_true"
)
elif t == list:
group.add_argument(
"--" + key,
nargs="+",
type=type(value[0]),
default=value,
help=f"List of {type(value[0]).__name__}",
)
else:
group.add_argument("--" + key, default=value, type=t)
def extract(self, args):
group = GroupParams()
for arg in vars(args).items():
if arg[0] in vars(self):
setattr(group, arg[0], arg[1])
return group
class PipelineParams(ParamGroup):
def __init__(self, parser):
self.iterations = 20_000
self.densify_from = 2_000
self.densify_until = 11_000
self.densify_factor = 1.15
self.white_background = True
self.quantile_weight = 1e-4
self.experiment_name = ""
self.debug = False
self.viewer = False
super().__init__(parser, "Setting Pipeline parameters")
class ModelParams(ParamGroup):
def __init__(self, parser):
self.sh_degree = 3
self.init_points = 131_072
self.final_points = 2_097_152
self.activation_scale = 1.0
self.device = "cuda"
super().__init__(parser, "Setting Model parameters")
class OptimizationParams(ParamGroup):
def __init__(self, parser):
self.points_lr_init = 2e-4
self.points_lr_final = 5e-6
self.density_lr_init = 1e-1
self.density_lr_final = 1e-2
self.attributes_lr_init = 5e-3
self.attributes_lr_final = 5e-4
self.sh_factor = 0.1
self.freeze_points = 18_000
super().__init__(parser, "Setting Optimization parameters")
class DatasetParams(ParamGroup):
def __init__(self, parser):
self.dataset = "colmap"
self.data_path = "data/mipnerf360"
self.scene = "bonsai"
self.patch_based = False
self.downsample = [4, 2, 1]
self.downsample_iterations = [0, 150, 500]
super().__init__(parser, "Setting Dataset parameters")
================================================
FILE: configs/db.yaml
================================================
# Model Parameters
sh_degree: 3
init_points: 131_072
final_points: 3_145_728
activation_scale: 1
device: cuda
# Pipeline Parameters
iterations: 20_000
densify_from: 2_000
densify_until: 11_000
densify_factor: 1.15
white_background: true
quantile_weight: 0
viewer: false # Flag to use viewer
debug: false # Flag to not use tensorboard
# Optimization Parameters
points_lr_init: 2e-4
points_lr_final: 5e-6
density_lr_init: 1e-1
density_lr_final: 1e-2
attributes_lr_init: 5e-3
attributes_lr_final: 5e-4
sh_factor: 0.01
freeze_points: 18_000 # Points are frozen after this cycle
# Dataset Parameters
dataset: "colmap"
data_path: "data/db"
scene: "playroom"
patch_based: false
downsample: [2, 1] # Image downsample factors
downsample_iterations: [0, 2_000]
================================================
FILE: configs/mipnerf360_indoor.yaml
================================================
# Model Parameters
sh_degree: 3
init_points: 131_072
final_points: 2_097_152
activation_scale: 1
device: cuda
# Pipeline Parameters
iterations: 20_000
densify_from: 2_000
densify_until: 11_000
densify_factor: 1.15
white_background: true
quantile_weight: 1e-4
viewer: false # Flag to use viewer
debug: false # Flag to not use tensorboard
# Optimization Parameters
points_lr_init: 2e-4
points_lr_final: 5e-6
density_lr_init: 1e-1
density_lr_final: 1e-2
attributes_lr_init: 5e-3
attributes_lr_final: 5e-4
sh_factor: 0.1
freeze_points: 18_000 # Points are frozen after this cycle
# Dataset Parameters
dataset: "colmap"
data_path: "data/mipnerf360"
scene: "bonsai"
patch_based: false
downsample: [4, 2] # Image downsample factors
downsample_iterations: [0, 5_000]
================================================
FILE: configs/mipnerf360_outdoor.yaml
================================================
# Model Parameters
sh_degree: 3
init_points: 131_072
final_points: 4_194_304
activation_scale: 1
device: cuda
# Pipeline Parameters
iterations: 20_000
densify_from: 2_000
densify_until: 11_000
densify_factor: 1.15
white_background: true
quantile_weight: 1e-4
viewer: false # Flag to use viewer
debug: false # Flag to not use tensorboard
# Optimization Parameters
points_lr_init: 2e-4
points_lr_final: 5e-6
density_lr_init: 1e-1
density_lr_final: 1e-2
attributes_lr_init: 5e-3
attributes_lr_final: 5e-4
sh_factor: 0.02
freeze_points: 18_000 # Points are frozen after this cycle
# Dataset Parameters
dataset: "colmap"
data_path: "data/mipnerf360"
scene: "garden"
patch_based: false
downsample: [8, 4] # Image downsample factors
downsample_iterations: [0, 5_000]
================================================
FILE: data_loader/__init__.py
================================================
import os
import numpy as np
import einops
import torch
import radfoam
from .colmap import COLMAPDataset
from .blender import BlenderDataset
dataset_dict = {
"colmap": COLMAPDataset,
"blender": BlenderDataset,
}
def get_up(c2ws):
right = c2ws[:, :3, 0]
down = c2ws[:, :3, 1]
forward = c2ws[:, :3, 2]
A = torch.einsum("bi,bj->bij", right, right).sum(dim=0)
A += torch.einsum("bi,bj->bij", forward, forward).sum(dim=0) * 0.02
l, V = torch.linalg.eig(A)
min_idx = torch.argmin(l.real)
global_up = V[:, min_idx].real
global_up *= torch.einsum("bi,i->b", -down, global_up).sum().sign()
return global_up
class DataHandler:
def __init__(self, dataset_args, rays_per_batch, device="cuda"):
self.args = dataset_args
self.rays_per_batch = rays_per_batch
self.device = torch.device(device)
self.img_wh = None
self.patch_size = 8
def reload(self, split, downsample=None):
data_dir = os.path.join(self.args.data_path, self.args.scene)
dataset = dataset_dict[self.args.dataset]
if downsample is not None:
split_dataset = dataset(
data_dir, split=split, downsample=downsample
)
else:
split_dataset = dataset(data_dir, split=split)
self.img_wh = split_dataset.img_wh
self.fx = split_dataset.fx
self.fy = split_dataset.fy
self.c2ws = split_dataset.poses
self.rays, self.rgbs = split_dataset.all_rays, split_dataset.all_rgbs
self.alphas = getattr(
split_dataset, "all_alphas", torch.ones_like(self.rgbs[..., 0:1])
)
self.viewer_up = get_up(self.c2ws)
self.viewer_pos = self.c2ws[0, :3, 3]
self.viewer_forward = self.c2ws[0, :3, 2]
try:
self.points3D = split_dataset.points3D
self.points3D_colors = split_dataset.points3D_color
except:
self.points3D = None
self.points3D_colors = None
if split == "train":
if self.args.patch_based:
dw = self.img_wh[0] - (self.img_wh[0] % self.patch_size)
dh = self.img_wh[1] - (self.img_wh[1] % self.patch_size)
w_inds = np.linspace(0, self.img_wh[0] - 1, dw, dtype=int)
h_inds = np.linspace(0, self.img_wh[1] - 1, dh, dtype=int)
self.train_rays = self.rays[:, h_inds, :, :]
self.train_rays = self.train_rays[:, :, w_inds, :]
self.train_rgbs = self.rgbs[:, h_inds, :, :]
self.train_rgbs = self.train_rgbs[:, :, w_inds, :]
self.train_rays = einops.rearrange(
self.train_rays,
"n (x ph) (y pw) r -> (n x y) ph pw r",
ph=self.patch_size,
pw=self.patch_size,
)
self.train_rgbs = einops.rearrange(
self.train_rgbs,
"n (x ph) (y pw) c -> (n x y) ph pw c",
ph=self.patch_size,
pw=self.patch_size,
)
self.batch_size = self.rays_per_batch // (self.patch_size**2)
else:
self.train_rays = einops.rearrange(
self.rays, "n h w r -> (n h w) r"
)
self.train_rgbs = einops.rearrange(
self.rgbs, "n h w c -> (n h w) c"
)
self.train_alphas = einops.rearrange(
self.alphas, "n h w 1 -> (n h w) 1"
)
self.batch_size = self.rays_per_batch
def get_iter(self):
ray_batch_fetcher = radfoam.BatchFetcher(
self.train_rays, self.batch_size, shuffle=True
)
rgb_batch_fetcher = radfoam.BatchFetcher(
self.train_rgbs, self.batch_size, shuffle=True
)
alpha_batch_fetcher = radfoam.BatchFetcher(
self.train_alphas, self.batch_size, shuffle=True
)
while True:
ray_batch = ray_batch_fetcher.next()
rgb_batch = rgb_batch_fetcher.next()
alpha_batch = alpha_batch_fetcher.next()
yield ray_batch, rgb_batch, alpha_batch
================================================
FILE: data_loader/blender.py
================================================
import os
import numpy as np
from PIL import Image
import torch
from torch.utils.data import Dataset
import json
import math
def get_ray_directions(H, W, focal, center=None):
x = np.arange(W, dtype=np.float32) + 0.5
y = np.arange(H, dtype=np.float32) + 0.5
x, y = np.meshgrid(x, y)
pix_coords = np.stack([x, y], axis=-1).reshape(-1, 2)
i, j = pix_coords[..., 0:1], pix_coords[..., 1:]
cent = center if center is not None else [W / 2, H / 2]
directions = np.concatenate(
[
(i - cent[0]) / focal[0],
(j - cent[1]) / focal[1],
np.ones_like(i),
],
axis=-1,
)
ray_dirs = directions / np.linalg.norm(directions, axis=-1, keepdims=True)
return torch.tensor(ray_dirs, dtype=torch.float32)
class BlenderDataset(Dataset):
def __init__(self, datadir, split="train", downsample=1):
self.root_dir = datadir
self.split = split
self.downsample = downsample
self.blender2opencv = np.array(
[[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, -1, 0], [0, 0, 0, 1]]
)
self.points3D = None
self.points3D_color = None
with open(
os.path.join(self.root_dir, f"transforms_{self.split}.json"), "r"
) as f:
meta = json.load(f)
if "w" in meta and "h" in meta:
W, H = int(meta["w"]), int(meta["h"])
else:
W, H = 800, 800
self.img_wh = (int(W / self.downsample), int(H / self.downsample))
w, h = self.img_wh
focal = (
0.5 * w / math.tan(0.5 * meta["camera_angle_x"])
) # scaled focal length
self.fx, self.fy = focal, focal
self.intrinsics = torch.tensor(
[[focal, 0, w / 2], [0, focal, h / 2], [0, 0, 1]]
)
cam_ray_dirs = get_ray_directions(
h, w, [self.intrinsics[0, 0], self.intrinsics[1, 1]]
)
self.poses = []
self.cameras = []
self.all_rays = []
self.all_rgbs = []
self.all_alphas = []
for i, frame in enumerate(meta["frames"]):
pose = np.array(frame["transform_matrix"]) @ self.blender2opencv
c2w = torch.FloatTensor(pose)
self.poses.append(c2w)
world_ray_dirs = torch.einsum(
"ij,kj->ik",
cam_ray_dirs,
c2w[:3, :3],
)
world_ray_origins = c2w[:3, 3] + torch.zeros_like(cam_ray_dirs)
world_rays = torch.cat([world_ray_origins, world_ray_dirs], dim=-1)
world_rays = world_rays.reshape(self.img_wh[1], self.img_wh[0], 6)
img_path = os.path.join(self.root_dir, f"{frame['file_path']}.png")
img = Image.open(img_path)
if self.downsample != 1.0:
img = img.resize(self.img_wh, Image.LANCZOS)
img = img.convert("RGBA")
rgbas = torch.tensor(np.array(img), dtype=torch.float32) / 255.0
rgbs = rgbas[..., :3] * rgbas[..., 3:4] + (
1 - rgbas[..., 3:4]
) # white bg
img.close()
self.all_rays.append(world_rays)
self.all_rgbs.append(rgbs)
self.all_alphas.append(rgbas[..., -1:])
self.poses = torch.stack(self.poses)
self.all_rays = torch.stack(self.all_rays)
self.all_rgbs = torch.stack(self.all_rgbs)
self.all_alphas = torch.stack(self.all_alphas)
def __len__(self):
return len(self.all_rgbs)
def __getitem__(self, idx):
if self.split == "train": # use data in the buffers
sample = {
"rays": self.all_rays[idx],
"rgbs": self.all_rgbs[idx],
"alphas": self.all_alphas[idx],
}
else: # create data for each image separately
img = self.all_rgbs[idx]
rays = self.all_rays[idx]
alphas = self.all_alphas[idx]
sample = {"rays": rays, "rgbs": img, "alphas": alphas}
return sample
if __name__ == "__main__":
pass
================================================
FILE: data_loader/colmap.py
================================================
import os
import numpy as np
from PIL import Image
from tqdm import tqdm
import torch
import pycolmap
def get_cam_ray_dirs(camera):
x = np.arange(camera.width, dtype=np.float32) + 0.5
y = np.arange(camera.height, dtype=np.float32) + 0.5
x, y = np.meshgrid(x, y)
pix_coords = np.stack([x, y], axis=-1).reshape(-1, 2)
ip_coords = camera.cam_from_img(pix_coords)
ip_coords = np.concatenate(
[ip_coords, np.ones_like(ip_coords[:, :1])], axis=-1
)
ray_dirs = ip_coords / np.linalg.norm(ip_coords, axis=-1, keepdims=True)
return torch.tensor(ray_dirs, dtype=torch.float32)
class COLMAPDataset:
def __init__(self, datadir, split, downsample):
assert downsample in [1, 2, 4, 8]
self.root_dir = datadir
self.colmap_dir = os.path.join(datadir, "sparse/0/")
self.split = split
self.downsample = downsample
if downsample == 1:
images_dir = os.path.join(datadir, "images")
else:
images_dir = os.path.join(datadir, f"images_{downsample}")
if not os.path.exists(images_dir):
raise ValueError(f"Images directory {images_dir} not found")
self.reconstruction = pycolmap.Reconstruction()
self.reconstruction.read(self.colmap_dir)
if len(self.reconstruction.cameras) > 1:
raise ValueError("Multiple cameras are not supported")
names = sorted(im.name for im in self.reconstruction.images.values())
indices = np.arange(len(names))
if split == "train":
names = list(np.array(names)[indices % 8 != 0])
elif split == "test":
names = list(np.array(names)[indices % 8 == 0])
else:
raise ValueError(f"Invalid split: {split}")
names = list(str(name) for name in names)
im = Image.open(os.path.join(images_dir, names[0]))
self.img_wh = im.size
im.close()
self.camera = list(self.reconstruction.cameras.values())[0]
self.camera.rescale(self.img_wh[0], self.img_wh[1])
self.fx = self.camera.focal_length_x
self.fy = self.camera.focal_length_y
cam_ray_dirs = get_cam_ray_dirs(self.camera)
self.images = []
for name in names:
image = None
for image_id in self.reconstruction.images:
image = self.reconstruction.images[image_id]
if image.name == name:
break
if image is None:
raise ValueError(
f"Image {name} not found in COLMAP reconstruction"
)
self.images.append(image)
self.poses = []
self.all_rays = []
self.all_rgbs = []
for image in tqdm(self.images):
c2w = torch.tensor(
image.cam_from_world.inverse().matrix(), dtype=torch.float32
)
self.poses.append(c2w)
world_ray_dirs = torch.einsum(
"ij,kj->ik",
cam_ray_dirs,
c2w[:, :3],
)
world_ray_origins = c2w[:, 3] + torch.zeros_like(cam_ray_dirs)
world_rays = torch.cat([world_ray_origins, world_ray_dirs], dim=-1)
world_rays = world_rays.reshape(self.img_wh[1], self.img_wh[0], 6)
im = Image.open(os.path.join(images_dir, image.name))
im = im.convert("RGB")
rgbs = torch.tensor(np.array(im), dtype=torch.float32) / 255.0
im.close()
self.all_rays.append(world_rays)
self.all_rgbs.append(rgbs)
self.poses = torch.stack(self.poses)
self.all_rays = torch.stack(self.all_rays)
self.all_rgbs = torch.stack(self.all_rgbs)
self.points3D = []
self.points3D_color = []
for point in self.reconstruction.points3D.values():
self.points3D.append(point.xyz)
self.points3D_color.append(point.color)
self.points3D = torch.tensor(
np.array(self.points3D), dtype=torch.float32
)
self.points3D_color = torch.tensor(
np.array(self.points3D_color), dtype=torch.float32
)
self.points3D_color = self.points3D_color / 255.0
================================================
FILE: external/CMakeLists.txt
================================================
if(PIP_GLFW)
set(USE_PIP_GLFW
True
PARENT_SCOPE)
set(GLFW_LIBRARY
""
PARENT_SCOPE)
set(GLFW_INCLUDES
${CMAKE_SOURCE_DIR}/external/submodules/glfw/include
PARENT_SCOPE)
else()
set(USE_PIP_GLFW
False
PARENT_SCOPE)
set(GLFW_BUILD_EXAMPLES
OFF
CACHE BOOL "" FORCE)
set(GLFW_BUILD_TESTS
OFF
CACHE BOOL "" FORCE)
set(GLFW_BUILD_DOCS
OFF
CACHE BOOL "" FORCE)
add_subdirectory(submodules/glfw)
set(GLFW_LIBRARY
glfw
PARENT_SCOPE)
set(GLFW_INCLUDES
""
PARENT_SCOPE)
message(STATUS "GLFW not found from pip, building from source")
endif()
add_library(gl3w STATIC gl3w/gl3w.c)
target_include_directories(gl3w PUBLIC "include")
add_library(
imgui STATIC
submodules/imgui/imgui.cpp
submodules/imgui/imgui_draw.cpp
submodules/imgui/imgui_demo.cpp
submodules/imgui/imgui_widgets.cpp
submodules/imgui/imgui_tables.cpp
submodules/imgui/backends/imgui_impl_glfw.cpp
submodules/imgui/backends/imgui_impl_opengl3.cpp)
target_include_directories(
imgui PUBLIC "submodules/imgui" "submodules/glfw/include"
"submodules/mesa/include")
find_package(TBB GLOBAL)
if(NOT TBB_FOUND)
add_subdirectory(submodules/tbb)
endif()
set(RADFOAM_EXTERNAL_INCLUDES
"${CMAKE_SOURCE_DIR}/external/include"
"${CMAKE_SOURCE_DIR}/external/submodules/imgui"
"${CMAKE_SOURCE_DIR}/external/submodules/imgui/backends"
PARENT_SCOPE)
================================================
FILE: external/gl3w/gl3w.c
================================================
/*
* This file was generated with gl3w_gen.py, part of gl3w
* (hosted at https://github.com/skaslev/gl3w)
*
* This is free and unencumbered software released into the public domain.
*
* Anyone is free to copy, modify, publish, use, compile, sell, or
* distribute this software, either in source code form or as a compiled
* binary, for any purpose, commercial or non-commercial, and by any
* means.
*
* In jurisdictions that recognize copyright laws, the author or authors
* of this software dedicate any and all copyright interest in the
* software to the public domain. We make this dedication for the benefit
* of the public at large and to the detriment of our heirs and
* successors. We intend this dedication to be an overt act of
* relinquishment in perpetuity of all present and future rights to this
* software under copyright law.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
#include <GL/gl3w.h>
#include <stdlib.h>
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
#if defined(_WIN32)
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN 1
#endif
#include <windows.h>
static HMODULE libgl;
typedef PROC(__stdcall* GL3WglGetProcAddr)(LPCSTR);
static GL3WglGetProcAddr wgl_get_proc_address;
static int open_libgl(void)
{
libgl = LoadLibraryA("opengl32.dll");
if (!libgl)
return GL3W_ERROR_LIBRARY_OPEN;
wgl_get_proc_address = (GL3WglGetProcAddr)GetProcAddress(libgl, "wglGetProcAddress");
return GL3W_OK;
}
static void close_libgl(void)
{
FreeLibrary(libgl);
}
static GL3WglProc get_proc(const char *proc)
{
GL3WglProc res;
res = (GL3WglProc)wgl_get_proc_address(proc);
if (!res)
res = (GL3WglProc)GetProcAddress(libgl, proc);
return res;
}
#elif defined(__APPLE__)
#include <dlfcn.h>
static void *libgl;
static int open_libgl(void)
{
libgl = dlopen("/System/Library/Frameworks/OpenGL.framework/OpenGL", RTLD_LAZY | RTLD_LOCAL);
if (!libgl)
return GL3W_ERROR_LIBRARY_OPEN;
return GL3W_OK;
}
static void close_libgl(void)
{
dlclose(libgl);
}
static GL3WglProc get_proc(const char *proc)
{
GL3WglProc res;
*(void **)(&res) = dlsym(libgl, proc);
return res;
}
#else
#include <dlfcn.h>
static void *libgl; /* OpenGL library */
static void *libglx; /* GLX library */
static void *libegl; /* EGL library */
static GL3WGetProcAddressProc gl_get_proc_address;
static void close_libgl(void)
{
if (libgl) {
dlclose(libgl);
libgl = NULL;
}
if (libegl) {
dlclose(libegl);
libegl = NULL;
}
if (libglx) {
dlclose(libglx);
libglx = NULL;
}
}
static int is_library_loaded(const char *name, void **lib)
{
*lib = dlopen(name, RTLD_LAZY | RTLD_LOCAL | RTLD_NOLOAD);
return *lib != NULL;
}
static int open_libs(void)
{
/* On Linux we have two APIs to get process addresses: EGL and GLX.
* EGL is supported under both X11 and Wayland, whereas GLX is X11-specific.
* First check what's already loaded, the windowing library might have
* already loaded either EGL or GLX and we want to use the same one.
*/
if (is_library_loaded("libEGL.so.1", &libegl) ||
is_library_loaded("libGLX.so.0", &libglx)) {
libgl = dlopen("libOpenGL.so.0", RTLD_LAZY | RTLD_LOCAL);
if (libgl)
return GL3W_OK;
else
close_libgl();
}
if (is_library_loaded("libGL.so.1", &libgl))
return GL3W_OK;
/* Neither is already loaded, so we have to load one. Try EGL first
* because it is supported under both X11 and Wayland.
*/
/* Load OpenGL + EGL */
libgl = dlopen("libOpenGL.so.0", RTLD_LAZY | RTLD_LOCAL);
libegl = dlopen("libEGL.so.1", RTLD_LAZY | RTLD_LOCAL);
if (libgl && libegl)
return GL3W_OK;
/* Fall back to legacy libGL, which includes GLX */
close_libgl();
libgl = dlopen("libGL.so.1", RTLD_LAZY | RTLD_LOCAL);
if (libgl)
return GL3W_OK;
return GL3W_ERROR_LIBRARY_OPEN;
}
static int open_libgl(void)
{
int res = open_libs();
if (res)
return res;
if (libegl)
*(void **)(&gl_get_proc_address) = dlsym(libegl, "eglGetProcAddress");
else if (libglx)
*(void **)(&gl_get_proc_address) = dlsym(libglx, "glXGetProcAddressARB");
else
*(void **)(&gl_get_proc_address) = dlsym(libgl, "glXGetProcAddressARB");
if (!gl_get_proc_address) {
close_libgl();
return GL3W_ERROR_LIBRARY_OPEN;
}
return GL3W_OK;
}
static GL3WglProc get_proc(const char *proc)
{
GL3WglProc res = NULL;
/* Before EGL version 1.5, eglGetProcAddress doesn't support querying core
* functions and may return a dummy function if we try, so try to load the
* function from the GL library directly first.
*/
if (libegl)
*(void **)(&res) = dlsym(libgl, proc);
if (!res)
res = gl_get_proc_address(proc);
if (!libegl && !res)
*(void **)(&res) = dlsym(libgl, proc);
return res;
}
#endif
static struct {
int major, minor;
} version;
static int parse_version(void)
{
if (!glGetIntegerv)
return GL3W_ERROR_INIT;
glGetIntegerv(GL_MAJOR_VERSION, &version.major);
glGetIntegerv(GL_MINOR_VERSION, &version.minor);
if (version.major < 3)
return GL3W_ERROR_OPENGL_VERSION;
return GL3W_OK;
}
static void load_procs(GL3WGetProcAddressProc proc);
int gl3wInit(void)
{
int res;
res = open_libgl();
if (res)
return res;
atexit(close_libgl);
return gl3wInit2(get_proc);
}
int gl3wInit2(GL3WGetProcAddressProc proc)
{
load_procs(proc);
return parse_version();
}
int gl3wIsSupported(int major, int minor)
{
if (major < 3)
return 0;
if (version.major == major)
return version.minor >= minor;
return version.major >= major;
}
GL3WglProc gl3wGetProcAddress(const char *proc)
{
return get_proc(proc);
}
static const char *proc_names[] = {
"glActiveShaderProgram",
"glActiveTexture",
"glAttachShader",
"glBeginConditionalRender",
"glBeginQuery",
"glBeginQueryIndexed",
"glBeginTransformFeedback",
"glBindAttribLocation",
"glBindBuffer",
"glBindBufferBase",
"glBindBufferRange",
"glBindBuffersBase",
"glBindBuffersRange",
"glBindFragDataLocation",
"glBindFragDataLocationIndexed",
"glBindFramebuffer",
"glBindImageTexture",
"glBindImageTextures",
"glBindProgramPipeline",
"glBindRenderbuffer",
"glBindSampler",
"glBindSamplers",
"glBindTexture",
"glBindTextureUnit",
"glBindTextures",
"glBindTransformFeedback",
"glBindVertexArray",
"glBindVertexBuffer",
"glBindVertexBuffers",
"glBlendColor",
"glBlendEquation",
"glBlendEquationSeparate",
"glBlendEquationSeparatei",
"glBlendEquationi",
"glBlendFunc",
"glBlendFuncSeparate",
"glBlendFuncSeparatei",
"glBlendFunci",
"glBlitFramebuffer",
"glBlitNamedFramebuffer",
"glBufferData",
"glBufferStorage",
"glBufferSubData",
"glCheckFramebufferStatus",
"glCheckNamedFramebufferStatus",
"glClampColor",
"glClear",
"glClearBufferData",
"glClearBufferSubData",
"glClearBufferfi",
"glClearBufferfv",
"glClearBufferiv",
"glClearBufferuiv",
"glClearColor",
"glClearDepth",
"glClearDepthf",
"glClearNamedBufferData",
"glClearNamedBufferSubData",
"glClearNamedFramebufferfi",
"glClearNamedFramebufferfv",
"glClearNamedFramebufferiv",
"glClearNamedFramebufferuiv",
"glClearStencil",
"glClearTexImage",
"glClearTexSubImage",
"glClientWaitSync",
"glClipControl",
"glColorMask",
"glColorMaski",
"glCompileShader",
"glCompressedTexImage1D",
"glCompressedTexImage2D",
"glCompressedTexImage3D",
"glCompressedTexSubImage1D",
"glCompressedTexSubImage2D",
"glCompressedTexSubImage3D",
"glCompressedTextureSubImage1D",
"glCompressedTextureSubImage2D",
"glCompressedTextureSubImage3D",
"glCopyBufferSubData",
"glCopyImageSubData",
"glCopyNamedBufferSubData",
"glCopyTexImage1D",
"glCopyTexImage2D",
"glCopyTexSubImage1D",
"glCopyTexSubImage2D",
"glCopyTexSubImage3D",
"glCopyTextureSubImage1D",
"glCopyTextureSubImage2D",
"glCopyTextureSubImage3D",
"glCreateBuffers",
"glCreateFramebuffers",
"glCreateProgram",
"glCreateProgramPipelines",
"glCreateQueries",
"glCreateRenderbuffers",
"glCreateSamplers",
"glCreateShader",
"glCreateShaderProgramv",
"glCreateTextures",
"glCreateTransformFeedbacks",
"glCreateVertexArrays",
"glCullFace",
"glDebugMessageCallback",
"glDebugMessageControl",
"glDebugMessageInsert",
"glDeleteBuffers",
"glDeleteFramebuffers",
"glDeleteProgram",
"glDeleteProgramPipelines",
"glDeleteQueries",
"glDeleteRenderbuffers",
"glDeleteSamplers",
"glDeleteShader",
"glDeleteSync",
"glDeleteTextures",
"glDeleteTransformFeedbacks",
"glDeleteVertexArrays",
"glDepthFunc",
"glDepthMask",
"glDepthRange",
"glDepthRangeArrayv",
"glDepthRangeIndexed",
"glDepthRangef",
"glDetachShader",
"glDisable",
"glDisableVertexArrayAttrib",
"glDisableVertexAttribArray",
"glDisablei",
"glDispatchCompute",
"glDispatchComputeIndirect",
"glDrawArrays",
"glDrawArraysIndirect",
"glDrawArraysInstanced",
"glDrawArraysInstancedBaseInstance",
"glDrawBuffer",
"glDrawBuffers",
"glDrawElements",
"glDrawElementsBaseVertex",
"glDrawElementsIndirect",
"glDrawElementsInstanced",
"glDrawElementsInstancedBaseInstance",
"glDrawElementsInstancedBaseVertex",
"glDrawElementsInstancedBaseVertexBaseInstance",
"glDrawRangeElements",
"glDrawRangeElementsBaseVertex",
"glDrawTransformFeedback",
"glDrawTransformFeedbackInstanced",
"glDrawTransformFeedbackStream",
"glDrawTransformFeedbackStreamInstanced",
"glEnable",
"glEnableVertexArrayAttrib",
"glEnableVertexAttribArray",
"glEnablei",
"glEndConditionalRender",
"glEndQuery",
"glEndQueryIndexed",
"glEndTransformFeedback",
"glFenceSync",
"glFinish",
"glFlush",
"glFlushMappedBufferRange",
"glFlushMappedNamedBufferRange",
"glFramebufferParameteri",
"glFramebufferParameteriMESA",
"glFramebufferRenderbuffer",
"glFramebufferTexture",
"glFramebufferTexture1D",
"glFramebufferTexture2D",
"glFramebufferTexture3D",
"glFramebufferTextureLayer",
"glFrontFace",
"glGenBuffers",
"glGenFramebuffers",
"glGenProgramPipelines",
"glGenQueries",
"glGenRenderbuffers",
"glGenSamplers",
"glGenTextures",
"glGenTransformFeedbacks",
"glGenVertexArrays",
"glGenerateMipmap",
"glGenerateTextureMipmap",
"glGetActiveAtomicCounterBufferiv",
"glGetActiveAttrib",
"glGetActiveSubroutineName",
"glGetActiveSubroutineUniformName",
"glGetActiveSubroutineUniformiv",
"glGetActiveUniform",
"glGetActiveUniformBlockName",
"glGetActiveUniformBlockiv",
"glGetActiveUniformName",
"glGetActiveUniformsiv",
"glGetAttachedShaders",
"glGetAttribLocation",
"glGetBooleani_v",
"glGetBooleanv",
"glGetBufferParameteri64v",
"glGetBufferParameteriv",
"glGetBufferPointerv",
"glGetBufferSubData",
"glGetCompressedTexImage",
"glGetCompressedTextureImage",
"glGetCompressedTextureSubImage",
"glGetDebugMessageLog",
"glGetDoublei_v",
"glGetDoublev",
"glGetError",
"glGetFloati_v",
"glGetFloatv",
"glGetFragDataIndex",
"glGetFragDataLocation",
"glGetFramebufferAttachmentParameteriv",
"glGetFramebufferParameteriv",
"glGetFramebufferParameterivMESA",
"glGetGraphicsResetStatus",
"glGetInteger64i_v",
"glGetInteger64v",
"glGetIntegeri_v",
"glGetIntegerv",
"glGetInternalformati64v",
"glGetInternalformativ",
"glGetMultisamplefv",
"glGetNamedBufferParameteri64v",
"glGetNamedBufferParameteriv",
"glGetNamedBufferPointerv",
"glGetNamedBufferSubData",
"glGetNamedFramebufferAttachmentParameteriv",
"glGetNamedFramebufferParameteriv",
"glGetNamedRenderbufferParameteriv",
"glGetObjectLabel",
"glGetObjectPtrLabel",
"glGetPointerv",
"glGetProgramBinary",
"glGetProgramInfoLog",
"glGetProgramInterfaceiv",
"glGetProgramPipelineInfoLog",
"glGetProgramPipelineiv",
"glGetProgramResourceIndex",
"glGetProgramResourceLocation",
"glGetProgramResourceLocationIndex",
"glGetProgramResourceName",
"glGetProgramResourceiv",
"glGetProgramStageiv",
"glGetProgramiv",
"glGetQueryBufferObjecti64v",
"glGetQueryBufferObjectiv",
"glGetQueryBufferObjectui64v",
"glGetQueryBufferObjectuiv",
"glGetQueryIndexediv",
"glGetQueryObjecti64v",
"glGetQueryObjectiv",
"glGetQueryObjectui64v",
"glGetQueryObjectuiv",
"glGetQueryiv",
"glGetRenderbufferParameteriv",
"glGetSamplerParameterIiv",
"glGetSamplerParameterIuiv",
"glGetSamplerParameterfv",
"glGetSamplerParameteriv",
"glGetShaderInfoLog",
"glGetShaderPrecisionFormat",
"glGetShaderSource",
"glGetShaderiv",
"glGetString",
"glGetStringi",
"glGetSubroutineIndex",
"glGetSubroutineUniformLocation",
"glGetSynciv",
"glGetTexImage",
"glGetTexLevelParameterfv",
"glGetTexLevelParameteriv",
"glGetTexParameterIiv",
"glGetTexParameterIuiv",
"glGetTexParameterfv",
"glGetTexParameteriv",
"glGetTextureImage",
"glGetTextureLevelParameterfv",
"glGetTextureLevelParameteriv",
"glGetTextureParameterIiv",
"glGetTextureParameterIuiv",
"glGetTextureParameterfv",
"glGetTextureParameteriv",
"glGetTextureSubImage",
"glGetTransformFeedbackVarying",
"glGetTransformFeedbacki64_v",
"glGetTransformFeedbacki_v",
"glGetTransformFeedbackiv",
"glGetUniformBlockIndex",
"glGetUniformIndices",
"glGetUniformLocation",
"glGetUniformSubroutineuiv",
"glGetUniformdv",
"glGetUniformfv",
"glGetUniformiv",
"glGetUniformuiv",
"glGetVertexArrayIndexed64iv",
"glGetVertexArrayIndexediv",
"glGetVertexArrayiv",
"glGetVertexAttribIiv",
"glGetVertexAttribIuiv",
"glGetVertexAttribLdv",
"glGetVertexAttribPointerv",
"glGetVertexAttribdv",
"glGetVertexAttribfv",
"glGetVertexAttribiv",
"glGetnCompressedTexImage",
"glGetnTexImage",
"glGetnUniformdv",
"glGetnUniformfv",
"glGetnUniformiv",
"glGetnUniformuiv",
"glHint",
"glInvalidateBufferData",
"glInvalidateBufferSubData",
"glInvalidateFramebuffer",
"glInvalidateNamedFramebufferData",
"glInvalidateNamedFramebufferSubData",
"glInvalidateSubFramebuffer",
"glInvalidateTexImage",
"glInvalidateTexSubImage",
"glIsBuffer",
"glIsEnabled",
"glIsEnabledi",
"glIsFramebuffer",
"glIsProgram",
"glIsProgramPipeline",
"glIsQuery",
"glIsRenderbuffer",
"glIsSampler",
"glIsShader",
"glIsSync",
"glIsTexture",
"glIsTransformFeedback",
"glIsVertexArray",
"glLineWidth",
"glLinkProgram",
"glLogicOp",
"glMapBuffer",
"glMapBufferRange",
"glMapNamedBuffer",
"glMapNamedBufferRange",
"glMemoryBarrier",
"glMemoryBarrierByRegion",
"glMinSampleShading",
"glMultiDrawArrays",
"glMultiDrawArraysIndirect",
"glMultiDrawArraysIndirectCount",
"glMultiDrawElements",
"glMultiDrawElementsBaseVertex",
"glMultiDrawElementsIndirect",
"glMultiDrawElementsIndirectCount",
"glNamedBufferData",
"glNamedBufferStorage",
"glNamedBufferSubData",
"glNamedFramebufferDrawBuffer",
"glNamedFramebufferDrawBuffers",
"glNamedFramebufferParameteri",
"glNamedFramebufferReadBuffer",
"glNamedFramebufferRenderbuffer",
"glNamedFramebufferTexture",
"glNamedFramebufferTextureLayer",
"glNamedRenderbufferStorage",
"glNamedRenderbufferStorageMultisample",
"glObjectLabel",
"glObjectPtrLabel",
"glPatchParameterfv",
"glPatchParameteri",
"glPauseTransformFeedback",
"glPixelStoref",
"glPixelStorei",
"glPointParameterf",
"glPointParameterfv",
"glPointParameteri",
"glPointParameteriv",
"glPointSize",
"glPolygonMode",
"glPolygonOffset",
"glPolygonOffsetClamp",
"glPopDebugGroup",
"glPrimitiveRestartIndex",
"glProgramBinary",
"glProgramParameteri",
"glProgramUniform1d",
"glProgramUniform1dv",
"glProgramUniform1f",
"glProgramUniform1fv",
"glProgramUniform1i",
"glProgramUniform1iv",
"glProgramUniform1ui",
"glProgramUniform1uiv",
"glProgramUniform2d",
"glProgramUniform2dv",
"glProgramUniform2f",
"glProgramUniform2fv",
"glProgramUniform2i",
"glProgramUniform2iv",
"glProgramUniform2ui",
"glProgramUniform2uiv",
"glProgramUniform3d",
"glProgramUniform3dv",
"glProgramUniform3f",
"glProgramUniform3fv",
"glProgramUniform3i",
"glProgramUniform3iv",
"glProgramUniform3ui",
"glProgramUniform3uiv",
"glProgramUniform4d",
"glProgramUniform4dv",
"glProgramUniform4f",
"glProgramUniform4fv",
"glProgramUniform4i",
"glProgramUniform4iv",
"glProgramUniform4ui",
"glProgramUniform4uiv",
"glProgramUniformMatrix2dv",
"glProgramUniformMatrix2fv",
"glProgramUniformMatrix2x3dv",
"glProgramUniformMatrix2x3fv",
"glProgramUniformMatrix2x4dv",
"glProgramUniformMatrix2x4fv",
"glProgramUniformMatrix3dv",
"glProgramUniformMatrix3fv",
"glProgramUniformMatrix3x2dv",
"glProgramUniformMatrix3x2fv",
"glProgramUniformMatrix3x4dv",
"glProgramUniformMatrix3x4fv",
"glProgramUniformMatrix4dv",
"glProgramUniformMatrix4fv",
"glProgramUniformMatrix4x2dv",
"glProgramUniformMatrix4x2fv",
"glProgramUniformMatrix4x3dv",
"glProgramUniformMatrix4x3fv",
"glProvokingVertex",
"glPushDebugGroup",
"glQueryCounter",
"glReadBuffer",
"glReadPixels",
"glReadnPixels",
"glReleaseShaderCompiler",
"glRenderbufferStorage",
"glRenderbufferStorageMultisample",
"glResumeTransformFeedback",
"glSampleCoverage",
"glSampleMaski",
"glSamplerParameterIiv",
"glSamplerParameterIuiv",
"glSamplerParameterf",
"glSamplerParameterfv",
"glSamplerParameteri",
"glSamplerParameteriv",
"glScissor",
"glScissorArrayv",
"glScissorIndexed",
"glScissorIndexedv",
"glShaderBinary",
"glShaderSource",
"glShaderStorageBlockBinding",
"glSpecializeShader",
"glStencilFunc",
"glStencilFuncSeparate",
"glStencilMask",
"glStencilMaskSeparate",
"glStencilOp",
"glStencilOpSeparate",
"glTexBuffer",
"glTexBufferRange",
"glTexImage1D",
"glTexImage2D",
"glTexImage2DMultisample",
"glTexImage3D",
"glTexImage3DMultisample",
"glTexParameterIiv",
"glTexParameterIuiv",
"glTexParameterf",
"glTexParameterfv",
"glTexParameteri",
"glTexParameteriv",
"glTexStorage1D",
"glTexStorage2D",
"glTexStorage2DMultisample",
"glTexStorage3D",
"glTexStorage3DMultisample",
"glTexSubImage1D",
"glTexSubImage2D",
"glTexSubImage3D",
"glTextureBarrier",
"glTextureBuffer",
"glTextureBufferRange",
"glTextureParameterIiv",
"glTextureParameterIuiv",
"glTextureParameterf",
"glTextureParameterfv",
"glTextureParameteri",
"glTextureParameteriv",
"glTextureStorage1D",
"glTextureStorage2D",
"glTextureStorage2DMultisample",
"glTextureStorage3D",
"glTextureStorage3DMultisample",
"glTextureSubImage1D",
"glTextureSubImage2D",
"glTextureSubImage3D",
"glTextureView",
"glTransformFeedbackBufferBase",
"glTransformFeedbackBufferRange",
"glTransformFeedbackVaryings",
"glUniform1d",
"glUniform1dv",
"glUniform1f",
"glUniform1fv",
"glUniform1i",
"glUniform1iv",
"glUniform1ui",
"glUniform1uiv",
"glUniform2d",
"glUniform2dv",
"glUniform2f",
"glUniform2fv",
"glUniform2i",
"glUniform2iv",
"glUniform2ui",
"glUniform2uiv",
"glUniform3d",
"glUniform3dv",
"glUniform3f",
"glUniform3fv",
"glUniform3i",
"glUniform3iv",
"glUniform3ui",
"glUniform3uiv",
"glUniform4d",
"glUniform4dv",
"glUniform4f",
"glUniform4fv",
"glUniform4i",
"glUniform4iv",
"glUniform4ui",
"glUniform4uiv",
"glUniformBlockBinding",
"glUniformMatrix2dv",
"glUniformMatrix2fv",
"glUniformMatrix2x3dv",
"glUniformMatrix2x3fv",
"glUniformMatrix2x4dv",
"glUniformMatrix2x4fv",
"glUniformMatrix3dv",
"glUniformMatrix3fv",
"glUniformMatrix3x2dv",
"glUniformMatrix3x2fv",
"glUniformMatrix3x4dv",
"glUniformMatrix3x4fv",
"glUniformMatrix4dv",
"glUniformMatrix4fv",
"glUniformMatrix4x2dv",
"glUniformMatrix4x2fv",
"glUniformMatrix4x3dv",
"glUniformMatrix4x3fv",
"glUniformSubroutinesuiv",
"glUnmapBuffer",
"glUnmapNamedBuffer",
"glUseProgram",
"glUseProgramStages",
"glValidateProgram",
"glValidateProgramPipeline",
"glVertexArrayAttribBinding",
"glVertexArrayAttribFormat",
"glVertexArrayAttribIFormat",
"glVertexArrayAttribLFormat",
"glVertexArrayBindingDivisor",
"glVertexArrayElementBuffer",
"glVertexArrayVertexBuffer",
"glVertexArrayVertexBuffers",
"glVertexAttrib1d",
"glVertexAttrib1dv",
"glVertexAttrib1f",
"glVertexAttrib1fv",
"glVertexAttrib1s",
"glVertexAttrib1sv",
"glVertexAttrib2d",
"glVertexAttrib2dv",
"glVertexAttrib2f",
"glVertexAttrib2fv",
"glVertexAttrib2s",
"glVertexAttrib2sv",
"glVertexAttrib3d",
"glVertexAttrib3dv",
"glVertexAttrib3f",
"glVertexAttrib3fv",
"glVertexAttrib3s",
"glVertexAttrib3sv",
"glVertexAttrib4Nbv",
"glVertexAttrib4Niv",
"glVertexAttrib4Nsv",
"glVertexAttrib4Nub",
"glVertexAttrib4Nubv",
"glVertexAttrib4Nuiv",
"glVertexAttrib4Nusv",
"glVertexAttrib4bv",
"glVertexAttrib4d",
"glVertexAttrib4dv",
"glVertexAttrib4f",
"glVertexAttrib4fv",
"glVertexAttrib4iv",
"glVertexAttrib4s",
"glVertexAttrib4sv",
"glVertexAttrib4ubv",
"glVertexAttrib4uiv",
"glVertexAttrib4usv",
"glVertexAttribBinding",
"glVertexAttribDivisor",
"glVertexAttribFormat",
"glVertexAttribI1i",
"glVertexAttribI1iv",
"glVertexAttribI1ui",
"glVertexAttribI1uiv",
"glVertexAttribI2i",
"glVertexAttribI2iv",
"glVertexAttribI2ui",
"glVertexAttribI2uiv",
"glVertexAttribI3i",
"glVertexAttribI3iv",
"glVertexAttribI3ui",
"glVertexAttribI3uiv",
"glVertexAttribI4bv",
"glVertexAttribI4i",
"glVertexAttribI4iv",
"glVertexAttribI4sv",
"glVertexAttribI4ubv",
"glVertexAttribI4ui",
"glVertexAttribI4uiv",
"glVertexAttribI4usv",
"glVertexAttribIFormat",
"glVertexAttribIPointer",
"glVertexAttribL1d",
"glVertexAttribL1dv",
"glVertexAttribL2d",
"glVertexAttribL2dv",
"glVertexAttribL3d",
"glVertexAttribL3dv",
"glVertexAttribL4d",
"glVertexAttribL4dv",
"glVertexAttribLFormat",
"glVertexAttribLPointer",
"glVertexAttribP1ui",
"glVertexAttribP1uiv",
"glVertexAttribP2ui",
"glVertexAttribP2uiv",
"glVertexAttribP3ui",
"glVertexAttribP3uiv",
"glVertexAttribP4ui",
"glVertexAttribP4uiv",
"glVertexAttribPointer",
"glVertexBindingDivisor",
"glViewport",
"glViewportArrayv",
"glViewportIndexedf",
"glViewportIndexedfv",
"glWaitSync",
};
GL3W_API union GL3WProcs gl3wProcs;
static void load_procs(GL3WGetProcAddressProc proc)
{
size_t i;
for (i = 0; i < ARRAY_SIZE(proc_names); i++)
gl3wProcs.ptr[i] = proc(proc_names[i]);
}
================================================
FILE: external/include/GL/gl3w.h
================================================
/*
* This file was generated with gl3w_gen.py, part of gl3w
* (hosted at https://github.com/skaslev/gl3w)
*
* This is free and unencumbered software released into the public domain.
*
* Anyone is free to copy, modify, publish, use, compile, sell, or
* distribute this software, either in source code form or as a compiled
* binary, for any purpose, commercial or non-commercial, and by any
* means.
*
* In jurisdictions that recognize copyright laws, the author or authors
* of this software dedicate any and all copyright interest in the
* software to the public domain. We make this dedication for the benefit
* of the public at large and to the detriment of our heirs and
* successors. We intend this dedication to be an overt act of
* relinquishment in perpetuity of all present and future rights to this
* software under copyright law.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
#ifndef __gl3w_h_
#define __gl3w_h_
#include <GL/glcorearb.h>
#ifndef GL3W_API
#define GL3W_API
#endif
#ifndef __gl_h_
#define __gl_h_
#endif
#ifdef __cplusplus
extern "C" {
#endif
#define GL3W_OK 0
#define GL3W_ERROR_INIT -1
#define GL3W_ERROR_LIBRARY_OPEN -2
#define GL3W_ERROR_OPENGL_VERSION -3
typedef void (*GL3WglProc)(void);
typedef GL3WglProc (*GL3WGetProcAddressProc)(const char *proc);
/* gl3w api */
GL3W_API int gl3wInit(void);
GL3W_API int gl3wInit2(GL3WGetProcAddressProc proc);
GL3W_API int gl3wIsSupported(int major, int minor);
GL3W_API GL3WglProc gl3wGetProcAddress(const char *proc);
/* gl3w internal state */
union GL3WProcs {
GL3WglProc ptr[659];
struct {
PFNGLACTIVESHADERPROGRAMPROC ActiveShaderProgram;
PFNGLACTIVETEXTUREPROC ActiveTexture;
PFNGLATTACHSHADERPROC AttachShader;
PFNGLBEGINCONDITIONALRENDERPROC BeginConditionalRender;
PFNGLBEGINQUERYPROC BeginQuery;
PFNGLBEGINQUERYINDEXEDPROC BeginQueryIndexed;
PFNGLBEGINTRANSFORMFEEDBACKPROC BeginTransformFeedback;
PFNGLBINDATTRIBLOCATIONPROC BindAttribLocation;
PFNGLBINDBUFFERPROC BindBuffer;
PFNGLBINDBUFFERBASEPROC BindBufferBase;
PFNGLBINDBUFFERRANGEPROC BindBufferRange;
PFNGLBINDBUFFERSBASEPROC BindBuffersBase;
PFNGLBINDBUFFERSRANGEPROC BindBuffersRange;
PFNGLBINDFRAGDATALOCATIONPROC BindFragDataLocation;
PFNGLBINDFRAGDATALOCATIONINDEXEDPROC BindFragDataLocationIndexed;
PFNGLBINDFRAMEBUFFERPROC BindFramebuffer;
PFNGLBINDIMAGETEXTUREPROC BindImageTexture;
PFNGLBINDIMAGETEXTURESPROC BindImageTextures;
PFNGLBINDPROGRAMPIPELINEPROC BindProgramPipeline;
PFNGLBINDRENDERBUFFERPROC BindRenderbuffer;
PFNGLBINDSAMPLERPROC BindSampler;
PFNGLBINDSAMPLERSPROC BindSamplers;
PFNGLBINDTEXTUREPROC BindTexture;
PFNGLBINDTEXTUREUNITPROC BindTextureUnit;
PFNGLBINDTEXTURESPROC BindTextures;
PFNGLBINDTRANSFORMFEEDBACKPROC BindTransformFeedback;
PFNGLBINDVERTEXARRAYPROC BindVertexArray;
PFNGLBINDVERTEXBUFFERPROC BindVertexBuffer;
PFNGLBINDVERTEXBUFFERSPROC BindVertexBuffers;
PFNGLBLENDCOLORPROC BlendColor;
PFNGLBLENDEQUATIONPROC BlendEquation;
PFNGLBLENDEQUATIONSEPARATEPROC BlendEquationSeparate;
PFNGLBLENDEQUATIONSEPARATEIPROC BlendEquationSeparatei;
PFNGLBLENDEQUATIONIPROC BlendEquationi;
PFNGLBLENDFUNCPROC BlendFunc;
PFNGLBLENDFUNCSEPARATEPROC BlendFuncSeparate;
PFNGLBLENDFUNCSEPARATEIPROC BlendFuncSeparatei;
PFNGLBLENDFUNCIPROC BlendFunci;
PFNGLBLITFRAMEBUFFERPROC BlitFramebuffer;
PFNGLBLITNAMEDFRAMEBUFFERPROC BlitNamedFramebuffer;
PFNGLBUFFERDATAPROC BufferData;
PFNGLBUFFERSTORAGEPROC BufferStorage;
PFNGLBUFFERSUBDATAPROC BufferSubData;
PFNGLCHECKFRAMEBUFFERSTATUSPROC CheckFramebufferStatus;
PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC CheckNamedFramebufferStatus;
PFNGLCLAMPCOLORPROC ClampColor;
PFNGLCLEARPROC Clear;
PFNGLCLEARBUFFERDATAPROC ClearBufferData;
PFNGLCLEARBUFFERSUBDATAPROC ClearBufferSubData;
PFNGLCLEARBUFFERFIPROC ClearBufferfi;
PFNGLCLEARBUFFERFVPROC ClearBufferfv;
PFNGLCLEARBUFFERIVPROC ClearBufferiv;
PFNGLCLEARBUFFERUIVPROC ClearBufferuiv;
PFNGLCLEARCOLORPROC ClearColor;
PFNGLCLEARDEPTHPROC ClearDepth;
PFNGLCLEARDEPTHFPROC ClearDepthf;
PFNGLCLEARNAMEDBUFFERDATAPROC ClearNamedBufferData;
PFNGLCLEARNAMEDBUFFERSUBDATAPROC ClearNamedBufferSubData;
PFNGLCLEARNAMEDFRAMEBUFFERFIPROC ClearNamedFramebufferfi;
PFNGLCLEARNAMEDFRAMEBUFFERFVPROC ClearNamedFramebufferfv;
PFNGLCLEARNAMEDFRAMEBUFFERIVPROC ClearNamedFramebufferiv;
PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC ClearNamedFramebufferuiv;
PFNGLCLEARSTENCILPROC ClearStencil;
PFNGLCLEARTEXIMAGEPROC ClearTexImage;
PFNGLCLEARTEXSUBIMAGEPROC ClearTexSubImage;
PFNGLCLIENTWAITSYNCPROC ClientWaitSync;
PFNGLCLIPCONTROLPROC ClipControl;
PFNGLCOLORMASKPROC ColorMask;
PFNGLCOLORMASKIPROC ColorMaski;
PFNGLCOMPILESHADERPROC CompileShader;
PFNGLCOMPRESSEDTEXIMAGE1DPROC CompressedTexImage1D;
PFNGLCOMPRESSEDTEXIMAGE2DPROC CompressedTexImage2D;
PFNGLCOMPRESSEDTEXIMAGE3DPROC CompressedTexImage3D;
PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC CompressedTexSubImage1D;
PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC CompressedTexSubImage2D;
PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC CompressedTexSubImage3D;
PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC CompressedTextureSubImage1D;
PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC CompressedTextureSubImage2D;
PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC CompressedTextureSubImage3D;
PFNGLCOPYBUFFERSUBDATAPROC CopyBufferSubData;
PFNGLCOPYIMAGESUBDATAPROC CopyImageSubData;
PFNGLCOPYNAMEDBUFFERSUBDATAPROC CopyNamedBufferSubData;
PFNGLCOPYTEXIMAGE1DPROC CopyTexImage1D;
PFNGLCOPYTEXIMAGE2DPROC CopyTexImage2D;
PFNGLCOPYTEXSUBIMAGE1DPROC CopyTexSubImage1D;
PFNGLCOPYTEXSUBIMAGE2DPROC CopyTexSubImage2D;
PFNGLCOPYTEXSUBIMAGE3DPROC CopyTexSubImage3D;
PFNGLCOPYTEXTURESUBIMAGE1DPROC CopyTextureSubImage1D;
PFNGLCOPYTEXTURESUBIMAGE2DPROC CopyTextureSubImage2D;
PFNGLCOPYTEXTURESUBIMAGE3DPROC CopyTextureSubImage3D;
PFNGLCREATEBUFFERSPROC CreateBuffers;
PFNGLCREATEFRAMEBUFFERSPROC CreateFramebuffers;
PFNGLCREATEPROGRAMPROC CreateProgram;
PFNGLCREATEPROGRAMPIPELINESPROC CreateProgramPipelines;
PFNGLCREATEQUERIESPROC CreateQueries;
PFNGLCREATERENDERBUFFERSPROC CreateRenderbuffers;
PFNGLCREATESAMPLERSPROC CreateSamplers;
PFNGLCREATESHADERPROC CreateShader;
PFNGLCREATESHADERPROGRAMVPROC CreateShaderProgramv;
PFNGLCREATETEXTURESPROC CreateTextures;
PFNGLCREATETRANSFORMFEEDBACKSPROC CreateTransformFeedbacks;
PFNGLCREATEVERTEXARRAYSPROC CreateVertexArrays;
PFNGLCULLFACEPROC CullFace;
PFNGLDEBUGMESSAGECALLBACKPROC DebugMessageCallback;
PFNGLDEBUGMESSAGECONTROLPROC DebugMessageControl;
PFNGLDEBUGMESSAGEINSERTPROC DebugMessageInsert;
PFNGLDELETEBUFFERSPROC DeleteBuffers;
PFNGLDELETEFRAMEBUFFERSPROC DeleteFramebuffers;
PFNGLDELETEPROGRAMPROC DeleteProgram;
PFNGLDELETEPROGRAMPIPELINESPROC DeleteProgramPipelines;
PFNGLDELETEQUERIESPROC DeleteQueries;
PFNGLDELETERENDERBUFFERSPROC DeleteRenderbuffers;
PFNGLDELETESAMPLERSPROC DeleteSamplers;
PFNGLDELETESHADERPROC DeleteShader;
PFNGLDELETESYNCPROC DeleteSync;
PFNGLDELETETEXTURESPROC DeleteTextures;
PFNGLDELETETRANSFORMFEEDBACKSPROC DeleteTransformFeedbacks;
PFNGLDELETEVERTEXARRAYSPROC DeleteVertexArrays;
PFNGLDEPTHFUNCPROC DepthFunc;
PFNGLDEPTHMASKPROC DepthMask;
PFNGLDEPTHRANGEPROC DepthRange;
PFNGLDEPTHRANGEARRAYVPROC DepthRangeArrayv;
PFNGLDEPTHRANGEINDEXEDPROC DepthRangeIndexed;
PFNGLDEPTHRANGEFPROC DepthRangef;
PFNGLDETACHSHADERPROC DetachShader;
PFNGLDISABLEPROC Disable;
PFNGLDISABLEVERTEXARRAYATTRIBPROC DisableVertexArrayAttrib;
PFNGLDISABLEVERTEXATTRIBARRAYPROC DisableVertexAttribArray;
PFNGLDISABLEIPROC Disablei;
PFNGLDISPATCHCOMPUTEPROC DispatchCompute;
PFNGLDISPATCHCOMPUTEINDIRECTPROC DispatchComputeIndirect;
PFNGLDRAWARRAYSPROC DrawArrays;
PFNGLDRAWARRAYSINDIRECTPROC DrawArraysIndirect;
PFNGLDRAWARRAYSINSTANCEDPROC DrawArraysInstanced;
PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC DrawArraysInstancedBaseInstance;
PFNGLDRAWBUFFERPROC DrawBuffer;
PFNGLDRAWBUFFERSPROC DrawBuffers;
PFNGLDRAWELEMENTSPROC DrawElements;
PFNGLDRAWELEMENTSBASEVERTEXPROC DrawElementsBaseVertex;
PFNGLDRAWELEMENTSINDIRECTPROC DrawElementsIndirect;
PFNGLDRAWELEMENTSINSTANCEDPROC DrawElementsInstanced;
PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC DrawElementsInstancedBaseInstance;
PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC DrawElementsInstancedBaseVertex;
PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC DrawElementsInstancedBaseVertexBaseInstance;
PFNGLDRAWRANGEELEMENTSPROC DrawRangeElements;
PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC DrawRangeElementsBaseVertex;
PFNGLDRAWTRANSFORMFEEDBACKPROC DrawTransformFeedback;
PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC DrawTransformFeedbackInstanced;
PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC DrawTransformFeedbackStream;
PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC DrawTransformFeedbackStreamInstanced;
PFNGLENABLEPROC Enable;
PFNGLENABLEVERTEXARRAYATTRIBPROC EnableVertexArrayAttrib;
PFNGLENABLEVERTEXATTRIBARRAYPROC EnableVertexAttribArray;
PFNGLENABLEIPROC Enablei;
PFNGLENDCONDITIONALRENDERPROC EndConditionalRender;
PFNGLENDQUERYPROC EndQuery;
PFNGLENDQUERYINDEXEDPROC EndQueryIndexed;
PFNGLENDTRANSFORMFEEDBACKPROC EndTransformFeedback;
PFNGLFENCESYNCPROC FenceSync;
PFNGLFINISHPROC Finish;
PFNGLFLUSHPROC Flush;
PFNGLFLUSHMAPPEDBUFFERRANGEPROC FlushMappedBufferRange;
PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC FlushMappedNamedBufferRange;
PFNGLFRAMEBUFFERPARAMETERIPROC FramebufferParameteri;
PFNGLFRAMEBUFFERPARAMETERIMESAPROC FramebufferParameteriMESA;
PFNGLFRAMEBUFFERRENDERBUFFERPROC FramebufferRenderbuffer;
PFNGLFRAMEBUFFERTEXTUREPROC FramebufferTexture;
PFNGLFRAMEBUFFERTEXTURE1DPROC FramebufferTexture1D;
PFNGLFRAMEBUFFERTEXTURE2DPROC FramebufferTexture2D;
PFNGLFRAMEBUFFERTEXTURE3DPROC FramebufferTexture3D;
PFNGLFRAMEBUFFERTEXTURELAYERPROC FramebufferTextureLayer;
PFNGLFRONTFACEPROC FrontFace;
PFNGLGENBUFFERSPROC GenBuffers;
PFNGLGENFRAMEBUFFERSPROC GenFramebuffers;
PFNGLGENPROGRAMPIPELINESPROC GenProgramPipelines;
PFNGLGENQUERIESPROC GenQueries;
PFNGLGENRENDERBUFFERSPROC GenRenderbuffers;
PFNGLGENSAMPLERSPROC GenSamplers;
PFNGLGENTEXTURESPROC GenTextures;
PFNGLGENTRANSFORMFEEDBACKSPROC GenTransformFeedbacks;
PFNGLGENVERTEXARRAYSPROC GenVertexArrays;
PFNGLGENERATEMIPMAPPROC GenerateMipmap;
PFNGLGENERATETEXTUREMIPMAPPROC GenerateTextureMipmap;
PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC GetActiveAtomicCounterBufferiv;
PFNGLGETACTIVEATTRIBPROC GetActiveAttrib;
PFNGLGETACTIVESUBROUTINENAMEPROC GetActiveSubroutineName;
PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC GetActiveSubroutineUniformName;
PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC GetActiveSubroutineUniformiv;
PFNGLGETACTIVEUNIFORMPROC GetActiveUniform;
PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC GetActiveUniformBlockName;
PFNGLGETACTIVEUNIFORMBLOCKIVPROC GetActiveUniformBlockiv;
PFNGLGETACTIVEUNIFORMNAMEPROC GetActiveUniformName;
PFNGLGETACTIVEUNIFORMSIVPROC GetActiveUniformsiv;
PFNGLGETATTACHEDSHADERSPROC GetAttachedShaders;
PFNGLGETATTRIBLOCATIONPROC GetAttribLocation;
PFNGLGETBOOLEANI_VPROC GetBooleani_v;
PFNGLGETBOOLEANVPROC GetBooleanv;
PFNGLGETBUFFERPARAMETERI64VPROC GetBufferParameteri64v;
PFNGLGETBUFFERPARAMETERIVPROC GetBufferParameteriv;
PFNGLGETBUFFERPOINTERVPROC GetBufferPointerv;
PFNGLGETBUFFERSUBDATAPROC GetBufferSubData;
PFNGLGETCOMPRESSEDTEXIMAGEPROC GetCompressedTexImage;
PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC GetCompressedTextureImage;
PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC GetCompressedTextureSubImage;
PFNGLGETDEBUGMESSAGELOGPROC GetDebugMessageLog;
PFNGLGETDOUBLEI_VPROC GetDoublei_v;
PFNGLGETDOUBLEVPROC GetDoublev;
PFNGLGETERRORPROC GetError;
PFNGLGETFLOATI_VPROC GetFloati_v;
PFNGLGETFLOATVPROC GetFloatv;
PFNGLGETFRAGDATAINDEXPROC GetFragDataIndex;
PFNGLGETFRAGDATALOCATIONPROC GetFragDataLocation;
PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC GetFramebufferAttachmentParameteriv;
PFNGLGETFRAMEBUFFERPARAMETERIVPROC GetFramebufferParameteriv;
PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC GetFramebufferParameterivMESA;
PFNGLGETGRAPHICSRESETSTATUSPROC GetGraphicsResetStatus;
PFNGLGETINTEGER64I_VPROC GetInteger64i_v;
PFNGLGETINTEGER64VPROC GetInteger64v;
PFNGLGETINTEGERI_VPROC GetIntegeri_v;
PFNGLGETINTEGERVPROC GetIntegerv;
PFNGLGETINTERNALFORMATI64VPROC GetInternalformati64v;
PFNGLGETINTERNALFORMATIVPROC GetInternalformativ;
PFNGLGETMULTISAMPLEFVPROC GetMultisamplefv;
PFNGLGETNAMEDBUFFERPARAMETERI64VPROC GetNamedBufferParameteri64v;
PFNGLGETNAMEDBUFFERPARAMETERIVPROC GetNamedBufferParameteriv;
PFNGLGETNAMEDBUFFERPOINTERVPROC GetNamedBufferPointerv;
PFNGLGETNAMEDBUFFERSUBDATAPROC GetNamedBufferSubData;
PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC GetNamedFramebufferAttachmentParameteriv;
PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC GetNamedFramebufferParameteriv;
PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC GetNamedRenderbufferParameteriv;
PFNGLGETOBJECTLABELPROC GetObjectLabel;
PFNGLGETOBJECTPTRLABELPROC GetObjectPtrLabel;
PFNGLGETPOINTERVPROC GetPointerv;
PFNGLGETPROGRAMBINARYPROC GetProgramBinary;
PFNGLGETPROGRAMINFOLOGPROC GetProgramInfoLog;
PFNGLGETPROGRAMINTERFACEIVPROC GetProgramInterfaceiv;
PFNGLGETPROGRAMPIPELINEINFOLOGPROC GetProgramPipelineInfoLog;
PFNGLGETPROGRAMPIPELINEIVPROC GetProgramPipelineiv;
PFNGLGETPROGRAMRESOURCEINDEXPROC GetProgramResourceIndex;
PFNGLGETPROGRAMRESOURCELOCATIONPROC GetProgramResourceLocation;
PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC GetProgramResourceLocationIndex;
PFNGLGETPROGRAMRESOURCENAMEPROC GetProgramResourceName;
PFNGLGETPROGRAMRESOURCEIVPROC GetProgramResourceiv;
PFNGLGETPROGRAMSTAGEIVPROC GetProgramStageiv;
PFNGLGETPROGRAMIVPROC GetProgramiv;
PFNGLGETQUERYBUFFEROBJECTI64VPROC GetQueryBufferObjecti64v;
PFNGLGETQUERYBUFFEROBJECTIVPROC GetQueryBufferObjectiv;
PFNGLGETQUERYBUFFEROBJECTUI64VPROC GetQueryBufferObjectui64v;
PFNGLGETQUERYBUFFEROBJECTUIVPROC GetQueryBufferObjectuiv;
PFNGLGETQUERYINDEXEDIVPROC GetQueryIndexediv;
PFNGLGETQUERYOBJECTI64VPROC GetQueryObjecti64v;
PFNGLGETQUERYOBJECTIVPROC GetQueryObjectiv;
PFNGLGETQUERYOBJECTUI64VPROC GetQueryObjectui64v;
PFNGLGETQUERYOBJECTUIVPROC GetQueryObjectuiv;
PFNGLGETQUERYIVPROC GetQueryiv;
PFNGLGETRENDERBUFFERPARAMETERIVPROC GetRenderbufferParameteriv;
PFNGLGETSAMPLERPARAMETERIIVPROC GetSamplerParameterIiv;
PFNGLGETSAMPLERPARAMETERIUIVPROC GetSamplerParameterIuiv;
PFNGLGETSAMPLERPARAMETERFVPROC GetSamplerParameterfv;
PFNGLGETSAMPLERPARAMETERIVPROC GetSamplerParameteriv;
PFNGLGETSHADERINFOLOGPROC GetShaderInfoLog;
PFNGLGETSHADERPRECISIONFORMATPROC GetShaderPrecisionFormat;
PFNGLGETSHADERSOURCEPROC GetShaderSource;
PFNGLGETSHADERIVPROC GetShaderiv;
PFNGLGETSTRINGPROC GetString;
PFNGLGETSTRINGIPROC GetStringi;
PFNGLGETSUBROUTINEINDEXPROC GetSubroutineIndex;
PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC GetSubroutineUniformLocation;
PFNGLGETSYNCIVPROC GetSynciv;
PFNGLGETTEXIMAGEPROC GetTexImage;
PFNGLGETTEXLEVELPARAMETERFVPROC GetTexLevelParameterfv;
PFNGLGETTEXLEVELPARAMETERIVPROC GetTexLevelParameteriv;
PFNGLGETTEXPARAMETERIIVPROC GetTexParameterIiv;
PFNGLGETTEXPARAMETERIUIVPROC GetTexParameterIuiv;
PFNGLGETTEXPARAMETERFVPROC GetTexParameterfv;
PFNGLGETTEXPARAMETERIVPROC GetTexParameteriv;
PFNGLGETTEXTUREIMAGEPROC GetTextureImage;
PFNGLGETTEXTURELEVELPARAMETERFVPROC GetTextureLevelParameterfv;
PFNGLGETTEXTURELEVELPARAMETERIVPROC GetTextureLevelParameteriv;
PFNGLGETTEXTUREPARAMETERIIVPROC GetTextureParameterIiv;
PFNGLGETTEXTUREPARAMETERIUIVPROC GetTextureParameterIuiv;
PFNGLGETTEXTUREPARAMETERFVPROC GetTextureParameterfv;
PFNGLGETTEXTUREPARAMETERIVPROC GetTextureParameteriv;
PFNGLGETTEXTURESUBIMAGEPROC GetTextureSubImage;
PFNGLGETTRANSFORMFEEDBACKVARYINGPROC GetTransformFeedbackVarying;
PFNGLGETTRANSFORMFEEDBACKI64_VPROC GetTransformFeedbacki64_v;
PFNGLGETTRANSFORMFEEDBACKI_VPROC GetTransformFeedbacki_v;
PFNGLGETTRANSFORMFEEDBACKIVPROC GetTransformFeedbackiv;
PFNGLGETUNIFORMBLOCKINDEXPROC GetUniformBlockIndex;
PFNGLGETUNIFORMINDICESPROC GetUniformIndices;
PFNGLGETUNIFORMLOCATIONPROC GetUniformLocation;
PFNGLGETUNIFORMSUBROUTINEUIVPROC GetUniformSubroutineuiv;
PFNGLGETUNIFORMDVPROC GetUniformdv;
PFNGLGETUNIFORMFVPROC GetUniformfv;
PFNGLGETUNIFORMIVPROC GetUniformiv;
PFNGLGETUNIFORMUIVPROC GetUniformuiv;
PFNGLGETVERTEXARRAYINDEXED64IVPROC GetVertexArrayIndexed64iv;
PFNGLGETVERTEXARRAYINDEXEDIVPROC GetVertexArrayIndexediv;
PFNGLGETVERTEXARRAYIVPROC GetVertexArrayiv;
PFNGLGETVERTEXATTRIBIIVPROC GetVertexAttribIiv;
PFNGLGETVERTEXATTRIBIUIVPROC GetVertexAttribIuiv;
PFNGLGETVERTEXATTRIBLDVPROC GetVertexAttribLdv;
PFNGLGETVERTEXATTRIBPOINTERVPROC GetVertexAttribPointerv;
PFNGLGETVERTEXATTRIBDVPROC GetVertexAttribdv;
PFNGLGETVERTEXATTRIBFVPROC GetVertexAttribfv;
PFNGLGETVERTEXATTRIBIVPROC GetVertexAttribiv;
PFNGLGETNCOMPRESSEDTEXIMAGEPROC GetnCompressedTexImage;
PFNGLGETNTEXIMAGEPROC GetnTexImage;
PFNGLGETNUNIFORMDVPROC GetnUniformdv;
PFNGLGETNUNIFORMFVPROC GetnUniformfv;
PFNGLGETNUNIFORMIVPROC GetnUniformiv;
PFNGLGETNUNIFORMUIVPROC GetnUniformuiv;
PFNGLHINTPROC Hint;
PFNGLINVALIDATEBUFFERDATAPROC InvalidateBufferData;
PFNGLINVALIDATEBUFFERSUBDATAPROC InvalidateBufferSubData;
PFNGLINVALIDATEFRAMEBUFFERPROC InvalidateFramebuffer;
PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC InvalidateNamedFramebufferData;
PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC InvalidateNamedFramebufferSubData;
PFNGLINVALIDATESUBFRAMEBUFFERPROC InvalidateSubFramebuffer;
PFNGLINVALIDATETEXIMAGEPROC InvalidateTexImage;
PFNGLINVALIDATETEXSUBIMAGEPROC InvalidateTexSubImage;
PFNGLISBUFFERPROC IsBuffer;
PFNGLISENABLEDPROC IsEnabled;
PFNGLISENABLEDIPROC IsEnabledi;
PFNGLISFRAMEBUFFERPROC IsFramebuffer;
PFNGLISPROGRAMPROC IsProgram;
PFNGLISPROGRAMPIPELINEPROC IsProgramPipeline;
PFNGLISQUERYPROC IsQuery;
PFNGLISRENDERBUFFERPROC IsRenderbuffer;
PFNGLISSAMPLERPROC IsSampler;
PFNGLISSHADERPROC IsShader;
PFNGLISSYNCPROC IsSync;
PFNGLISTEXTUREPROC IsTexture;
PFNGLISTRANSFORMFEEDBACKPROC IsTransformFeedback;
PFNGLISVERTEXARRAYPROC IsVertexArray;
PFNGLLINEWIDTHPROC LineWidth;
PFNGLLINKPROGRAMPROC LinkProgram;
PFNGLLOGICOPPROC LogicOp;
PFNGLMAPBUFFERPROC MapBuffer;
PFNGLMAPBUFFERRANGEPROC MapBufferRange;
PFNGLMAPNAMEDBUFFERPROC MapNamedBuffer;
PFNGLMAPNAMEDBUFFERRANGEPROC MapNamedBufferRange;
PFNGLMEMORYBARRIERPROC MemoryBarrier;
PFNGLMEMORYBARRIERBYREGIONPROC MemoryBarrierByRegion;
PFNGLMINSAMPLESHADINGPROC MinSampleShading;
PFNGLMULTIDRAWARRAYSPROC MultiDrawArrays;
PFNGLMULTIDRAWARRAYSINDIRECTPROC MultiDrawArraysIndirect;
PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC MultiDrawArraysIndirectCount;
PFNGLMULTIDRAWELEMENTSPROC MultiDrawElements;
PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC MultiDrawElementsBaseVertex;
PFNGLMULTIDRAWELEMENTSINDIRECTPROC MultiDrawElementsIndirect;
PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC MultiDrawElementsIndirectCount;
PFNGLNAMEDBUFFERDATAPROC NamedBufferData;
PFNGLNAMEDBUFFERSTORAGEPROC NamedBufferStorage;
PFNGLNAMEDBUFFERSUBDATAPROC NamedBufferSubData;
PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC NamedFramebufferDrawBuffer;
PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC NamedFramebufferDrawBuffers;
PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC NamedFramebufferParameteri;
PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC NamedFramebufferReadBuffer;
PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC NamedFramebufferRenderbuffer;
PFNGLNAMEDFRAMEBUFFERTEXTUREPROC NamedFramebufferTexture;
PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC NamedFramebufferTextureLayer;
PFNGLNAMEDRENDERBUFFERSTORAGEPROC NamedRenderbufferStorage;
PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC NamedRenderbufferStorageMultisample;
PFNGLOBJECTLABELPROC ObjectLabel;
PFNGLOBJECTPTRLABELPROC ObjectPtrLabel;
PFNGLPATCHPARAMETERFVPROC PatchParameterfv;
PFNGLPATCHPARAMETERIPROC PatchParameteri;
PFNGLPAUSETRANSFORMFEEDBACKPROC PauseTransformFeedback;
PFNGLPIXELSTOREFPROC PixelStoref;
PFNGLPIXELSTOREIPROC PixelStorei;
PFNGLPOINTPARAMETERFPROC PointParameterf;
PFNGLPOINTPARAMETERFVPROC PointParameterfv;
PFNGLPOINTPARAMETERIPROC PointParameteri;
PFNGLPOINTPARAMETERIVPROC PointParameteriv;
PFNGLPOINTSIZEPROC PointSize;
PFNGLPOLYGONMODEPROC PolygonMode;
PFNGLPOLYGONOFFSETPROC PolygonOffset;
PFNGLPOLYGONOFFSETCLAMPPROC PolygonOffsetClamp;
PFNGLPOPDEBUGGROUPPROC PopDebugGroup;
PFNGLPRIMITIVERESTARTINDEXPROC PrimitiveRestartIndex;
PFNGLPROGRAMBINARYPROC ProgramBinary;
PFNGLPROGRAMPARAMETERIPROC ProgramParameteri;
PFNGLPROGRAMUNIFORM1DPROC ProgramUniform1d;
PFNGLPROGRAMUNIFORM1DVPROC ProgramUniform1dv;
PFNGLPROGRAMUNIFORM1FPROC ProgramUniform1f;
PFNGLPROGRAMUNIFORM1FVPROC ProgramUniform1fv;
PFNGLPROGRAMUNIFORM1IPROC ProgramUniform1i;
PFNGLPROGRAMUNIFORM1IVPROC ProgramUniform1iv;
PFNGLPROGRAMUNIFORM1UIPROC ProgramUniform1ui;
PFNGLPROGRAMUNIFORM1UIVPROC ProgramUniform1uiv;
PFNGLPROGRAMUNIFORM2DPROC ProgramUniform2d;
PFNGLPROGRAMUNIFORM2DVPROC ProgramUniform2dv;
PFNGLPROGRAMUNIFORM2FPROC ProgramUniform2f;
PFNGLPROGRAMUNIFORM2FVPROC ProgramUniform2fv;
PFNGLPROGRAMUNIFORM2IPROC ProgramUniform2i;
PFNGLPROGRAMUNIFORM2IVPROC ProgramUniform2iv;
PFNGLPROGRAMUNIFORM2UIPROC ProgramUniform2ui;
PFNGLPROGRAMUNIFORM2UIVPROC ProgramUniform2uiv;
PFNGLPROGRAMUNIFORM3DPROC ProgramUniform3d;
PFNGLPROGRAMUNIFORM3DVPROC ProgramUniform3dv;
PFNGLPROGRAMUNIFORM3FPROC ProgramUniform3f;
PFNGLPROGRAMUNIFORM3FVPROC ProgramUniform3fv;
PFNGLPROGRAMUNIFORM3IPROC ProgramUniform3i;
PFNGLPROGRAMUNIFORM3IVPROC ProgramUniform3iv;
PFNGLPROGRAMUNIFORM3UIPROC ProgramUniform3ui;
PFNGLPROGRAMUNIFORM3UIVPROC ProgramUniform3uiv;
PFNGLPROGRAMUNIFORM4DPROC ProgramUniform4d;
PFNGLPROGRAMUNIFORM4DVPROC ProgramUniform4dv;
PFNGLPROGRAMUNIFORM4FPROC ProgramUniform4f;
PFNGLPROGRAMUNIFORM4FVPROC ProgramUniform4fv;
PFNGLPROGRAMUNIFORM4IPROC ProgramUniform4i;
PFNGLPROGRAMUNIFORM4IVPROC ProgramUniform4iv;
PFNGLPROGRAMUNIFORM4UIPROC ProgramUniform4ui;
PFNGLPROGRAMUNIFORM4UIVPROC ProgramUniform4uiv;
PFNGLPROGRAMUNIFORMMATRIX2DVPROC ProgramUniformMatrix2dv;
PFNGLPROGRAMUNIFORMMATRIX2FVPROC ProgramUniformMatrix2fv;
PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC ProgramUniformMatrix2x3dv;
PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC ProgramUniformMatrix2x3fv;
PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC ProgramUniformMatrix2x4dv;
PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC ProgramUniformMatrix2x4fv;
PFNGLPROGRAMUNIFORMMATRIX3DVPROC ProgramUniformMatrix3dv;
PFNGLPROGRAMUNIFORMMATRIX3FVPROC ProgramUniformMatrix3fv;
PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC ProgramUniformMatrix3x2dv;
PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC ProgramUniformMatrix3x2fv;
PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC ProgramUniformMatrix3x4dv;
PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC ProgramUniformMatrix3x4fv;
PFNGLPROGRAMUNIFORMMATRIX4DVPROC ProgramUniformMatrix4dv;
PFNGLPROGRAMUNIFORMMATRIX4FVPROC ProgramUniformMatrix4fv;
PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC ProgramUniformMatrix4x2dv;
PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC ProgramUniformMatrix4x2fv;
PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC ProgramUniformMatrix4x3dv;
PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC ProgramUniformMatrix4x3fv;
PFNGLPROVOKINGVERTEXPROC ProvokingVertex;
PFNGLPUSHDEBUGGROUPPROC PushDebugGroup;
PFNGLQUERYCOUNTERPROC QueryCounter;
PFNGLREADBUFFERPROC ReadBuffer;
PFNGLREADPIXELSPROC ReadPixels;
PFNGLREADNPIXELSPROC ReadnPixels;
PFNGLRELEASESHADERCOMPILERPROC ReleaseShaderCompiler;
PFNGLRENDERBUFFERSTORAGEPROC RenderbufferStorage;
PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC RenderbufferStorageMultisample;
PFNGLRESUMETRANSFORMFEEDBACKPROC ResumeTransformFeedback;
PFNGLSAMPLECOVERAGEPROC SampleCoverage;
PFNGLSAMPLEMASKIPROC SampleMaski;
PFNGLSAMPLERPARAMETERIIVPROC SamplerParameterIiv;
PFNGLSAMPLERPARAMETERIUIVPROC SamplerParameterIuiv;
PFNGLSAMPLERPARAMETERFPROC SamplerParameterf;
PFNGLSAMPLERPARAMETERFVPROC SamplerParameterfv;
PFNGLSAMPLERPARAMETERIPROC SamplerParameteri;
PFNGLSAMPLERPARAMETERIVPROC SamplerParameteriv;
PFNGLSCISSORPROC Scissor;
PFNGLSCISSORARRAYVPROC ScissorArrayv;
PFNGLSCISSORINDEXEDPROC ScissorIndexed;
PFNGLSCISSORINDEXEDVPROC ScissorIndexedv;
PFNGLSHADERBINARYPROC ShaderBinary;
PFNGLSHADERSOURCEPROC ShaderSource;
PFNGLSHADERSTORAGEBLOCKBINDINGPROC ShaderStorageBlockBinding;
PFNGLSPECIALIZESHADERPROC SpecializeShader;
PFNGLSTENCILFUNCPROC StencilFunc;
PFNGLSTENCILFUNCSEPARATEPROC StencilFuncSeparate;
PFNGLSTENCILMASKPROC StencilMask;
PFNGLSTENCILMASKSEPARATEPROC StencilMaskSeparate;
PFNGLSTENCILOPPROC StencilOp;
PFNGLSTENCILOPSEPARATEPROC StencilOpSeparate;
PFNGLTEXBUFFERPROC TexBuffer;
PFNGLTEXBUFFERRANGEPROC TexBufferRange;
PFNGLTEXIMAGE1DPROC TexImage1D;
PFNGLTEXIMAGE2DPROC TexImage2D;
PFNGLTEXIMAGE2DMULTISAMPLEPROC TexImage2DMultisample;
PFNGLTEXIMAGE3DPROC TexImage3D;
PFNGLTEXIMAGE3DMULTISAMPLEPROC TexImage3DMultisample;
PFNGLTEXPARAMETERIIVPROC TexParameterIiv;
PFNGLTEXPARAMETERIUIVPROC TexParameterIuiv;
PFNGLTEXPARAMETERFPROC TexParameterf;
PFNGLTEXPARAMETERFVPROC TexParameterfv;
PFNGLTEXPARAMETERIPROC TexParameteri;
PFNGLTEXPARAMETERIVPROC TexParameteriv;
PFNGLTEXSTORAGE1DPROC TexStorage1D;
PFNGLTEXSTORAGE2DPROC TexStorage2D;
PFNGLTEXSTORAGE2DMULTISAMPLEPROC TexStorage2DMultisample;
PFNGLTEXSTORAGE3DPROC TexStorage3D;
PFNGLTEXSTORAGE3DMULTISAMPLEPROC TexStorage3DMultisample;
PFNGLTEXSUBIMAGE1DPROC TexSubImage1D;
PFNGLTEXSUBIMAGE2DPROC TexSubImage2D;
PFNGLTEXSUBIMAGE3DPROC TexSubImage3D;
PFNGLTEXTUREBARRIERPROC TextureBarrier;
PFNGLTEXTUREBUFFERPROC TextureBuffer;
PFNGLTEXTUREBUFFERRANGEPROC TextureBufferRange;
PFNGLTEXTUREPARAMETERIIVPROC TextureParameterIiv;
PFNGLTEXTUREPARAMETERIUIVPROC TextureParameterIuiv;
PFNGLTEXTUREPARAMETERFPROC TextureParameterf;
PFNGLTEXTUREPARAMETERFVPROC TextureParameterfv;
PFNGLTEXTUREPARAMETERIPROC TextureParameteri;
PFNGLTEXTUREPARAMETERIVPROC TextureParameteriv;
PFNGLTEXTURESTORAGE1DPROC TextureStorage1D;
PFNGLTEXTURESTORAGE2DPROC TextureStorage2D;
PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC TextureStorage2DMultisample;
PFNGLTEXTURESTORAGE3DPROC TextureStorage3D;
PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC TextureStorage3DMultisample;
PFNGLTEXTURESUBIMAGE1DPROC TextureSubImage1D;
PFNGLTEXTURESUBIMAGE2DPROC TextureSubImage2D;
PFNGLTEXTURESUBIMAGE3DPROC TextureSubImage3D;
PFNGLTEXTUREVIEWPROC TextureView;
PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC TransformFeedbackBufferBase;
PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC TransformFeedbackBufferRange;
PFNGLTRANSFORMFEEDBACKVARYINGSPROC TransformFeedbackVaryings;
PFNGLUNIFORM1DPROC Uniform1d;
PFNGLUNIFORM1DVPROC Uniform1dv;
PFNGLUNIFORM1FPROC Uniform1f;
PFNGLUNIFORM1FVPROC Uniform1fv;
PFNGLUNIFORM1IPROC Uniform1i;
PFNGLUNIFORM1IVPROC Uniform1iv;
PFNGLUNIFORM1UIPROC Uniform1ui;
PFNGLUNIFORM1UIVPROC Uniform1uiv;
PFNGLUNIFORM2DPROC Uniform2d;
PFNGLUNIFORM2DVPROC Uniform2dv;
PFNGLUNIFORM2FPROC Uniform2f;
PFNGLUNIFORM2FVPROC Uniform2fv;
PFNGLUNIFORM2IPROC Uniform2i;
PFNGLUNIFORM2IVPROC Uniform2iv;
PFNGLUNIFORM2UIPROC Uniform2ui;
PFNGLUNIFORM2UIVPROC Uniform2uiv;
PFNGLUNIFORM3DPROC Uniform3d;
PFNGLUNIFORM3DVPROC Uniform3dv;
PFNGLUNIFORM3FPROC Uniform3f;
PFNGLUNIFORM3FVPROC Uniform3fv;
PFNGLUNIFORM3IPROC Uniform3i;
PFNGLUNIFORM3IVPROC Uniform3iv;
PFNGLUNIFORM3UIPROC Uniform3ui;
PFNGLUNIFORM3UIVPROC Uniform3uiv;
PFNGLUNIFORM4DPROC Uniform4d;
PFNGLUNIFORM4DVPROC Uniform4dv;
PFNGLUNIFORM4FPROC Uniform4f;
PFNGLUNIFORM4FVPROC Uniform4fv;
PFNGLUNIFORM4IPROC Uniform4i;
PFNGLUNIFORM4IVPROC Uniform4iv;
PFNGLUNIFORM4UIPROC Uniform4ui;
PFNGLUNIFORM4UIVPROC Uniform4uiv;
PFNGLUNIFORMBLOCKBINDINGPROC UniformBlockBinding;
PFNGLUNIFORMMATRIX2DVPROC UniformMatrix2dv;
PFNGLUNIFORMMATRIX2FVPROC UniformMatrix2fv;
PFNGLUNIFORMMATRIX2X3DVPROC UniformMatrix2x3dv;
PFNGLUNIFORMMATRIX2X3FVPROC UniformMatrix2x3fv;
PFNGLUNIFORMMATRIX2X4DVPROC UniformMatrix2x4dv;
PFNGLUNIFORMMATRIX2X4FVPROC UniformMatrix2x4fv;
PFNGLUNIFORMMATRIX3DVPROC UniformMatrix3dv;
PFNGLUNIFORMMATRIX3FVPROC UniformMatrix3fv;
PFNGLUNIFORMMATRIX3X2DVPROC UniformMatrix3x2dv;
PFNGLUNIFORMMATRIX3X2FVPROC UniformMatrix3x2fv;
PFNGLUNIFORMMATRIX3X4DVPROC UniformMatrix3x4dv;
PFNGLUNIFORMMATRIX3X4FVPROC UniformMatrix3x4fv;
PFNGLUNIFORMMATRIX4DVPROC UniformMatrix4dv;
PFNGLUNIFORMMATRIX4FVPROC UniformMatrix4fv;
PFNGLUNIFORMMATRIX4X2DVPROC UniformMatrix4x2dv;
PFNGLUNIFORMMATRIX4X2FVPROC UniformMatrix4x2fv;
PFNGLUNIFORMMATRIX4X3DVPROC UniformMatrix4x3dv;
PFNGLUNIFORMMATRIX4X3FVPROC UniformMatrix4x3fv;
PFNGLUNIFORMSUBROUTINESUIVPROC UniformSubroutinesuiv;
PFNGLUNMAPBUFFERPROC UnmapBuffer;
PFNGLUNMAPNAMEDBUFFERPROC UnmapNamedBuffer;
PFNGLUSEPROGRAMPROC UseProgram;
PFNGLUSEPROGRAMSTAGESPROC UseProgramStages;
PFNGLVALIDATEPROGRAMPROC ValidateProgram;
PFNGLVALIDATEPROGRAMPIPELINEPROC ValidateProgramPipeline;
PFNGLVERTEXARRAYATTRIBBINDINGPROC VertexArrayAttribBinding;
PFNGLVERTEXARRAYATTRIBFORMATPROC VertexArrayAttribFormat;
PFNGLVERTEXARRAYATTRIBIFORMATPROC VertexArrayAttribIFormat;
PFNGLVERTEXARRAYATTRIBLFORMATPROC VertexArrayAttribLFormat;
PFNGLVERTEXARRAYBINDINGDIVISORPROC VertexArrayBindingDivisor;
PFNGLVERTEXARRAYELEMENTBUFFERPROC VertexArrayElementBuffer;
PFNGLVERTEXARRAYVERTEXBUFFERPROC VertexArrayVertexBuffer;
PFNGLVERTEXARRAYVERTEXBUFFERSPROC VertexArrayVertexBuffers;
PFNGLVERTEXATTRIB1DPROC VertexAttrib1d;
PFNGLVERTEXATTRIB1DVPROC VertexAttrib1dv;
PFNGLVERTEXATTRIB1FPROC VertexAttrib1f;
PFNGLVERTEXATTRIB1FVPROC VertexAttrib1fv;
PFNGLVERTEXATTRIB1SPROC VertexAttrib1s;
PFNGLVERTEXATTRIB1SVPROC VertexAttrib1sv;
PFNGLVERTEXATTRIB2DPROC VertexAttrib2d;
PFNGLVERTEXATTRIB2DVPROC VertexAttrib2dv;
PFNGLVERTEXATTRIB2FPROC VertexAttrib2f;
PFNGLVERTEXATTRIB2FVPROC VertexAttrib2fv;
PFNGLVERTEXATTRIB2SPROC VertexAttrib2s;
PFNGLVERTEXATTRIB2SVPROC VertexAttrib2sv;
PFNGLVERTEXATTRIB3DPROC VertexAttrib3d;
PFNGLVERTEXATTRIB3DVPROC VertexAttrib3dv;
PFNGLVERTEXATTRIB3FPROC VertexAttrib3f;
PFNGLVERTEXATTRIB3FVPROC VertexAttrib3fv;
PFNGLVERTEXATTRIB3SPROC VertexAttrib3s;
PFNGLVERTEXATTRIB3SVPROC VertexAttrib3sv;
PFNGLVERTEXATTRIB4NBVPROC VertexAttrib4Nbv;
PFNGLVERTEXATTRIB4NIVPROC VertexAttrib4Niv;
PFNGLVERTEXATTRIB4NSVPROC VertexAttrib4Nsv;
PFNGLVERTEXATTRIB4NUBPROC VertexAttrib4Nub;
PFNGLVERTEXATTRIB4NUBVPROC VertexAttrib4Nubv;
PFNGLVERTEXATTRIB4NUIVPROC VertexAttrib4Nuiv;
PFNGLVERTEXATTRIB4NUSVPROC VertexAttrib4Nusv;
PFNGLVERTEXATTRIB4BVPROC VertexAttrib4bv;
PFNGLVERTEXATTRIB4DPROC VertexAttrib4d;
PFNGLVERTEXATTRIB4DVPROC VertexAttrib4dv;
PFNGLVERTEXATTRIB4FPROC VertexAttrib4f;
PFNGLVERTEXATTRIB4FVPROC VertexAttrib4fv;
PFNGLVERTEXATTRIB4IVPROC VertexAttrib4iv;
PFNGLVERTEXATTRIB4SPROC VertexAttrib4s;
PFNGLVERTEXATTRIB4SVPROC VertexAttrib4sv;
PFNGLVERTEXATTRIB4UBVPROC VertexAttrib4ubv;
PFNGLVERTEXATTRIB4UIVPROC VertexAttrib4uiv;
PFNGLVERTEXATTRIB4USVPROC VertexAttrib4usv;
PFNGLVERTEXATTRIBBINDINGPROC VertexAttribBinding;
PFNGLVERTEXATTRIBDIVISORPROC VertexAttribDivisor;
PFNGLVERTEXATTRIBFORMATPROC VertexAttribFormat;
PFNGLVERTEXATTRIBI1IPROC VertexAttribI1i;
PFNGLVERTEXATTRIBI1IVPROC VertexAttribI1iv;
PFNGLVERTEXATTRIBI1UIPROC VertexAttribI1ui;
PFNGLVERTEXATTRIBI1UIVPROC VertexAttribI1uiv;
PFNGLVERTEXATTRIBI2IPROC VertexAttribI2i;
PFNGLVERTEXATTRIBI2IVPROC VertexAttribI2iv;
PFNGLVERTEXATTRIBI2UIPROC VertexAttribI2ui;
PFNGLVERTEXATTRIBI2UIVPROC VertexAttribI2uiv;
PFNGLVERTEXATTRIBI3IPROC VertexAttribI3i;
PFNGLVERTEXATTRIBI3IVPROC VertexAttribI3iv;
PFNGLVERTEXATTRIBI3UIPROC VertexAttribI3ui;
PFNGLVERTEXATTRIBI3UIVPROC VertexAttribI3uiv;
PFNGLVERTEXATTRIBI4BVPROC VertexAttribI4bv;
PFNGLVERTEXATTRIBI4IPROC VertexAttribI4i;
PFNGLVERTEXATTRIBI4IVPROC VertexAttribI4iv;
PFNGLVERTEXATTRIBI4SVPROC VertexAttribI4sv;
PFNGLVERTEXATTRIBI4UBVPROC VertexAttribI4ubv;
PFNGLVERTEXATTRIBI4UIPROC VertexAttribI4ui;
PFNGLVERTEXATTRIBI4UIVPROC VertexAttribI4uiv;
PFNGLVERTEXATTRIBI4USVPROC VertexAttribI4usv;
PFNGLVERTEXATTRIBIFORMATPROC VertexAttribIFormat;
PFNGLVERTEXATTRIBIPOINTERPROC VertexAttribIPointer;
PFNGLVERTEXATTRIBL1DPROC VertexAttribL1d;
PFNGLVERTEXATTRIBL1DVPROC VertexAttribL1dv;
PFNGLVERTEXATTRIBL2DPROC VertexAttribL2d;
PFNGLVERTEXATTRIBL2DVPROC VertexAttribL2dv;
PFNGLVERTEXATTRIBL3DPROC VertexAttribL3d;
PFNGLVERTEXATTRIBL3DVPROC VertexAttribL3dv;
PFNGLVERTEXATTRIBL4DPROC VertexAttribL4d;
PFNGLVERTEXATTRIBL4DVPROC VertexAttribL4dv;
PFNGLVERTEXATTRIBLFORMATPROC VertexAttribLFormat;
PFNGLVERTEXATTRIBLPOINTERPROC VertexAttribLPointer;
PFNGLVERTEXATTRIBP1UIPROC VertexAttribP1ui;
PFNGLVERTEXATTRIBP1UIVPROC VertexAttribP1uiv;
PFNGLVERTEXATTRIBP2UIPROC VertexAttribP2ui;
PFNGLVERTEXATTRIBP2UIVPROC VertexAttribP2uiv;
PFNGLVERTEXATTRIBP3UIPROC VertexAttribP3ui;
PFNGLVERTEXATTRIBP3UIVPROC VertexAttribP3uiv;
PFNGLVERTEXATTRIBP4UIPROC VertexAttribP4ui;
PFNGLVERTEXATTRIBP4UIVPROC VertexAttribP4uiv;
PFNGLVERTEXATTRIBPOINTERPROC VertexAttribPointer;
PFNGLVERTEXBINDINGDIVISORPROC VertexBindingDivisor;
PFNGLVIEWPORTPROC Viewport;
PFNGLVIEWPORTARRAYVPROC ViewportArrayv;
PFNGLVIEWPORTINDEXEDFPROC ViewportIndexedf;
PFNGLVIEWPORTINDEXEDFVPROC ViewportIndexedfv;
PFNGLWAITSYNCPROC WaitSync;
} gl;
};
GL3W_API extern union GL3WProcs gl3wProcs;
/* OpenGL functions */
#define glActiveShaderProgram gl3wProcs.gl.ActiveShaderProgram
#define glActiveTexture gl3wProcs.gl.ActiveTexture
#define glAttachShader gl3wProcs.gl.AttachShader
#define glBeginConditionalRender gl3wProcs.gl.BeginConditionalRender
#define glBeginQuery gl3wProcs.gl.BeginQuery
#define glBeginQueryIndexed gl3wProcs.gl.BeginQueryIndexed
#define glBeginTransformFeedback gl3wProcs.gl.BeginTransformFeedback
#define glBindAttribLocation gl3wProcs.gl.BindAttribLocation
#define glBindBuffer gl3wProcs.gl.BindBuffer
#define glBindBufferBase gl3wProcs.gl.BindBufferBase
#define glBindBufferRange gl3wProcs.gl.BindBufferRange
#define glBindBuffersBase gl3wProcs.gl.BindBuffersBase
#define glBindBuffersRange gl3wProcs.gl.BindBuffersRange
#define glBindFragDataLocation gl3wProcs.gl.BindFragDataLocation
#define glBindFragDataLocationIndexed gl3wProcs.gl.BindFragDataLocationIndexed
#define glBindFramebuffer gl3wProcs.gl.BindFramebuffer
#define glBindImageTexture gl3wProcs.gl.BindImageTexture
#define glBindImageTextures gl3wProcs.gl.BindImageTextures
#define glBindProgramPipeline gl3wProcs.gl.BindProgramPipeline
#define glBindRenderbuffer gl3wProcs.gl.BindRenderbuffer
#define glBindSampler gl3wProcs.gl.BindSampler
#define glBindSamplers gl3wProcs.gl.BindSamplers
#define glBindTexture gl3wProcs.gl.BindTexture
#define glBindTextureUnit gl3wProcs.gl.BindTextureUnit
#define glBindTextures gl3wProcs.gl.BindTextures
#define glBindTransformFeedback gl3wProcs.gl.BindTransformFeedback
#define glBindVertexArray gl3wProcs.gl.BindVertexArray
#define glBindVertexBuffer gl3wProcs.gl.BindVertexBuffer
#define glBindVertexBuffers gl3wProcs.gl.BindVertexBuffers
#define glBlendColor gl3wProcs.gl.BlendColor
#define glBlendEquation gl3wProcs.gl.BlendEquation
#define glBlendEquationSeparate gl3wProcs.gl.BlendEquationSeparate
#define glBlendEquationSeparatei gl3wProcs.gl.BlendEquationSeparatei
#define glBlendEquationi gl3wProcs.gl.BlendEquationi
#define glBlendFunc gl3wProcs.gl.BlendFunc
#define glBlendFuncSeparate gl3wProcs.gl.BlendFuncSeparate
#define glBlendFuncSeparatei gl3wProcs.gl.BlendFuncSeparatei
#define glBlendFunci gl3wProcs.gl.BlendFunci
#define glBlitFramebuffer gl3wProcs.gl.BlitFramebuffer
#define glBlitNamedFramebuffer gl3wProcs.gl.BlitNamedFramebuffer
#define glBufferData gl3wProcs.gl.BufferData
#define glBufferStorage gl3wProcs.gl.BufferStorage
#define glBufferSubData gl3wProcs.gl.BufferSubData
#define glCheckFramebufferStatus gl3wProcs.gl.CheckFramebufferStatus
#define glCheckNamedFramebufferStatus gl3wProcs.gl.CheckNamedFramebufferStatus
#define glClampColor gl3wProcs.gl.ClampColor
#define glClear gl3wProcs.gl.Clear
#define glClearBufferData gl3wProcs.gl.ClearBufferData
#define glClearBufferSubData gl3wProcs.gl.ClearBufferSubData
#define glClearBufferfi gl3wProcs.gl.ClearBufferfi
#define glClearBufferfv gl3wProcs.gl.ClearBufferfv
#define glClearBufferiv gl3wProcs.gl.ClearBufferiv
#define glClearBufferuiv gl3wProcs.gl.ClearBufferuiv
#define glClearColor gl3wProcs.gl.ClearColor
#define glClearDepth gl3wProcs.gl.ClearDepth
#define glClearDepthf gl3wProcs.gl.ClearDepthf
#define glClearNamedBufferData gl3wProcs.gl.ClearNamedBufferData
#define glClearNamedBufferSubData gl3wProcs.gl.ClearNamedBufferSubData
#define glClearNamedFramebufferfi gl3wProcs.gl.ClearNamedFramebufferfi
#define glClearNamedFramebufferfv gl3wProcs.gl.ClearNamedFramebufferfv
#define glClearNamedFramebufferiv gl3wProcs.gl.ClearNamedFramebufferiv
#define glClearNamedFramebufferuiv gl3wProcs.gl.ClearNamedFramebufferuiv
#define glClearStencil gl3wProcs.gl.ClearStencil
#define glClearTexImage gl3wProcs.gl.ClearTexImage
#define glClearTexSubImage gl3wProcs.gl.ClearTexSubImage
#define glClientWaitSync gl3wProcs.gl.ClientWaitSync
#define glClipControl gl3wProcs.gl.ClipControl
#define glColorMask gl3wProcs.gl.ColorMask
#define glColorMaski gl3wProcs.gl.ColorMaski
#define glCompileShader gl3wProcs.gl.CompileShader
#define glCompressedTexImage1D gl3wProcs.gl.CompressedTexImage1D
#define glCompressedTexImage2D gl3wProcs.gl.CompressedTexImage2D
#define glCompressedTexImage3D gl3wProcs.gl.CompressedTexImage3D
#define glCompressedTexSubImage1D gl3wProcs.gl.CompressedTexSubImage1D
#define glCompressedTexSubImage2D gl3wProcs.gl.CompressedTexSubImage2D
#define glCompressedTexSubImage3D gl3wProcs.gl.CompressedTexSubImage3D
#define glCompressedTextureSubImage1D gl3wProcs.gl.CompressedTextureSubImage1D
#define glCompressedTextureSubImage2D gl3wProcs.gl.CompressedTextureSubImage2D
#define glCompressedTextureSubImage3D gl3wProcs.gl.CompressedTextureSubImage3D
#define glCopyBufferSubData gl3wProcs.gl.CopyBufferSubData
#define glCopyImageSubData gl3wProcs.gl.CopyImageSubData
#define glCopyNamedBufferSubData gl3wProcs.gl.CopyNamedBufferSubData
#define glCopyTexImage1D gl3wProcs.gl.CopyTexImage1D
#define glCopyTexImage2D gl3wProcs.gl.CopyTexImage2D
#define glCopyTexSubImage1D gl3wProcs.gl.CopyTexSubImage1D
#define glCopyTexSubImage2D gl3wProcs.gl.CopyTexSubImage2D
#define glCopyTexSubImage3D gl3wProcs.gl.CopyTexSubImage3D
#define glCopyTextureSubImage1D gl3wProcs.gl.CopyTextureSubImage1D
#define glCopyTextureSubImage2D gl3wProcs.gl.CopyTextureSubImage2D
#define glCopyTextureSubImage3D gl3wProcs.gl.CopyTextureSubImage3D
#define glCreateBuffers gl3wProcs.gl.CreateBuffers
#define glCreateFramebuffers gl3wProcs.gl.CreateFramebuffers
#define glCreateProgram gl3wProcs.gl.CreateProgram
#define glCreateProgramPipelines gl3wProcs.gl.CreateProgramPipelines
#define glCreateQueries gl3wProcs.gl.CreateQueries
#define glCreateRenderbuffers gl3wProcs.gl.CreateRenderbuffers
#define glCreateSamplers gl3wProcs.gl.CreateSamplers
#define glCreateShader gl3wProcs.gl.CreateShader
#define glCreateShaderProgramv gl3wProcs.gl.CreateShaderProgramv
#define glCreateTextures gl3wProcs.gl.CreateTextures
#define glCreateTransformFeedbacks gl3wProcs.gl.CreateTransformFeedbacks
#define glCreateVertexArrays gl3wProcs.gl.CreateVertexArrays
#define glCullFace gl3wProcs.gl.CullFace
#define glDebugMessageCallback gl3wProcs.gl.DebugMessageCallback
#define glDebugMessageControl gl3wProcs.gl.DebugMessageControl
#define glDebugMessageInsert gl3wProcs.gl.DebugMessageInsert
#define glDeleteBuffers gl3wProcs.gl.DeleteBuffers
#define glDeleteFramebuffers gl3wProcs.gl.DeleteFramebuffers
#define glDeleteProgram gl3wProcs.gl.DeleteProgram
#define glDeleteProgramPipelines gl3wProcs.gl.DeleteProgramPipelines
#define glDeleteQueries gl3wProcs.gl.DeleteQueries
#define glDeleteRenderbuffers gl3wProcs.gl.DeleteRenderbuffers
#define glDeleteSamplers gl3wProcs.gl.DeleteSamplers
#define glDeleteShader gl3wProcs.gl.DeleteShader
#define glDeleteSync gl3wProcs.gl.DeleteSync
#define glDeleteTextures gl3wProcs.gl.DeleteTextures
#define glDeleteTransformFeedbacks gl3wProcs.gl.DeleteTransformFeedbacks
#define glDeleteVertexArrays gl3wProcs.gl.DeleteVertexArrays
#define glDepthFunc gl3wProcs.gl.DepthFunc
#define glDepthMask gl3wProcs.gl.DepthMask
#define glDepthRange gl3wProcs.gl.DepthRange
#define glDepthRangeArrayv gl3wProcs.gl.DepthRangeArrayv
#define glDepthRangeIndexed gl3wProcs.gl.DepthRangeIndexed
#define glDepthRangef gl3wProcs.gl.DepthRangef
#define glDetachShader gl3wProcs.gl.DetachShader
#define glDisable gl3wProcs.gl.Disable
#define glDisableVertexArrayAttrib gl3wProcs.gl.DisableVertexArrayAttrib
#define glDisableVertexAttribArray gl3wProcs.gl.DisableVertexAttribArray
#define glDisablei gl3wProcs.gl.Disablei
#define glDispatchCompute gl3wProcs.gl.DispatchCompute
#define glDispatchComputeIndirect gl3wProcs.gl.DispatchComputeIndirect
#define glDrawArrays gl3wProcs.gl.DrawArrays
#define glDrawArraysIndirect gl3wProcs.gl.DrawArraysIndirect
#define glDrawArraysInstanced gl3wProcs.gl.DrawArraysInstanced
#define glDrawArraysInstancedBaseInstance gl3wProcs.gl.DrawArraysInstancedBaseInstance
#define glDrawBuffer gl3wProcs.gl.DrawBuffer
#define glDrawBuffers gl3wProcs.gl.DrawBuffers
#define glDrawElements gl3wProcs.gl.DrawElements
#define glDrawElementsBaseVertex gl3wProcs.gl.DrawElementsBaseVertex
#define glDrawElementsIndirect gl3wProcs.gl.DrawElementsIndirect
#define glDrawElementsInstanced gl3wProcs.gl.DrawElementsInstanced
#define glDrawElementsInstancedBaseInstance gl3wProcs.gl.DrawElementsInstancedBaseInstance
#define glDrawElementsInstancedBaseVertex gl3wProcs.gl.DrawElementsInstancedBaseVertex
#define glDrawElementsInstancedBaseVertexBaseInstance gl3wProcs.gl.DrawElementsInstancedBaseVertexBaseInstance
#define glDrawRangeElements gl3wProcs.gl.DrawRangeElements
#define glDrawRangeElementsBaseVertex gl3wProcs.gl.DrawRangeElementsBaseVertex
#define glDrawTransformFeedback gl3wProcs.gl.DrawTransformFeedback
#define glDrawTransformFeedbackInstanced gl3wProcs.gl.DrawTransformFeedbackInstanced
#define glDrawTransformFeedbackStream gl3wProcs.gl.DrawTransformFeedbackStream
#define glDrawTransformFeedbackStreamInstanced gl3wProcs.gl.DrawTransformFeedbackStreamInstanced
#define glEnable gl3wProcs.gl.Enable
#define glEnableVertexArrayAttrib gl3wProcs.gl.EnableVertexArrayAttrib
#define glEnableVertexAttribArray gl3wProcs.gl.EnableVertexAttribArray
#define glEnablei gl3wProcs.gl.Enablei
#define glEndConditionalRender gl3wProcs.gl.EndConditionalRender
#define glEndQuery gl3wProcs.gl.EndQuery
#define glEndQueryIndexed gl3wProcs.gl.EndQueryIndexed
#define glEndTransformFeedback gl3wProcs.gl.EndTransformFeedback
#define glFenceSync gl3wProcs.gl.FenceSync
#define glFinish gl3wProcs.gl.Finish
#define glFlush gl3wProcs.gl.Flush
#define glFlushMappedBufferRange gl3wProcs.gl.FlushMappedBufferRange
#define glFlushMappedNamedBufferRange gl3wProcs.gl.FlushMappedNamedBufferRange
#define glFramebufferParameteri gl3wProcs.gl.FramebufferParameteri
#define glFramebufferParameteriMESA gl3wProcs.gl.FramebufferParameteriMESA
#define glFramebufferRenderbuffer gl3wProcs.gl.FramebufferRenderbuffer
#define glFramebufferTexture gl3wProcs.gl.FramebufferTexture
#define glFramebufferTexture1D gl3wProcs.gl.FramebufferTexture1D
#define glFramebufferTexture2D gl3wProcs.gl.FramebufferTexture2D
#define glFramebufferTexture3D gl3wProcs.gl.FramebufferTexture3D
#define glFramebufferTextureLayer gl3wProcs.gl.FramebufferTextureLayer
#define glFrontFace gl3wProcs.gl.FrontFace
#define glGenBuffers gl3wProcs.gl.GenBuffers
#define glGenFramebuffers gl3wProcs.gl.GenFramebuffers
#define glGenProgramPipelines gl3wProcs.gl.GenProgramPipelines
#define glGenQueries gl3wProcs.gl.GenQueries
#define glGenRenderbuffers gl3wProcs.gl.GenRenderbuffers
#define glGenSamplers gl3wProcs.gl.GenSamplers
#define glGenTextures gl3wProcs.gl.GenTextures
#define glGenTransformFeedbacks gl3wProcs.gl.GenTransformFeedbacks
#define glGenVertexArrays gl3wProcs.gl.GenVertexArrays
#define glGenerateMipmap gl3wProcs.gl.GenerateMipmap
#define glGenerateTextureMipmap gl3wProcs.gl.GenerateTextureMipmap
#define glGetActiveAtomicCounterBufferiv gl3wProcs.gl.GetActiveAtomicCounterBufferiv
#define glGetActiveAttrib gl3wProcs.gl.GetActiveAttrib
#define glGetActiveSubroutineName gl3wProcs.gl.GetActiveSubroutineName
#define glGetActiveSubroutineUniformName gl3wProcs.gl.GetActiveSubroutineUniformName
#define glGetActiveSubroutineUniformiv gl3wProcs.gl.GetActiveSubroutineUniformiv
#define glGetActiveUniform gl3wProcs.gl.GetActiveUniform
#define glGetActiveUniformBlockName gl3wProcs.gl.GetActiveUniformBlockName
#define glGetActiveUniformBlockiv gl3wProcs.gl.GetActiveUniformBlockiv
#define glGetActiveUniformName gl3wProcs.gl.GetActiveUniformName
#define glGetActiveUniformsiv gl3wProcs.gl.GetActiveUniformsiv
#define glGetAttachedShaders gl3wProcs.gl.GetAttachedShaders
#define glGetAttribLocation gl3wProcs.gl.GetAttribLocation
#define glGetBooleani_v gl3wProcs.gl.GetBooleani_v
#define glGetBooleanv gl3wProcs.gl.GetBooleanv
#define glGetBufferParameteri64v gl3wProcs.gl.GetBufferParameteri64v
#define glGetBufferParameteriv gl3wProcs.gl.GetBufferParameteriv
#define glGetBufferPointerv gl3wProcs.gl.GetBufferPointerv
#define glGetBufferSubData gl3wProcs.gl.GetBufferSubData
#define glGetCompressedTexImage gl3wProcs.gl.GetCompressedTexImage
#define glGetCompressedTextureImage gl3wProcs.gl.GetCompressedTextureImage
#define glGetCompressedTextureSubImage gl3wProcs.gl.GetCompressedTextureSubImage
#define glGetDebugMessageLog gl3wProcs.gl.GetDebugMessageLog
#define glGetDoublei_v gl3wProcs.gl.GetDoublei_v
#define glGetDoublev gl3wProcs.gl.GetDoublev
#define glGetError gl3wProcs.gl.GetError
#define glGetFloati_v gl3wProcs.gl.GetFloati_v
#define glGetFloatv gl3wProcs.gl.GetFloatv
#define glGetFragDataIndex gl3wProcs.gl.GetFragDataIndex
#define glGetFragDataLocation gl3wProcs.gl.GetFragDataLocation
#define glGetFramebufferAttachmentParameteriv gl3wProcs.gl.GetFramebufferAttachmentParameteriv
#define glGetFramebufferParameteriv gl3wProcs.gl.GetFramebufferParameteriv
#define glGetFramebufferParameterivMESA gl3wProcs.gl.GetFramebufferParameterivMESA
#define glGetGraphicsResetStatus gl3wProcs.gl.GetGraphicsResetStatus
#define glGetInteger64i_v gl3wProcs.gl.GetInteger64i_v
#define glGetInteger64v gl3wProcs.gl.GetInteger64v
#define glGetIntegeri_v gl3wProcs.gl.GetIntegeri_v
#define glGetIntegerv gl3wProcs.gl.GetIntegerv
#define glGetInternalformati64v gl3wProcs.gl.GetInternalformati64v
#define glGetInternalformativ gl3wProcs.gl.GetInternalformativ
#define glGetMultisamplefv gl3wProcs.gl.GetMultisamplefv
#define glGetNamedBufferParameteri64v gl3wProcs.gl.GetNamedBufferParameteri64v
#define glGetNamedBufferParameteriv gl3wProcs.gl.GetNamedBufferParameteriv
#define glGetNamedBufferPointerv gl3wProcs.gl.GetNamedBufferPointerv
#define glGetNamedBufferSubData gl3wProcs.gl.GetNamedBufferSubData
#define glGetNamedFramebufferAttachmentParameteriv gl3wProcs.gl.GetNamedFramebufferAttachmentParameteriv
#define glGetNamedFramebufferParameteriv gl3wProcs.gl.GetNamedFramebufferParameteriv
#define glGetNamedRenderbufferParameteriv gl3wProcs.gl.GetNamedRenderbufferParameteriv
#define glGetObjectLabel gl3wProcs.gl.GetObjectLabel
#define glGetObjectPtrLabel gl3wProcs.gl.GetObjectPtrLabel
#define glGetPointerv gl3wProcs.gl.GetPointerv
#define glGetProgramBinary gl3wProcs.gl.GetProgramBinary
#define glGetProgramInfoLog gl3wProcs.gl.GetProgramInfoLog
#define glGetProgramInterfaceiv gl3wProcs.gl.GetProgramInterfaceiv
#define glGetProgramPipelineInfoLog gl3wProcs.gl.GetProgramPipelineInfoLog
#define glGetProgramPipelineiv gl3wProcs.gl.GetProgramPipelineiv
#define glGetProgramResourceIndex gl3wProcs.gl.GetProgramResourceIndex
#define glGetProgramResourceLocation gl3wProcs.gl.GetProgramResourceLocation
#define glGetProgramResourceLocationIndex gl3wProcs.gl.GetProgramResourceLocationIndex
#define glGetProgramResourceName gl3wProcs.gl.GetProgramResourceName
#define glGetProgramResourceiv gl3wProcs.gl.GetProgramResourceiv
#define glGetProgramStageiv gl3wProcs.gl.GetProgramStageiv
#define glGetProgramiv gl3wProcs.gl.GetProgramiv
#define glGetQueryBufferObjecti64v gl3wProcs.gl.GetQueryBufferObjecti64v
#define glGetQueryBufferObjectiv gl3wProcs.gl.GetQueryBufferObjectiv
#define glGetQueryBufferObjectui64v gl3wProcs.gl.GetQueryBufferObjectui64v
#define glGetQueryBufferObjectuiv gl3wProcs.gl.GetQueryBufferObjectuiv
#define glGetQueryIndexediv gl3wProcs.gl.GetQueryIndexediv
#define glGetQueryObjecti64v gl3wProcs.gl.GetQueryObjecti64v
#define glGetQueryObjectiv gl3wProcs.gl.GetQueryObjectiv
#define glGetQueryObjectui64v gl3wProcs.gl.GetQueryObjectui64v
#define glGetQueryObjectuiv gl3wProcs.gl.GetQueryObjectuiv
#define glGetQueryiv gl3wProcs.gl.GetQueryiv
#define glGetRenderbufferParameteriv gl3wProcs.gl.GetRenderbufferParameteriv
#define glGetSamplerParameterIiv gl3wProcs.gl.GetSamplerParameterIiv
#define glGetSamplerParameterIuiv gl3wProcs.gl.GetSamplerParameterIuiv
#define glGetSamplerParameterfv gl3wProcs.gl.GetSamplerParameterfv
#define glGetSamplerParameteriv gl3wProcs.gl.GetSamplerParameteriv
#define glGetShaderInfoLog gl3wProcs.gl.GetShaderInfoLog
#define glGetShaderPrecisionFormat gl3wProcs.gl.GetShaderPrecisionFormat
#define glGetShaderSource gl3wProcs.gl.GetShaderSource
#define glGetShaderiv gl3wProcs.gl.GetShaderiv
#define glGetString gl3wProcs.gl.GetString
#define glGetStringi gl3wProcs.gl.GetStringi
#define glGetSubroutineIndex gl3wProcs.gl.GetSubroutineIndex
#define glGetSubroutineUniformLocation gl3wProcs.gl.GetSubroutineUniformLocation
#define glGetSynciv gl3wProcs.gl.GetSynciv
#define glGetTexImage gl3wProcs.gl.GetTexImage
#define glGetTexLevelParameterfv gl3wProcs.gl.GetTexLevelParameterfv
#define glGetTexLevelParameteriv gl3wProcs.gl.GetTexLevelParameteriv
#define glGetTexParameterIiv gl3wProcs.gl.GetTexParameterIiv
#define glGetTexParameterIuiv gl3wProcs.gl.GetTexParameterIuiv
#define glGetTexParameterfv gl3wProcs.gl.GetTexParameterfv
#define glGetTexParameteriv gl3wProcs.gl.GetTexParameteriv
#define glGetTextureImage gl3wProcs.gl.GetTextureImage
#define glGetTextureLevelParameterfv gl3wProcs.gl.GetTextureLevelParameterfv
#define glGetTextureLevelParameteriv gl3wProcs.gl.GetTextureLevelParameteriv
#define glGetTextureParameterIiv gl3wProcs.gl.GetTextureParameterIiv
#define glGetTextureParameterIuiv gl3wProcs.gl.GetTextureParameterIuiv
#define glGetTextureParameterfv gl3wProcs.gl.GetTextureParameterfv
#define glGetTextureParameteriv gl3wProcs.gl.GetTextureParameteriv
#define glGetTextureSubImage gl3wProcs.gl.GetTextureSubImage
#define glGetTransformFeedbackVarying gl3wProcs.gl.GetTransformFeedbackVarying
#define glGetTransformFeedbacki64_v gl3wProcs.gl.GetTransformFeedbacki64_v
#define glGetTransformFeedbacki_v gl3wProcs.gl.GetTransformFeedbacki_v
#define glGetTransformFeedbackiv gl3wProcs.gl.GetTransformFeedbackiv
#define glGetUniformBlockIndex gl3wProcs.gl.GetUniformBlockIndex
#define glGetUniformIndices gl3wProcs.gl.GetUniformIndices
#define glGetUniformLocation gl3wProcs.gl.GetUniformLocation
#define glGetUniformSubroutineuiv gl3wProcs.gl.GetUniformSubroutineuiv
#define glGetUniformdv gl3wProcs.gl.GetUniformdv
#define glGetUniformfv gl3wProcs.gl.GetUniformfv
#define glGetUniformiv gl3wProcs.gl.GetUniformiv
#define glGetUniformuiv gl3wProcs.gl.GetUniformuiv
#define glGetVertexArrayIndexed64iv gl3wProcs.gl.GetVertexArrayIndexed64iv
#define glGetVertexArrayIndexediv gl3wProcs.gl.GetVertexArrayIndexediv
#define glGetVertexArrayiv gl3wProcs.gl.GetVertexArrayiv
#define glGetVertexAttribIiv gl3wProcs.gl.GetVertexAttribIiv
#define glGetVertexAttribIuiv gl3wProcs.gl.GetVertexAttribIuiv
#define glGetVertexAttribLdv gl3wProcs.gl.GetVertexAttribLdv
#define glGetVertexAttribPointerv gl3wProcs.gl.GetVertexAttribPointerv
#define glGetVertexAttribdv gl3wProcs.gl.GetVertexAttribdv
#define glGetVertexAttribfv gl3wProcs.gl.GetVertexAttribfv
#define glGetVertexAttribiv gl3wProcs.gl.GetVertexAttribiv
#define glGetnCompressedTexImage gl3wProcs.gl.GetnCompressedTexImage
#define glGetnTexImage gl3wProcs.gl.GetnTexImage
#define glGetnUniformdv gl3wProcs.gl.GetnUniformdv
#define glGetnUniformfv gl3wProcs.gl.GetnUniformfv
#define glGetnUniformiv gl3wProcs.gl.GetnUniformiv
#define glGetnUniformuiv gl3wProcs.gl.GetnUniformuiv
#define glHint gl3wProcs.gl.Hint
#define glInvalidateBufferData gl3wProcs.gl.InvalidateBufferData
#define glInvalidateBufferSubData gl3wProcs.gl.InvalidateBufferSubData
#define glInvalidateFramebuffer gl3wProcs.gl.InvalidateFramebuffer
#define glInvalidateNamedFramebufferData gl3wProcs.gl.InvalidateNamedFramebufferData
#define glInvalidateNamedFramebufferSubData gl3wProcs.gl.InvalidateNamedFramebufferSubData
#define glInvalidateSubFramebuffer gl3wProcs.gl.InvalidateSubFramebuffer
#define glInvalidateTexImage gl3wProcs.gl.InvalidateTexImage
#define glInvalidateTexSubImage gl3wProcs.gl.InvalidateTexSubImage
#define glIsBuffer gl3wProcs.gl.IsBuffer
#define glIsEnabled gl3wProcs.gl.IsEnabled
#define glIsEnabledi gl3wProcs.gl.IsEnabledi
#define glIsFramebuffer gl3wProcs.gl.IsFramebuffer
#define glIsProgram gl3wProcs.gl.IsProgram
#define glIsProgramPipeline gl3wProcs.gl.IsProgramPipeline
#define glIsQuery gl3wProcs.gl.IsQuery
#define glIsRenderbuffer gl3wProcs.gl.IsRenderbuffer
#define glIsSampler gl3wProcs.gl.IsSampler
#define glIsShader gl3wProcs.gl.IsShader
#define glIsSync gl3wProcs.gl.IsSync
#define glIsTexture gl3wProcs.gl.IsTexture
#define glIsTransformFeedback gl3wProcs.gl.IsTransformFeedback
#define glIsVertexArray gl3wProcs.gl.IsVertexArray
#define glLineWidth gl3wProcs.gl.LineWidth
#define glLinkProgram gl3wProcs.gl.LinkProgram
#define glLogicOp gl3wProcs.gl.LogicOp
#define glMapBuffer gl3wProcs.gl.MapBuffer
#define glMapBufferRange gl3wProcs.gl.MapBufferRange
#define glMapNamedBuffer gl3wProcs.gl.MapNamedBuffer
#define glMapNamedBufferRange gl3wProcs.gl.MapNamedBufferRange
#define glMemoryBarrier gl3wProcs.gl.MemoryBarrier
#define glMemoryBarrierByRegion gl3wProcs.gl.MemoryBarrierByRegion
#define glMinSampleShading gl3wProcs.gl.MinSampleShading
#define glMultiDrawArrays gl3wProcs.gl.MultiDrawArrays
#define glMultiDrawArraysIndirect gl3wProcs.gl.MultiDrawArraysIndirect
#define glMultiDrawArraysIndirectCount gl3wProcs.gl.MultiDrawArraysIndirectCount
#define glMultiDrawElements gl3wProcs.gl.MultiDrawElements
#define glMultiDrawElementsBaseVertex gl3wProcs.gl.MultiDrawElementsBaseVertex
#define glMultiDrawElementsIndirect gl3wProcs.gl.MultiDrawElementsIndirect
#define glMultiDrawElementsIndirectCount gl3wProcs.gl.MultiDrawElementsIndirectCount
#define glNamedBufferData gl3wProcs.gl.NamedBufferData
#define glNamedBufferStorage gl3wProcs.gl.NamedBufferStorage
#define glNamedBufferSubData gl3wProcs.gl.NamedBufferSubData
#define glNamedFramebufferDrawBuffer gl3wProcs.gl.NamedFramebufferDrawBuffer
#define glNamedFramebufferDrawBuffers gl3wProcs.gl.NamedFramebufferDrawBuffers
#define glNamedFramebufferParameteri gl3wProcs.gl.NamedFramebufferParameteri
#define glNamedFramebufferReadBuffer gl3wProcs.gl.NamedFramebufferReadBuffer
#define glNamedFramebufferRenderbuffer gl3wProcs.gl.NamedFramebufferRenderbuffer
#define glNamedFramebufferTexture gl3wProcs.gl.NamedFramebufferTexture
#define glNamedFramebufferTextureLayer gl3wProcs.gl.NamedFramebufferTextureLayer
#define glNamedRenderbufferStorage gl3wProcs.gl.NamedRenderbufferStorage
#define glNamedRenderbufferStorageMultisample gl3wProcs.gl.NamedRenderbufferStorageMultisample
#define glObjectLabel gl3wProcs.gl.ObjectLabel
#define glObjectPtrLabel gl3wProcs.gl.ObjectPtrLabel
#define glPatchParameterfv gl3wProcs.gl.PatchParameterfv
#define glPatchParameteri gl3wProcs.gl.PatchParameteri
#define glPauseTransformFeedback gl3wProcs.gl.PauseTransformFeedback
#define glPixelStoref gl3wProcs.gl.PixelStoref
#define glPixelStorei gl3wProcs.gl.PixelStorei
#define glPointParameterf gl3wProcs.gl.PointParameterf
#define glPointParameterfv gl3wProcs.gl.PointParameterfv
#define glPointParameteri gl3wProcs.gl.PointParameteri
#define glPointParameteriv gl3wProcs.gl.PointParameteriv
#define glPointSize gl3wProcs.gl.PointSize
#define glPolygonMode gl3wProcs.gl.PolygonMode
#define glPolygonOffset gl3wProcs.gl.PolygonOffset
#define glPolygonOffsetClamp gl3wProcs.gl.PolygonOffsetClamp
#define glPopDebugGroup gl3wProcs.gl.PopDebugGroup
#define glPrimitiveRestartIndex gl3wProcs.gl.PrimitiveRestartIndex
#define glProgramBinary gl3wProcs.gl.ProgramBinary
#define glProgramParameteri gl3wProcs.gl.ProgramParameteri
#define glProgramUniform1d gl3wProcs.gl.ProgramUniform1d
#define glProgramUniform1dv gl3wProcs.gl.ProgramUniform1dv
#define glProgramUniform1f gl3wProcs.gl.ProgramUniform1f
#define glProgramUniform1fv gl3wProcs.gl.ProgramUniform1fv
#define glProgramUniform1i gl3wProcs.gl.ProgramUniform1i
#define glProgramUniform1iv gl3wProcs.gl.ProgramUniform1iv
#define glProgramUniform1ui gl3wProcs.gl.ProgramUniform1ui
#define glProgramUniform1uiv gl3wProcs.gl.ProgramUniform1uiv
#define glProgramUniform2d gl3wProcs.gl.ProgramUniform2d
#define glProgramUniform2dv gl3wProcs.gl.ProgramUniform2dv
#define glProgramUniform2f gl3wProcs.gl.ProgramUniform2f
#define glProgramUniform2fv gl3wProcs.gl.ProgramUniform2fv
#define glProgramUniform2i gl3wProcs.gl.ProgramUniform2i
#define glProgramUniform2iv gl3wProcs.gl.ProgramUniform2iv
#define glProgramUniform2ui gl3wProcs.gl.ProgramUniform2ui
#define glProgramUniform2uiv gl3wProcs.gl.ProgramUniform2uiv
#define glProgramUniform3d gl3wProcs.gl.ProgramUniform3d
#define glProgramUniform3dv gl3wProcs.gl.ProgramUniform3dv
#define glProgramUniform3f gl3wProcs.gl.ProgramUniform3f
#define glProgramUniform3fv gl3wProcs.gl.ProgramUniform3fv
#define glProgramUniform3i gl3wProcs.gl.ProgramUniform3i
#define glProgramUniform3iv gl3wProcs.gl.ProgramUniform3iv
#define glProgramUniform3ui gl3wProcs.gl.ProgramUniform3ui
#define glProgramUniform3uiv gl3wProcs.gl.ProgramUniform3uiv
#define glProgramUniform4d gl3wProcs.gl.ProgramUniform4d
#define glProgramUniform4dv gl3wProcs.gl.ProgramUniform4dv
#define glProgramUniform4f gl3wProcs.gl.ProgramUniform4f
#define glProgramUniform4fv gl3wProcs.gl.ProgramUniform4fv
#define glProgramUniform4i gl3wProcs.gl.ProgramUniform4i
#define glProgramUniform4iv gl3wProcs.gl.ProgramUniform4iv
#define glProgramUniform4ui gl3wProcs.gl.ProgramUniform4ui
#define glProgramUniform4uiv gl3wProcs.gl.ProgramUniform4uiv
#define glProgramUniformMatrix2dv gl3wProcs.gl.ProgramUniformMatrix2dv
#define glProgramUniformMatrix2fv gl3wProcs.gl.ProgramUniformMatrix2fv
#define glProgramUniformMatrix2x3dv gl3wProcs.gl.ProgramUniformMatrix2x3dv
#define glProgramUniformMatrix2x3fv gl3wProcs.gl.ProgramUniformMatrix2x3fv
#define glProgramUniformMatrix2x4dv gl3wProcs.gl.ProgramUniformMatrix2x4dv
#define glProgramUniformMatrix2x4fv gl3wProcs.gl.ProgramUniformMatrix2x4fv
#define glProgramUniformMatrix3dv gl3wProcs.gl.ProgramUniformMatrix3dv
#define glProgramUniformMatrix3fv gl3wProcs.gl.ProgramUniformMatrix3fv
#define glProgramUniformMatrix3x2dv gl3wProcs.gl.ProgramUniformMatrix3x2dv
#define glProgramUniformMatrix3x2fv gl3wProcs.gl.ProgramUniformMatrix3x2fv
#define glProgramUniformMatrix3x4dv gl3wProcs.gl.ProgramUniformMatrix3x4dv
#define glProgramUniformMatrix3x4fv gl3wProcs.gl.ProgramUniformMatrix3x4fv
#define glProgramUniformMatrix4dv gl3wProcs.gl.ProgramUniformMatrix4dv
#define glProgramUniformMatrix4fv gl3wProcs.gl.ProgramUniformMatrix4fv
#define glProgramUniformMatrix4x2dv gl3wProcs.gl.ProgramUniformMatrix4x2dv
#define glProgramUniformMatrix4x2fv gl3wProcs.gl.ProgramUniformMatrix4x2fv
#define glProgramUniformMatrix4x3dv gl3wProcs.gl.ProgramUniformMatrix4x3dv
#define glProgramUniformMatrix4x3fv gl3wProcs.gl.ProgramUniformMatrix4x3fv
#define glProvokingVertex gl3wProcs.gl.ProvokingVertex
#define glPushDebugGroup gl3wProcs.gl.PushDebugGroup
#define glQueryCounter gl3wProcs.gl.QueryCounter
#define glReadBuffer gl3wProcs.gl.ReadBuffer
#define glReadPixels gl3wProcs.gl.ReadPixels
#define glReadnPixels gl3wProcs.gl.ReadnPixels
#define glReleaseShaderCompiler gl3wProcs.gl.ReleaseShaderCompiler
#define glRenderbufferStorage gl3wProcs.gl.RenderbufferStorage
#define glRenderbufferStorageMultisample gl3wProcs.gl.RenderbufferStorageMultisample
#define glResumeTransformFeedback gl3wProcs.gl.ResumeTransformFeedback
#define glSampleCoverage gl3wProcs.gl.SampleCoverage
#define glSampleMaski gl3wProcs.gl.SampleMaski
#define glSamplerParameterIiv gl3wProcs.gl.SamplerParameterIiv
#define glSamplerParameterIuiv gl3wProcs.gl.SamplerParameterIuiv
#define glSamplerParameterf gl3wProcs.gl.SamplerParameterf
#define glSamplerParameterfv gl3wProcs.gl.SamplerParameterfv
#define glSamplerParameteri gl3wProcs.gl.SamplerParameteri
#define glSamplerParameteriv gl3wProcs.gl.SamplerParameteriv
#define glScissor gl3wProcs.gl.Scissor
#define glScissorArrayv gl3wProcs.gl.ScissorArrayv
#define glScissorIndexed gl3wProcs.gl.ScissorIndexed
#define glScissorIndexedv gl3wProcs.gl.ScissorIndexedv
#define glShaderBinary gl3wProcs.gl.ShaderBinary
#define glShaderSource gl3wProcs.gl.ShaderSource
#define glShaderStorageBlockBinding gl3wProcs.gl.ShaderStorageBlockBinding
#define glSpecializeShader gl3wProcs.gl.SpecializeShader
#define glStencilFunc gl3wProcs.gl.StencilFunc
#define glStencilFuncSeparate gl3wProcs.gl.StencilFuncSeparate
#define glStencilMask gl3wProcs.gl.StencilMask
#define glStencilMaskSeparate gl3wProcs.gl.StencilMaskSeparate
#define glStencilOp gl3wProcs.gl.StencilOp
#define glStencilOpSeparate gl3wProcs.gl.StencilOpSeparate
#define glTexBuffer gl3wProcs.gl.TexBuffer
#define glTexBufferRange gl3wProcs.gl.TexBufferRange
#define glTexImage1D gl3wProcs.gl.TexImage1D
#define glTexImage2D gl3wProcs.gl.TexImage2D
#define glTexImage2DMultisample gl3wProcs.gl.TexImage2DMultisample
#define glTexImage3D gl3wProcs.gl.TexImage3D
#define glTexImage3DMultisample gl3wProcs.gl.TexImage3DMultisample
#define glTexParameterIiv gl3wProcs.gl.TexParameterIiv
#define glTexParameterIuiv gl3wProcs.gl.TexParameterIuiv
#define glTexParameterf gl3wProcs.gl.TexParameterf
#define glTexParameterfv gl3wProcs.gl.TexParameterfv
#define glTexParameteri gl3wProcs.gl.TexParameteri
#define glTexParameteriv gl3wProcs.gl.TexParameteriv
#define glTexStorage1D gl3wProcs.gl.TexStorage1D
#define glTexStorage2D gl3wProcs.gl.TexStorage2D
#define glTexStorage2DMultisample gl3wProcs.gl.TexStorage2DMultisample
#define glTexStorage3D gl3wProcs.gl.TexStorage3D
#define glTexStorage3DMultisample gl3wProcs.gl.TexStorage3DMultisample
#define glTexSubImage1D gl3wProcs.gl.TexSubImage1D
#define glTexSubImage2D gl3wProcs.gl.TexSubImage2D
#define glTexSubImage3D gl3wProcs.gl.TexSubImage3D
#define glTextureBarrier gl3wProcs.gl.TextureBarrier
#define glTextureBuffer gl3wProcs.gl.TextureBuffer
#define glTextureBufferRange gl3wProcs.gl.TextureBufferRange
#define glTextureParameterIiv gl3wProcs.gl.TextureParameterIiv
#define glTextureParameterIuiv gl3wProcs.gl.TextureParameterIuiv
#define glTextureParameterf gl3wProcs.gl.TextureParameterf
#define glTextureParameterfv gl3wProcs.gl.TextureParameterfv
#define glTextureParameteri gl3wProcs.gl.TextureParameteri
#define glTextureParameteriv gl3wProcs.gl.TextureParameteriv
#define glTextureStorage1D gl3wProcs.gl.TextureStorage1D
#define glTextureStorage2D gl3wProcs.gl.TextureStorage2D
#define glTextureStorage2DMultisample gl3wProcs.gl.TextureStorage2DMultisample
#define glTextureStorage3D gl3wProcs.gl.TextureStorage3D
#define glTextureStorage3DMultisample gl3wProcs.gl.TextureStorage3DMultisample
#define glTextureSubImage1D gl3wProcs.gl.TextureSubImage1D
#define glTextureSubImage2D gl3wProcs.gl.TextureSubImage2D
#define glTextureSubImage3D gl3wProcs.gl.TextureSubImage3D
#define glTextureView gl3wProcs.gl.TextureView
#define glTransformFeedbackBufferBase gl3wProcs.gl.TransformFeedbackBufferBase
#define glTransformFeedbackBufferRange gl3wProcs.gl.TransformFeedbackBufferRange
#define glTransformFeedbackVaryings gl3wProcs.gl.TransformFeedbackVaryings
#define glUniform1d gl3wProcs.gl.Uniform1d
#define glUniform1dv gl3wProcs.gl.Uniform1dv
#define glUniform1f gl3wProcs.gl.Uniform1f
#define glUniform1fv gl3wProcs.gl.Uniform1fv
#define glUniform1i gl3wProcs.gl.Uniform1i
#define glUniform1iv gl3wProcs.gl.Uniform1iv
#define glUniform1ui gl3wProcs.gl.Uniform1ui
#define glUniform1uiv gl3wProcs.gl.Uniform1uiv
#define glUniform2d gl3wProcs.gl.Uniform2d
#define glUniform2dv gl3wProcs.gl.Uniform2dv
#define glUniform2f gl3wProcs.gl.Uniform2f
#define glUniform2fv gl3wProcs.gl.Uniform2fv
#define glUniform2i gl3wProcs.gl.Uniform2i
#define glUniform2iv gl3wProcs.gl.Uniform2iv
#define glUniform2ui gl3wProcs.gl.Uniform2ui
#define glUniform2uiv gl3wProcs.gl.Uniform2uiv
#define glUniform3d gl3wProcs.gl.Uniform3d
#define glUniform3dv gl3wProcs.gl.Uniform3dv
#define glUniform3f gl3wProcs.gl.Uniform3f
#define glUniform3fv gl3wProcs.gl.Uniform3fv
#define glUniform3i gl3wProcs.gl.Uniform3i
#define glUniform3iv gl3wProcs.gl.Uniform3iv
#define glUniform3ui gl3wProcs.gl.Uniform3ui
#define glUniform3uiv gl3wProcs.gl.Uniform3uiv
#define glUniform4d gl3wProcs.gl.Uniform4d
#define glUniform4dv gl3wProcs.gl.Uniform4dv
#define glUniform4f gl3wProcs.gl.Uniform4f
#define glUniform4fv gl3wProcs.gl.Uniform4fv
#define glUniform4i gl3wProcs.gl.Uniform4i
#define glUniform4iv gl3wProcs.gl.Uniform4iv
#define glUniform4ui gl3wProcs.gl.Uniform4ui
#define glUniform4uiv gl3wProcs.gl.Uniform4uiv
#define glUniformBlockBinding gl3wProcs.gl.UniformBlockBinding
#define glUniformMatrix2dv gl3wProcs.gl.UniformMatrix2dv
#define glUniformMatrix2fv gl3wProcs.gl.UniformMatrix2fv
#define glUniformMatrix2x3dv gl3wProcs.gl.UniformMatrix2x3dv
#define glUniformMatrix2x3fv gl3wProcs.gl.UniformMatrix2x3fv
#define glUniformMatrix2x4dv gl3wProcs.gl.UniformMatrix2x4dv
#define glUniformMatrix2x4fv gl3wProcs.gl.UniformMatrix2x4fv
#define glUniformMatrix3dv gl3wProcs.gl.UniformMatrix3dv
#define glUniformMatrix3fv gl3wProcs.gl.UniformMatrix3fv
#define glUniformMatrix3x2dv gl3wProcs.gl.UniformMatrix3x2dv
#define glUniformMatrix3x2fv gl3wProcs.gl.UniformMatrix3x2fv
#define glUniformMatrix3x4dv gl3wProcs.gl.UniformMatrix3x4dv
#define glUniformMatrix3x4fv gl3wProcs.gl.UniformMatrix3x4fv
#define glUniformMatrix4dv gl3wProcs.gl.UniformMatrix4dv
#define glUniformMatrix4fv gl3wProcs.gl.UniformMatrix4fv
#define glUniformMatrix4x2dv gl3wProcs.gl.UniformMatrix4x2dv
#define glUniformMatrix4x2fv gl3wProcs.gl.UniformMatrix4x2fv
#define glUniformMatrix4x3dv gl3wProcs.gl.UniformMatrix4x3dv
#define glUniformMatrix4x3fv gl3wProcs.gl.UniformMatrix4x3fv
#define glUniformSubroutinesuiv gl3wProcs.gl.UniformSubroutinesuiv
#define glUnmapBuffer gl3wProcs.gl.UnmapBuffer
#define glUnmapNamedBuffer gl3wProcs.gl.UnmapNamedBuffer
#define glUseProgram gl3wProcs.gl.UseProgram
#define glUseProgramStages gl3wProcs.gl.UseProgramStages
#define glValidateProgram gl3wProcs.gl.ValidateProgram
#define glValidateProgramPipeline gl3wProcs.gl.ValidateProgramPipeline
#define glVertexArrayAttribBinding gl3wProcs.gl.VertexArrayAttribBinding
#define glVertexArrayAttribFormat gl3wProcs.gl.VertexArrayAttribFormat
#define glVertexArrayAttribIFormat gl3wProcs.gl.VertexArrayAttribIFormat
#define glVertexArrayAttribLFormat gl3wProcs.gl.VertexArrayAttribLFormat
#define glVertexArrayBindingDivisor gl3wProcs.gl.VertexArrayBindingDivisor
#define glVertexArrayElementBuffer gl3wProcs.gl.VertexArrayElementBuffer
#define glVertexArrayVertexBuffer gl3wProcs.gl.VertexArrayVertexBuffer
#define glVertexArrayVertexBuffers gl3wProcs.gl.VertexArrayVertexBuffers
#define glVertexAttrib1d gl3wProcs.gl.VertexAttrib1d
#define glVertexAttrib1dv gl3wProcs.gl.VertexAttrib1dv
#define glVertexAttrib1f gl3wProcs.gl.VertexAttrib1f
#define glVertexAttrib1fv gl3wProcs.gl.VertexAttrib1fv
#define glVertexAttrib1s gl3wProcs.gl.VertexAttrib1s
#define glVertexAttrib1sv gl3wProcs.gl.VertexAttrib1sv
#define glVertexAttrib2d gl3wProcs.gl.VertexAttrib2d
#define glVertexAttrib2dv gl3wProcs.gl.VertexAttrib2dv
#define glVertexAttrib2f gl3wProcs.gl.VertexAttrib2f
#define glVertexAttrib2fv gl3wProcs.gl.VertexAttrib2fv
#define glVertexAttrib2s gl3wProcs.gl.VertexAttrib2s
#define glVertexAttrib2sv gl3wProcs.gl.VertexAttrib2sv
#define glVertexAttrib3d gl3wProcs.gl.VertexAttrib3d
#define glVertexAttrib3dv gl3wProcs.gl.VertexAttrib3dv
#define glVertexAttrib3f gl3wProcs.gl.VertexAttrib3f
#define glVertexAttrib3fv gl3wProcs.gl.VertexAttrib3fv
#define glVertexAttrib3s gl3wProcs.gl.VertexAttrib3s
#define glVertexAttrib3sv gl3wProcs.gl.VertexAttrib3sv
#define glVertexAttrib4Nbv gl3wProcs.gl.VertexAttrib4Nbv
#define glVertexAttrib4Niv gl3wProcs.gl.VertexAttrib4Niv
#define glVertexAttrib4Nsv gl3wProcs.gl.VertexAttrib4Nsv
#define glVertexAttrib4Nub gl3wProcs.gl.VertexAttrib4Nub
#define glVertexAttrib4Nubv gl3wProcs.gl.VertexAttrib4Nubv
#define glVertexAttrib4Nuiv gl3wProcs.gl.VertexAttrib4Nuiv
#define glVertexAttrib4Nusv gl3wProcs.gl.VertexAttrib4Nusv
#define glVertexAttrib4bv gl3wProcs.gl.VertexAttrib4bv
#define glVertexAttrib4d gl3wProcs.gl.VertexAttrib4d
#define glVertexAttrib4dv gl3wProcs.gl.VertexAttrib4dv
#define glVertexAttrib4f gl3wProcs.gl.VertexAttrib4f
#define glVertexAttrib4fv gl3wProcs.gl.VertexAttrib4fv
#define glVertexAttrib4iv gl3wProcs.gl.VertexAttrib4iv
#define glVertexAttrib4s gl3wProcs.gl.VertexAttrib4s
#define glVertexAttrib4sv gl3wProcs.gl.VertexAttrib4sv
#define glVertexAttrib4ubv gl3wProcs.gl.VertexAttrib4ubv
#define glVertexAttrib4uiv gl3wProcs.gl.VertexAttrib4uiv
#define glVertexAttrib4usv gl3wProcs.gl.VertexAttrib4usv
#define glVertexAttribBinding gl3wProcs.gl.VertexAttribBinding
#define glVertexAttribDivisor gl3wProcs.gl.VertexAttribDivisor
#define glVertexAttribFormat gl3wProcs.gl.VertexAttribFormat
#define glVertexAttribI1i gl3wProcs.gl.VertexAttribI1i
#define glVertexAttribI1iv gl3wProcs.gl.VertexAttribI1iv
#define glVertexAttribI1ui gl3wProcs.gl.VertexAttribI1ui
#define glVertexAttribI1uiv gl3wProcs.gl.VertexAttribI1uiv
#define glVertexAttribI2i gl3wProcs.gl.VertexAttribI2i
#define glVertexAttribI2iv gl3wProcs.gl.VertexAttribI2iv
#define glVertexAttribI2ui gl3wProcs.gl.VertexAttribI2ui
#define glVertexAttribI2uiv gl3wProcs.gl.VertexAttribI2uiv
#define glVertexAttribI3i gl3wProcs.gl.VertexAttribI3i
#define glVertexAttribI3iv gl3wProcs.gl.VertexAttribI3iv
#define glVertexAttribI3ui gl3wProcs.gl.VertexAttribI3ui
#define glVertexAttribI3uiv gl3wProcs.gl.VertexAttribI3uiv
#define glVertexAttribI4bv gl3wProcs.gl.VertexAttribI4bv
#define glVertexAttribI4i gl3wProcs.gl.VertexAttribI4i
#define glVertexAttribI4iv gl3wProcs.gl.VertexAttribI4iv
#define glVertexAttribI4sv gl3wProcs.gl.VertexAttribI4sv
#define glVertexAttribI4ubv gl3wProcs.gl.VertexAttribI4ubv
#define glVertexAttribI4ui gl3wProcs.gl.VertexAttribI4ui
#define glVertexAttribI4uiv gl3wProcs.gl.VertexAttribI4uiv
#define glVertexAttribI4usv gl3wProcs.gl.VertexAttribI4usv
#define glVertexAttribIFormat gl3wProcs.gl.VertexAttribIFormat
#define glVertexAttribIPointer gl3wProcs.gl.VertexAttribIPointer
#define glVertexAttribL1d gl3wProcs.gl.VertexAttribL1d
#define glVertexAttribL1dv gl3wProcs.gl.VertexAttribL1dv
#define glVertexAttribL2d gl3wProcs.gl.VertexAttribL2d
#define glVertexAttribL2dv gl3wProcs.gl.VertexAttribL2dv
#define glVertexAttribL3d gl3wProcs.gl.VertexAttribL3d
#define glVertexAttribL3dv gl3wProcs.gl.VertexAttribL3dv
#define glVertexAttribL4d gl3wProcs.gl.VertexAttribL4d
#define glVertexAttribL4dv gl3wProcs.gl.VertexAttribL4dv
#define glVertexAttribLFormat gl3wProcs.gl.VertexAttribLFormat
#define glVertexAttribLPointer gl3wProcs.gl.VertexAttribLPointer
#define glVertexAttribP1ui gl3wProcs.gl.VertexAttribP1ui
#define glVertexAttribP1uiv gl3wProcs.gl.VertexAttribP1uiv
#define glVertexAttribP2ui gl3wProcs.gl.VertexAttribP2ui
#define glVertexAttribP2uiv gl3wProcs.gl.VertexAttribP2uiv
#define glVertexAttribP3ui gl3wProcs.gl.VertexAttribP3ui
#define glVertexAttribP3uiv gl3wProcs.gl.VertexAttribP3uiv
#define glVertexAttribP4ui gl3wProcs.gl.VertexAttribP4ui
#define glVertexAttribP4uiv gl3wProcs.gl.VertexAttribP4uiv
#define glVertexAttribPointer gl3wProcs.gl.VertexAttribPointer
#define glVertexBindingDivisor gl3wProcs.gl.VertexBindingDivisor
#define glViewport gl3wProcs.gl.Viewport
#define glViewportArrayv gl3wProcs.gl.ViewportArrayv
#define glViewportIndexedf gl3wProcs.gl.ViewportIndexedf
#define glViewportIndexedfv gl3wProcs.gl.ViewportIndexedfv
#define glWaitSync gl3wProcs.gl.WaitSync
#ifdef __cplusplus
}
#endif
#endif
================================================
FILE: external/include/GL/glcorearb.h
================================================
#ifndef __gl_glcorearb_h_
#define __gl_glcorearb_h_ 1
#ifdef __cplusplus
extern "C" {
#endif
/*
** Copyright 2013-2020 The Khronos Group Inc.
** SPDX-License-Identifier: MIT
**
** This header is generated from the Khronos OpenGL / OpenGL ES XML
** API Registry. The current version of the Registry, generator scripts
** used to make the header, and the header can be found at
** https://github.com/KhronosGroup/OpenGL-Registry
*/
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN 1
#endif
#include <windows.h>
#endif
#ifndef APIENTRY
#define APIENTRY
#endif
#ifndef APIENTRYP
#define APIENTRYP APIENTRY *
#endif
#ifndef GLAPI
#define GLAPI extern
#endif
/* glcorearb.h is for use with OpenGL core profile implementations.
** It should should be placed in the same directory as gl.h and
** included as <GL/glcorearb.h>.
**
** glcorearb.h includes only APIs in the latest OpenGL core profile
** implementation together with APIs in newer ARB extensions which
** can be supported by the core profile. It does not, and never will
** include functionality removed from the core profile, such as
** fixed-function vertex and fragment processing.
**
** Do not #include both <GL/glcorearb.h> and either of <GL/gl.h> or
** <GL/glext.h> in the same source file.
*/
/* Generated C header for:
* API: gl
* Profile: core
* Versions considered: .*
* Versions emitted: .*
* Default extensions included: glcore
* Additional extensions included: _nomatch_^
* Extensions removed: _nomatch_^
*/
#ifndef GL_VERSION_1_0
#define GL_VERSION_1_0 1
typedef void GLvoid;
typedef unsigned int GLenum;
#include <KHR/khrplatform.h>
typedef khronos_float_t GLfloat;
typedef int GLint;
typedef int GLsizei;
typedef unsigned int GLbitfield;
typedef double GLdouble;
typedef unsigned int GLuint;
typedef unsigned char GLboolean;
typedef khronos_uint8_t GLubyte;
#define GL_DEPTH_BUFFER_BIT 0x00000100
#define GL_STENCIL_BUFFER_BIT 0x00000400
#define GL_COLOR_BUFFER_BIT 0x00004000
#define GL_FALSE 0
#define GL_TRUE 1
#define GL_POINTS 0x0000
#define GL_LINES 0x0001
#define GL_LINE_LOOP 0x0002
#define GL_LINE_STRIP 0x0003
#define GL_TRIANGLES 0x0004
#define GL_TRIANGLE_STRIP 0x0005
#define GL_TRIANGLE_FAN 0x0006
#define GL_QUADS 0x0007
#define GL_NEVER 0x0200
#define GL_LESS 0x0201
#define GL_EQUAL 0x0202
#define GL_LEQUAL 0x0203
#define GL_GREATER 0x0204
#define GL_NOTEQUAL 0x0205
#define GL_GEQUAL 0x0206
#define GL_ALWAYS 0x0207
#define GL_ZERO 0
#define GL_ONE 1
#define GL_SRC_COLOR 0x0300
#define GL_ONE_MINUS_SRC_COLOR 0x0301
#define GL_SRC_ALPHA 0x0302
#define GL_ONE_MINUS_SRC_ALPHA 0x0303
#define GL_DST_ALPHA 0x0304
#define GL_ONE_MINUS_DST_ALPHA 0x0305
#define GL_DST_COLOR 0x0306
#define GL_ONE_MINUS_DST_COLOR 0x0307
#define GL_SRC_ALPHA_SATURATE 0x0308
#define GL_NONE 0
#define GL_FRONT_LEFT 0x0400
#define GL_FRONT_RIGHT 0x0401
#define GL_BACK_LEFT 0x0402
#define GL_BACK_RIGHT 0x0403
#define GL_FRONT 0x0404
#define GL_BACK 0x0405
#define GL_LEFT 0x0406
#define GL_RIGHT 0x0407
#define GL_FRONT_AND_BACK 0x0408
#define GL_NO_ERROR 0
#define GL_INVALID_ENUM 0x0500
#define GL_INVALID_VALUE 0x0501
#define GL_INVALID_OPERATION 0x0502
#define GL_OUT_OF_MEMORY 0x0505
#define GL_CW 0x0900
#define GL_CCW 0x0901
#define GL_POINT_SIZE 0x0B11
#define GL_POINT_SIZE_RANGE 0x0B12
#define GL_POINT_SIZE_GRANULARITY 0x0B13
#define GL_LINE_SMOOTH 0x0B20
#define GL_LINE_WIDTH 0x0B21
#define GL_LINE_WIDTH_RANGE 0x0B22
#define GL_LINE_WIDTH_GRANULARITY 0x0B23
#define GL_POLYGON_MODE 0x0B40
#define GL_POLYGON_SMOOTH 0x0B41
#define GL_CULL_FACE 0x0B44
#define GL_CULL_FACE_MODE 0x0B45
#define GL_FRONT_FACE 0x0B46
#define GL_DEPTH_RANGE 0x0B70
#define GL_DEPTH_TEST 0x0B71
#define GL_DEPTH_WRITEMASK 0x0B72
#define GL_DEPTH_CLEAR_VALUE 0x0B73
#define GL_DEPTH_FUNC 0x0B74
#define GL_STENCIL_TEST 0x0B90
#define GL_STENCIL_CLEAR_VALUE 0x0B91
#define GL_STENCIL_FUNC 0x0B92
#define GL_STENCIL_VALUE_MASK 0x0B93
#define GL_STENCIL_FAIL 0x0B94
#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95
#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96
#define GL_STENCIL_REF 0x0B97
#define GL_STENCIL_WRITEMASK 0x0B98
#define GL_VIEWPORT 0x0BA2
#define GL_DITHER 0x0BD0
#define GL_BLEND_DST 0x0BE0
#define GL_BLEND_SRC 0x0BE1
#define GL_BLEND 0x0BE2
#define GL_LOGIC_OP_MODE 0x0BF0
#define GL_DRAW_BUFFER 0x0C01
#define GL_READ_BUFFER 0x0C02
#define GL_SCISSOR_BOX 0x0C10
#define GL_SCISSOR_TEST 0x0C11
#define GL_COLOR_CLEAR_VALUE 0x0C22
#define GL_COLOR_WRITEMASK 0x0C23
#define GL_DOUBLEBUFFER 0x0C32
#define GL_STEREO 0x0C33
#define GL_LINE_SMOOTH_HINT 0x0C52
#define GL_POLYGON_SMOOTH_HINT 0x0C53
#define GL_UNPACK_SWAP_BYTES 0x0CF0
#define GL_UNPACK_LSB_FIRST 0x0CF1
#define GL_UNPACK_ROW_LENGTH 0x0CF2
#define GL_UNPACK_SKIP_ROWS 0x0CF3
#define GL_UNPACK_SKIP_PIXELS 0x0CF4
#define GL_UNPACK_ALIGNMENT 0x0CF5
#define GL_PACK_SWAP_BYTES 0x0D00
#define GL_PACK_LSB_FIRST 0x0D01
#define GL_PACK_ROW_LENGTH 0x0D02
#define GL_PACK_SKIP_ROWS 0x0D03
#define GL_PACK_SKIP_PIXELS 0x0D04
#define GL_PACK_ALIGNMENT 0x0D05
#define GL_MAX_TEXTURE_SIZE 0x0D33
#define GL_MAX_VIEWPORT_DIMS 0x0D3A
#define GL_SUBPIXEL_BITS 0x0D50
#define GL_TEXTURE_1D 0x0DE0
#define GL_TEXTURE_2D 0x0DE1
#define GL_TEXTURE_WIDTH 0x1000
#define GL_TEXTURE_HEIGHT 0x1001
#define GL_TEXTURE_BORDER_COLOR 0x1004
#define GL_DONT_CARE 0x1100
#define GL_FASTEST 0x1101
#define GL_NICEST 0x1102
#define GL_BYTE 0x1400
#define GL_UNSIGNED_BYTE 0x1401
#define GL_SHORT 0x1402
#define GL_UNSIGNED_SHORT 0x1403
#define GL_INT 0x1404
#define GL_UNSIGNED_INT 0x1405
#define GL_FLOAT 0x1406
#define GL_STACK_OVERFLOW 0x0503
#define GL_STACK_UNDERFLOW 0x0504
#define GL_CLEAR 0x1500
#define GL_AND 0x1501
#define GL_AND_REVERSE 0x1502
#define GL_COPY 0x1503
#define GL_AND_INVERTED 0x1504
#define GL_NOOP 0x1505
#define GL_XOR 0x1506
#define GL_OR 0x1507
#define GL_NOR 0x1508
#define GL_EQUIV 0x1509
#define GL_INVERT 0x150A
#define GL_OR_REVERSE 0x150B
#define GL_COPY_INVERTED 0x150C
#define GL_OR_INVERTED 0x150D
#define GL_NAND 0x150E
#define GL_SET 0x150F
#define GL_TEXTURE 0x1702
#define GL_COLOR 0x1800
#define GL_DEPTH 0x1801
#define GL_STENCIL 0x1802
#define GL_STENCIL_INDEX 0x1901
#define GL_DEPTH_COMPONENT 0x1902
#define GL_RED 0x1903
#define GL_GREEN 0x1904
#define GL_BLUE 0x1905
#define GL_ALPHA 0x1906
#define GL_RGB 0x1907
#define GL_RGBA 0x1908
#define GL_POINT 0x1B00
#define GL_LINE 0x1B01
#define GL_FILL 0x1B02
#define GL_KEEP 0x1E00
#define GL_REPLACE 0x1E01
#define GL_INCR 0x1E02
#define GL_DECR 0x1E03
#define GL_VENDOR 0x1F00
#define GL_RENDERER 0x1F01
#define GL_VERSION 0x1F02
#define GL_EXTENSIONS 0x1F03
#define GL_NEAREST 0x2600
#define GL_LINEAR 0x2601
#define GL_NEAREST_MIPMAP_NEAREST 0x2700
#define GL_LINEAR_MIPMAP_NEAREST 0x2701
#define GL_NEAREST_MIPMAP_LINEAR 0x2702
#define GL_LINEAR_MIPMAP_LINEAR 0x2703
#define GL_TEXTURE_MAG_FILTER 0x2800
#define GL_TEXTURE_MIN_FILTER 0x2801
#define GL_TEXTURE_WRAP_S 0x2802
#define GL_TEXTURE_WRAP_T 0x2803
#define GL_REPEAT 0x2901
typedef void (APIENTRYP PFNGLCULLFACEPROC) (GLenum mode);
typedef void (APIENTRYP PFNGLFRONTFACEPROC) (GLenum mode);
typedef void (APIENTRYP PFNGLHINTPROC) (GLenum target, GLenum mode);
typedef void (APIENTRYP PFNGLLINEWIDTHPROC) (GLfloat width);
typedef void (APIENTRYP PFNGLPOINTSIZEPROC) (GLfloat size);
typedef void (APIENTRYP PFNGLPOLYGONMODEPROC) (GLenum face, GLenum mode);
typedef void (APIENTRYP PFNGLSCISSORPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
typedef void (APIENTRYP PFNGLTEXPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat param);
typedef void (APIENTRYP PFNGLTEXPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
typedef void (APIENTRYP PFNGLTEXPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
typedef void (APIENTRYP PFNGLTEXPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
typedef void (APIENTRYP PFNGLTEXIMAGE1DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
typedef void (APIENTRYP PFNGLTEXIMAGE2DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
typedef void (APIENTRYP PFNGLDRAWBUFFERPROC) (GLenum buf);
typedef void (APIENTRYP PFNGLCLEARPROC) (GLbitfield mask);
typedef void (APIENTRYP PFNGLCLEARCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
typedef void (APIENTRYP PFNGLCLEARSTENCILPROC) (GLint s);
typedef void (APIENTRYP PFNGLCLEARDEPTHPROC) (GLdouble depth);
typedef void (APIENTRYP PFNGLSTENCILMASKPROC) (GLuint mask);
typedef void (APIENTRYP PFNGLCOLORMASKPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
typedef void (APIENTRYP PFNGLDEPTHMASKPROC) (GLboolean flag);
typedef void (APIENTRYP PFNGLDISABLEPROC) (GLenum cap);
typedef void (APIENTRYP PFNGLENABLEPROC) (GLenum cap);
typedef void (APIENTRYP PFNGLFINISHPROC) (void);
typedef void (APIENTRYP PFNGLFLUSHPROC) (void);
typedef void (APIENTRYP PFNGLBLENDFUNCPROC) (GLenum sfactor, GLenum dfactor);
typedef void (APIENTRYP PFNGLLOGICOPPROC) (GLenum opcode);
typedef void (APIENTRYP PFNGLSTENCILFUNCPROC) (GLenum func, GLint ref, GLuint mask);
typedef void (APIENTRYP PFNGLSTENCILOPPROC) (GLenum fail, GLenum zfail, GLenum zpass);
typedef void (APIENTRYP PFNGLDEPTHFUNCPROC) (GLenum func);
typedef void (APIENTRYP PFNGLPIXELSTOREFPROC) (GLenum pname, GLfloat param);
typedef void (APIENTRYP PFNGLPIXELSTOREIPROC) (GLenum pname, GLint param);
typedef void (APIENTRYP PFNGLREADBUFFERPROC) (GLenum src);
typedef void (APIENTRYP PFNGLREADPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);
typedef void (APIENTRYP PFNGLGETBOOLEANVPROC) (GLenum pname, GLboolean *data);
typedef void (APIENTRYP PFNGLGETDOUBLEVPROC) (GLenum pname, GLdouble *data);
typedef GLenum (APIENTRYP PFNGLGETERRORPROC) (void);
typedef void (APIENTRYP PFNGLGETFLOATVPROC) (GLenum pname, GLfloat *data);
typedef void (APIENTRYP PFNGLGETINTEGERVPROC) (GLenum pname, GLint *data);
typedef const GLubyte *(APIENTRYP PFNGLGETSTRINGPROC) (GLenum name);
typedef void (APIENTRYP PFNGLGETTEXIMAGEPROC) (GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
typedef void (APIENTRYP PFNGLGETTEXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
typedef void (APIENTRYP PFNGLGETTEXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERFVPROC) (GLenum target, GLint level, GLenum pname, GLfloat *params);
typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERIVPROC) (GLenum target, GLint level, GLenum pname, GLint *params);
typedef GLboolean (APIENTRYP PFNGLISENABLEDPROC) (GLenum cap);
typedef void (APIENTRYP PFNGLDEPTHRANGEPROC) (GLdouble n, GLdouble f);
typedef void (APIENTRYP PFNGLVIEWPORTPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
#ifdef GL_GLEXT_PROTOTYPES
GLAPI void APIENTRY glCullFace (GLenum mode);
GLAPI void APIENTRY glFrontFace (GLenum mode);
GLAPI void APIENTRY glHint (GLenum target, GLenum mode);
GLAPI void APIENTRY glLineWidth (GLfloat width);
GLAPI void APIENTRY glPointSize (GLfloat size);
GLAPI void APIENTRY glPolygonMode (GLenum face, GLenum mode);
GLAPI void APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height);
GLAPI void APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param);
GLAPI void APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params);
GLAPI void APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);
GLAPI void APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params);
GLAPI void APIENTRY glTexImage1D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
GLAPI void APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
GLAPI void APIENTRY glDrawBuffer (GLenum buf);
GLAPI void APIENTRY glClear (GLbitfield mask);
GLAPI void APIENTRY glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
GLAPI void APIENTRY glClearStencil (GLint s);
GLAPI void APIENTRY glClearDepth (GLdouble depth);
GLAPI void APIENTRY glStencilMask (GLuint mask);
GLAPI void APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
GLAPI void APIENTRY glDepthMask (GLboolean flag);
GLAPI void APIENTRY glDisable (GLenum cap);
GLAPI void APIENTRY glEnable (GLenum cap);
GLAPI void APIENTRY glFinish (void);
GLAPI void APIENTRY glFlush (void);
GLAPI void APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor);
GLAPI void APIENTRY glLogicOp (GLenum opcode);
GLAPI void APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask);
GLAPI void APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass);
GLAPI void APIENTRY glDepthFunc (GLenum func);
GLAPI void APIENTRY glPixelStoref (GLenum pname, GLfloat param);
GLAPI void APIENTRY glPixelStorei (GLenum pname, GLint param);
GLAPI void APIENTRY glReadBuffer (GLenum src);
GLAPI void APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);
GLAPI void APIENTRY glGetBooleanv (GLenum pname, GLboolean *data);
GLAPI void APIENTRY glGetDoublev (GLenum pname, GLdouble *data);
GLAPI GLenum APIENTRY glGetError (void);
GLAPI void APIENTRY glGetFloatv (GLenum pname, GLfloat *data);
GLAPI void APIENTRY glGetIntegerv (GLenum pname, GLint *data);
GLAPI const GLubyte *APIENTRY glGetString (GLenum name);
GLAPI void APIENTRY glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
GLAPI void APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params);
GLAPI void APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params);
GLAPI void APIENTRY glGetTexLevelParameterfv (GLenum target, GLint level, GLenum pname, GLfloat *params);
GLAPI void APIENTRY glGetTexLevelParameteriv (GLenum target, GLint level, GLenum pname, GLint *params);
GLAPI GLboolean APIENTRY glIsEnabled (GLenum cap);
GLAPI void APIENTRY glDepthRange (GLdouble n, GLdouble f);
GLAPI void APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
#endif
#endif /* GL_VERSION_1_0 */
#ifndef GL_VERSION_1_1
#define GL_VERSION_1_1 1
typedef khronos_float_t GLclampf;
typedef double GLclampd;
#define GL_COLOR_LOGIC_OP 0x0BF2
#define GL_POLYGON_OFFSET_UNITS 0x2A00
#define GL_POLYGON_OFFSET_POINT 0x2A01
#define GL_POLYGON_OFFSET_LINE 0x2A02
#define GL_POLYGON_OFFSET_FILL 0x8037
#define GL_POLYGON_OFFSET_FACTOR 0x8038
#define GL_TEXTURE_BINDING_1D 0x8068
#define GL_TEXTURE_BINDING_2D 0x8069
#define GL_TEXTURE_INTERNAL_FORMAT 0x1003
#define GL_TEXTURE_RED_SIZE 0x805C
#define GL_TEXTURE_GREEN_SIZE 0x805D
#define GL_TEXTURE_BLUE_SIZE 0x805E
#define GL_TEXTURE_ALPHA_SIZE 0x805F
#define GL_DOUBLE 0x140A
#define GL_PROXY_TEXTURE_1D 0x8063
#define GL_PROXY_TEXTURE_2D 0x8064
#define GL_R3_G3_B2 0x2A10
#define GL_RGB4 0x804F
#define GL_RGB5 0x8050
#define GL_RGB8 0x8051
#define GL_RGB10 0x8052
#define GL_RGB12 0x8053
#define GL_RGB16 0x8054
#define GL_RGBA2 0x8055
#define GL_RGBA4 0x8056
#define GL_RGB5_A1 0x8057
#define GL_RGBA8 0x8058
#define GL_RGB10_A2 0x8059
#define GL_RGBA12 0x805A
#define GL_RGBA16 0x805B
#define GL_VERTEX_ARRAY 0x8074
typedef void (APIENTRYP PFNGLDRAWARRAYSPROC) (GLenum mode, GLint first, GLsizei count);
typedef void (APIENTRYP PFNGLDRAWELEMENTSPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices);
typedef void (APIENTRYP PFNGLGETPOINTERVPROC) (GLenum pname, void **params);
typedef void (APIENTRYP PFNGLPOLYGONOFFSETPROC) (GLfloat factor, GLfloat units);
typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
typedef void (APIENTRYP PFNGLBINDTEXTUREPROC) (GLenum target, GLuint texture);
typedef void (APIENTRYP PFNGLDELETETEXTURESPROC) (GLsizei n, const GLuint *textures);
typedef void (APIENTRYP PFNGLGENTEXTURESPROC) (GLsizei n, GLuint *textures);
typedef GLboolean (APIENTRYP PFNGLISTEXTUREPROC) (GLuint texture);
#ifdef GL_GLEXT_PROTOTYPES
GLAPI void APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count);
GLAPI void APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices);
GLAPI void APIENTRY glGetPointerv (GLenum pname, void **params);
GLAPI void APIENTRY glPolygonOffset (GLfloat factor, GLfloat units);
GLAPI void APIENTRY glCopyTexImage1D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
GLAPI void APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
GLAPI void APIENTRY glCopyTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
GLAPI void APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
GLAPI void APIENTRY glTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
GLAPI void APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
GLAPI void APIENTRY glBindTexture (GLenum target, GLuint texture);
GLAPI void APIENTRY glDeleteTextures (GLsizei n
gitextract_8j_wb4v1/ ├── .clang-format ├── .gitignore ├── .gitmodules ├── CMakeLists.txt ├── LICENSE ├── README.md ├── benchmark.py ├── configs/ │ ├── __init__.py │ ├── db.yaml │ ├── mipnerf360_indoor.yaml │ └── mipnerf360_outdoor.yaml ├── data_loader/ │ ├── __init__.py │ ├── blender.py │ └── colmap.py ├── external/ │ ├── CMakeLists.txt │ ├── gl3w/ │ │ └── gl3w.c │ └── include/ │ ├── GL/ │ │ ├── gl3w.h │ │ └── glcorearb.h │ └── KHR/ │ └── khrplatform.h ├── prepare_colmap_data.py ├── pyproject.toml ├── radfoam_model/ │ ├── __init__.py │ ├── render.py │ ├── scene.py │ └── utils.py ├── requirements.txt ├── scripts/ │ ├── cmake_clean.sh │ └── torch_info.py ├── setup.cfg ├── setup.py ├── src/ │ ├── CMakeLists.txt │ ├── aabb_tree/ │ │ ├── aabb_tree.cu │ │ ├── aabb_tree.cuh │ │ └── aabb_tree.h │ ├── delaunay/ │ │ ├── delaunay.cu │ │ ├── delaunay.cuh │ │ ├── delaunay.h │ │ ├── delete_violations.cu │ │ ├── exact_tree_ops.cuh │ │ ├── growth_iteration.cu │ │ ├── predicate.cuh │ │ ├── sample_initial_tets.cu │ │ ├── shewchuk.cuh │ │ ├── sorted_map.cuh │ │ ├── triangulation_ops.cu │ │ └── triangulation_ops.h │ ├── tracing/ │ │ ├── camera.h │ │ ├── pipeline.cu │ │ ├── pipeline.h │ │ ├── sh_utils.cuh │ │ └── tracing_utils.cuh │ ├── utils/ │ │ ├── batch_fetcher.cpp │ │ ├── batch_fetcher.h │ │ ├── common_kernels.cuh │ │ ├── cuda_array.h │ │ ├── cuda_helpers.h │ │ ├── geometry.h │ │ ├── random.h │ │ ├── typing.h │ │ └── unenumerate_iterator.cuh │ └── viewer/ │ ├── viewer.cpp │ └── viewer.h ├── test.py ├── torch_bindings/ │ ├── CMakeLists.txt │ ├── bindings.h │ ├── pipeline_bindings.cpp │ ├── pipeline_bindings.h │ ├── radfoam/ │ │ └── __init__.py.in │ ├── torch_bindings.cpp │ ├── triangulation_bindings.cpp │ └── triangulation_bindings.h ├── train.py └── viewer.py
SYMBOL INDEX (244 symbols across 37 files)
FILE: benchmark.py
function benchmark (line 22) | def benchmark(args, pipeline_args, model_args, optimizer_args, dataset_a...
function main (line 142) | def main():
FILE: configs/__init__.py
class GroupParams (line 6) | class GroupParams:
class ParamGroup (line 10) | class ParamGroup:
method __init__ (line 11) | def __init__(
method extract (line 33) | def extract(self, args):
class PipelineParams (line 41) | class PipelineParams(ParamGroup):
method __init__ (line 43) | def __init__(self, parser):
class ModelParams (line 56) | class ModelParams(ParamGroup):
method __init__ (line 58) | def __init__(self, parser):
class OptimizationParams (line 67) | class OptimizationParams(ParamGroup):
method __init__ (line 69) | def __init__(self, parser):
class DatasetParams (line 81) | class DatasetParams(ParamGroup):
method __init__ (line 83) | def __init__(self, parser):
FILE: data_loader/__init__.py
function get_up (line 19) | def get_up(c2ws):
class DataHandler (line 36) | class DataHandler:
method __init__ (line 37) | def __init__(self, dataset_args, rays_per_batch, device="cuda"):
method reload (line 44) | def reload(self, split, downsample=None):
method get_iter (line 112) | def get_iter(self):
FILE: data_loader/blender.py
function get_ray_directions (line 10) | def get_ray_directions(H, W, focal, center=None):
class BlenderDataset (line 30) | class BlenderDataset(Dataset):
method __init__ (line 31) | def __init__(self, datadir, split="train", downsample=1):
method __len__ (line 106) | def __len__(self):
method __getitem__ (line 109) | def __getitem__(self, idx):
FILE: data_loader/colmap.py
function get_cam_ray_dirs (line 10) | def get_cam_ray_dirs(camera):
class COLMAPDataset (line 23) | class COLMAPDataset:
method __init__ (line 24) | def __init__(self, datadir, split, downsample):
FILE: external/gl3w/gl3w.c
type PROC (line 41) | typedef PROC(__stdcall* GL3WglGetProcAddr)(LPCSTR);
function open_libgl (line 44) | static int open_libgl(void)
function close_libgl (line 54) | static void close_libgl(void)
function GL3WglProc (line 59) | static GL3WglProc get_proc(const char *proc)
function open_libgl (line 73) | static int open_libgl(void)
function close_libgl (line 82) | static void close_libgl(void)
function GL3WglProc (line 87) | static GL3WglProc get_proc(const char *proc)
function close_libgl (line 102) | static void close_libgl(void)
function is_library_loaded (line 118) | static int is_library_loaded(const char *name, void **lib)
function open_libs (line 124) | static int open_libs(void)
function open_libgl (line 163) | static int open_libgl(void)
function GL3WglProc (line 184) | static GL3WglProc get_proc(const char *proc)
function parse_version (line 209) | static int parse_version(void)
function gl3wInit (line 224) | int gl3wInit(void)
function gl3wInit2 (line 236) | int gl3wInit2(GL3WGetProcAddressProc proc)
function gl3wIsSupported (line 242) | int gl3wIsSupported(int major, int minor)
function GL3WglProc (line 251) | GL3WglProc gl3wGetProcAddress(const char *proc)
function load_procs (line 920) | static void load_procs(GL3WGetProcAddressProc proc)
FILE: external/include/GL/gl3w.h
type GL3WglProc (line 52) | typedef GL3WglProc (*GL3WGetProcAddressProc)(const char *proc);
FILE: external/include/GL/glcorearb.h
type GLvoid (line 61) | typedef void GLvoid;
type GLenum (line 62) | typedef unsigned int GLenum;
type khronos_float_t (line 64) | typedef khronos_float_t GLfloat;
type GLint (line 65) | typedef int GLint;
type GLsizei (line 66) | typedef int GLsizei;
type GLbitfield (line 67) | typedef unsigned int GLbitfield;
type GLdouble (line 68) | typedef double GLdouble;
type GLuint (line 69) | typedef unsigned int GLuint;
type GLboolean (line 70) | typedef unsigned char GLboolean;
type khronos_uint8_t (line 71) | typedef khronos_uint8_t GLubyte;
type GLubyte (line 284) | typedef const GLubyte *(APIENTRYP PFNGLGETSTRINGPROC) (GLenum name);
type khronos_float_t (line 347) | typedef khronos_float_t GLclampf;
type GLclampd (line 348) | typedef double GLclampd;
type khronos_ssize_t (line 598) | typedef khronos_ssize_t GLsizeiptr;
type khronos_intptr_t (line 599) | typedef khronos_intptr_t GLintptr;
type GLchar (line 672) | typedef char GLchar;
type khronos_int16_t (line 673) | typedef khronos_int16_t GLshort;
type khronos_int8_t (line 674) | typedef khronos_int8_t GLbyte;
type khronos_uint16_t (line 675) | typedef khronos_uint16_t GLushort;
type khronos_uint16_t (line 982) | typedef khronos_uint16_t GLhalf;
type GLubyte (line 1271) | typedef const GLubyte *(APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLu...
type __GLsync (line 1479) | struct __GLsync
type khronos_uint64_t (line 1480) | typedef khronos_uint64_t GLuint64;
type khronos_int64_t (line 1481) | typedef khronos_int64_t GLint64;
type const (line 1770) | typedef GLint (APIENTRYP PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint ...
type const (line 1771) | typedef GLuint (APIENTRYP PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, ...
type const (line 2478) | typedef GLuint (APIENTRYP PFNGLGETPROGRAMRESOURCEINDEXPROC) (GLuint prog...
type const (line 2481) | typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONPROC) (GLuint pr...
type const (line 2482) | typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC) (GLui...
type khronos_uint64_t (line 2911) | typedef khronos_uint64_t GLuint64EXT;
type _cl_context (line 2959) | struct _cl_context
type _cl_event (line 2960) | struct _cl_event
type struct (line 2963) | typedef GLsync (APIENTRYP PFNGLCREATESYNCFROMCLEVENTARBPROC) (struct _cl...
type _cl_context (line 2965) | struct _cl_context
type _cl_event (line 2965) | struct _cl_event
type GLchar (line 3573) | typedef GLboolean (APIENTRYP PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, ...
type khronos_int64_t (line 5162) | typedef khronos_int64_t GLint64EXT;
type GLbitfield (line 5584) | typedef GLenum (APIENTRYP PFNGLPATHGLYPHINDEXRANGENVPROC) (GLenum fontTa...
type const (line 5585) | typedef GLenum (APIENTRYP PFNGLPATHGLYPHINDEXARRAYNVPROC) (GLuint firstP...
FILE: external/include/KHR/khrplatform.h
type khronos_int32_t (line 150) | typedef int32_t khronos_int32_t;
type khronos_uint32_t (line 151) | typedef uint32_t khronos_uint32_t;
type khronos_int64_t (line 152) | typedef int64_t khronos_int64_t;
type khronos_uint64_t (line 153) | typedef uint64_t khronos_uint64_t;
type khronos_int32_t (line 177) | typedef int32_t khronos_int32_t;
type khronos_uint32_t (line 178) | typedef uint32_t khronos_uint32_t;
type khronos_int64_t (line 179) | typedef int64_t khronos_int64_t;
type khronos_uint64_t (line 180) | typedef uint64_t khronos_uint64_t;
type __int32 (line 189) | typedef __int32 khronos_int32_t;
type khronos_uint32_t (line 190) | typedef unsigned __int32 khronos_uint32_t;
type __int64 (line 191) | typedef __int64 khronos_int64_t;
type khronos_uint64_t (line 192) | typedef unsigned __int64 khronos_uint64_t;
type khronos_int32_t (line 201) | typedef int khronos_int32_t;
type khronos_uint32_t (line 202) | typedef unsigned int khronos_uint32_t;
type khronos_int64_t (line 204) | typedef long int khronos_int64_t;
type khronos_uint64_t (line 205) | typedef unsigned long int khronos_uint64_t;
type khronos_int64_t (line 207) | typedef long long int khronos_int64_t;
type khronos_uint64_t (line 208) | typedef unsigned long long int khronos_uint64_t;
type khronos_int32_t (line 218) | typedef int khronos_int32_t;
type khronos_uint32_t (line 219) | typedef unsigned int khronos_uint32_t;
type khronos_int32_t (line 229) | typedef int32_t khronos_int32_t;
type khronos_uint32_t (line 230) | typedef uint32_t khronos_uint32_t;
type khronos_int64_t (line 231) | typedef int64_t khronos_int64_t;
type khronos_uint64_t (line 232) | typedef uint64_t khronos_uint64_t;
type khronos_int8_t (line 242) | typedef signed char khronos_int8_t;
type khronos_uint8_t (line 243) | typedef unsigned char khronos_uint8_t;
type khronos_int16_t (line 244) | typedef signed short int khronos_int16_t;
type khronos_uint16_t (line 245) | typedef unsigned short int khronos_uint16_t;
type khronos_intptr_t (line 253) | typedef intptr_t khronos_intptr_t;
type khronos_uintptr_t (line 254) | typedef uintptr_t khronos_uintptr_t;
type khronos_intptr_t (line 256) | typedef signed long long int khronos_intptr_t;
type khronos_uintptr_t (line 257) | typedef unsigned long long int khronos_uintptr_t;
type khronos_intptr_t (line 259) | typedef signed long int khronos_intptr_t;
type khronos_uintptr_t (line 260) | typedef unsigned long int khronos_uintptr_t;
type khronos_ssize_t (line 264) | typedef signed long long int khronos_ssize_t;
type khronos_usize_t (line 265) | typedef unsigned long long int khronos_usize_t;
type khronos_ssize_t (line 267) | typedef signed long int khronos_ssize_t;
type khronos_usize_t (line 268) | typedef unsigned long int khronos_usize_t;
type khronos_float_t (line 275) | typedef float khronos_float_t;
type khronos_uint64_t (line 288) | typedef khronos_uint64_t khronos_utime_nanoseconds_t;
type khronos_int64_t (line 289) | typedef khronos_int64_t khronos_stime_nanoseconds_t;
type khronos_boolean_enum_t (line 305) | typedef enum {
FILE: prepare_colmap_data.py
function main (line 10) | def main(args):
FILE: radfoam_model/render.py
class ErrorBox (line 4) | class ErrorBox:
method __init__ (line 5) | def __init__(self):
class TraceRays (line 10) | class TraceRays(torch.autograd.Function):
method forward (line 12) | def forward(
method backward (line 58) | def backward(
FILE: radfoam_model/scene.py
class RadFoamScene (line 13) | class RadFoamScene(torch.nn.Module):
method __init__ (line 15) | def __init__(
method random_initialize (line 61) | def random_initialize(self):
method initialize_from_pcd (line 88) | def initialize_from_pcd(self, points, points_colors):
method permute_points (line 127) | def permute_points(self, permutation):
method update_triangulation (line 160) | def update_triangulation(self, rebuild=True, incremental=False):
method get_primal_density (line 202) | def get_primal_density(self):
method get_primal_attributes (line 205) | def get_primal_attributes(self):
method get_trace_data (line 208) | def get_trace_data(self):
method show (line 219) | def show(self, loop_fn=lambda v: None, iterations=None, **viewer_kwargs):
method get_starting_point (line 224) | def get_starting_point(self, rays, points, aabb_tree):
method forward (line 236) | def forward(
method update_viewer (line 263) | def update_viewer(self, viewer):
method declare_optimizer (line 275) | def declare_optimizer(self, args, warmup, max_iterations):
method update_learning_rate (line 323) | def update_learning_rate(self, iteration):
method prune_optimizer (line 340) | def prune_optimizer(self, mask):
method prune_points (line 362) | def prune_points(self, prune_mask):
method cat_tensors_to_optimizer (line 370) | def cat_tensors_to_optimizer(self, new_params):
method densification_postfix (line 415) | def densification_postfix(self, new_params):
method prune_and_densify (line 422) | def prune_and_densify(
method collect_error_map (line 497) | def collect_error_map(self, data_handler, white_bkg=True, downsample=2):
method save_ply (line 550) | def save_ply(self, ply_path):
method save_pt (line 614) | def save_pt(self, pt_path):
method load_pt (line 632) | def load_pt(self, pt_path):
FILE: radfoam_model/utils.py
function inverse_softplus (line 5) | def inverse_softplus(x, beta, scale=1):
function psnr (line 13) | def psnr(img1, img2):
function get_expon_lr_func (line 18) | def get_expon_lr_func(
function get_cosine_lr_func (line 51) | def get_cosine_lr_func(
FILE: scripts/torch_info.py
function import_module_from_path (line 7) | def import_module_from_path(module_name, file_path):
FILE: src/aabb_tree/aabb_tree.h
function namespace (line 6) | namespace radfoam {
FILE: src/delaunay/delaunay.h
function namespace (line 7) | namespace radfoam {
FILE: src/delaunay/triangulation_ops.h
function namespace (line 5) | namespace radfoam {
FILE: src/tracing/camera.h
function namespace (line 5) | namespace radfoam {
FILE: src/tracing/pipeline.h
function namespace (line 8) | namespace radfoam {
FILE: src/utils/batch_fetcher.cpp
type radfoam (line 19) | namespace radfoam {
type Batch (line 23) | struct Batch {
class BatchFetcherImpl (line 28) | class BatchFetcherImpl : public BatchFetcher {
method BatchFetcherImpl (line 30) | BatchFetcherImpl(const uint8_t *data,
function create_batch_fetcher (line 145) | std::unique_ptr<BatchFetcher> create_batch_fetcher(const void *data,
FILE: src/utils/batch_fetcher.h
function namespace (line 5) | namespace radfoam {
FILE: src/utils/cuda_array.h
function namespace (line 27) | namespace radfoam {
function clear (line 196) | void clear() {
FILE: src/utils/cuda_helpers.h
function namespace (line 10) | namespace radfoam {
FILE: src/utils/geometry.h
function namespace (line 14) | namespace radfoam {
function IntersectionResult (line 168) | enum class IntersectionResult {
type IndexedTet (line 441) | struct IndexedTet {
function RADFOAM_HD (line 467) | RADFOAM_HD bool is_valid() {
function RADFOAM_HD (line 474) | RADFOAM_HD IndexedTriangle face(uint32_t i) const {
type IndexedEdge (line 512) | struct IndexedEdge {
function RADFOAM_HD (line 536) | RADFOAM_HD bool is_valid() {
FILE: src/utils/random.h
function namespace (line 8) | namespace radfoam {
FILE: src/utils/typing.h
function namespace (line 21) | namespace radfoam {
FILE: src/viewer/viewer.cpp
function glfwErrorCallback (line 22) | void glfwErrorCallback(int error, const char *description) {
type radfoam (line 26) | namespace radfoam {
function gl_debug_callback (line 53) | void gl_debug_callback(GLenum source,
function GLuint (line 65) | GLuint create_program() {
function GLuint (line 110) | GLuint allocate_texture(int width, int height) {
function CUgraphicsResource (line 133) | CUgraphicsResource register_texture(GLuint texture) {
function upload_cmap_data (line 469) | radfoam::CMapTable upload_cmap_data() {
type ViewerPrivate (line 516) | struct ViewerPrivate : public Viewer {
method ViewerPrivate (line 555) | ViewerPrivate(std::shared_ptr<Pipeline> pipeline, ViewerOptions opti...
method run (line 650) | void run() {
method update_scene (line 1007) | void update_scene(uint32_t num_points,
method step (line 1082) | void step(int iteration) override {
method is_closed (line 1096) | bool is_closed() const override { return closed; }
method Pipeline (line 1098) | const Pipeline &get_pipeline() const override { return *pipeline; }
method handle_resize (line 1100) | static void handle_resize(GLFWwindow *window, int width, int height) {
method handle_key (line 1117) | static void handle_key(
function run_with_viewer (line 1130) | void run_with_viewer(std::shared_ptr<Pipeline> pipeline,
FILE: src/viewer/viewer.h
function namespace (line 8) | namespace radfoam {
FILE: test.py
function test (line 22) | def test(args, pipeline_args, model_args, optimizer_args, dataset_args):
function main (line 94) | def main():
FILE: torch_bindings/bindings.h
function namespace (line 14) | namespace radfoam_bindings {
FILE: torch_bindings/pipeline_bindings.cpp
type radfoam_bindings (line 6) | namespace radfoam_bindings {
function validate_scene_data (line 8) | void validate_scene_data(const Pipeline &pipeline,
function update_scene (line 73) | void update_scene(Viewer &self,
function trace_forward (line 107) | py::object trace_forward(Pipeline &self,
function trace_backward (line 267) | py::object trace_backward(Pipeline &self,
function trace_benchmark (line 499) | void trace_benchmark(Pipeline &self,
function create_pipeline (line 587) | std::shared_ptr<Pipeline> create_pipeline(int sh_degree,
function run_with_viewer (line 592) | void run_with_viewer(std::shared_ptr<Pipeline> pipeline,
function init_pipeline_bindings (line 626) | void init_pipeline_bindings(py::module &module) {
FILE: torch_bindings/pipeline_bindings.h
function namespace (line 5) | namespace radfoam_bindings {
FILE: torch_bindings/torch_bindings.cpp
type radfoam (line 12) | namespace radfoam {
type TorchBuffer (line 14) | struct TorchBuffer : public OpaqueBuffer {
method TorchBuffer (line 17) | TorchBuffer(size_t bytes) {
function allocate_buffer (line 28) | std::unique_ptr<OpaqueBuffer> allocate_buffer(size_t bytes) {
type TorchBatchFetcher (line 32) | struct TorchBatchFetcher {
method TorchBatchFetcher (line 37) | TorchBatchFetcher(torch::Tensor _data, size_t _batch_size, bool shuf...
method next (line 46) | torch::Tensor next() {
function create_torch_batch_fetcher (line 60) | std::unique_ptr<TorchBatchFetcher> create_torch_batch_fetcher(
type radfoam_bindings (line 67) | namespace radfoam_bindings {
function PYBIND11_MODULE (line 69) | PYBIND11_MODULE(torch_bindings, module) {
FILE: torch_bindings/triangulation_bindings.cpp
type radfoam_bindings (line 9) | namespace radfoam_bindings {
function create_triangulation (line 11) | std::unique_ptr<Triangulation> create_triangulation(torch::Tensor poin...
function rebuild (line 29) | bool rebuild(Triangulation &triangulation,
function permutation (line 48) | torch::Tensor permutation(const Triangulation &triangulation) {
function get_tets (line 59) | torch::Tensor get_tets(const Triangulation &triangulation) {
function get_tet_adjacency (line 70) | torch::Tensor get_tet_adjacency(const Triangulation &triangulation) {
function get_point_adjacency (line 81) | torch::Tensor get_point_adjacency(const Triangulation &triangulation) {
function get_point_adjacency_offsets (line 93) | torch::Tensor get_point_adjacency_offsets(const Triangulation &triangu...
function get_vert_to_tet (line 106) | torch::Tensor get_vert_to_tet(const Triangulation &triangulation) {
function build_aabb_tree (line 117) | torch::Tensor build_aabb_tree(torch::Tensor points) {
function nn (line 142) | torch::Tensor
function farthest_neighbor (line 183) | std::tuple<torch::Tensor, torch::Tensor>
function init_triangulation_bindings (line 219) | void init_triangulation_bindings(py::module &module) {
FILE: torch_bindings/triangulation_bindings.h
function namespace (line 5) | namespace radfoam_bindings {
FILE: train.py
function train (line 29) | def train(args, pipeline_args, model_args, optimizer_args, dataset_args):
function main (line 316) | def main():
FILE: viewer.py
function viewer (line 20) | def viewer(args, pipeline_args, model_args, optimizer_args, dataset_args):
function main (line 49) | def main():
Condensed preview — 73 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,062K chars).
[
{
"path": ".clang-format",
"chars": 162,
"preview": "BasedOnStyle: LLVM\nUseTab: Never\nTabWidth: 4\nIndentWidth: 4\nColumnLimit: 80\nAlwaysBreakTemplateDeclarations: Yes\nBinPack"
},
{
"path": ".gitignore",
"chars": 97,
"preview": ".vscode\n/build*/\n/dist/\n/data\n/radfoam/\n/*output*\n\n*.egg-info\n__pycache__\n/*nsight\n*.mp4b\n*ipynb\n"
},
{
"path": ".gitmodules",
"chars": 718,
"preview": "[submodule \"external/submodules/glfw\"]\n\tpath = external/submodules/glfw\n\turl = https://github.com/glfw/glfw\n[submodule \""
},
{
"path": "CMakeLists.txt",
"chars": 1378,
"preview": "cmake_minimum_required(VERSION 3.27)\nproject(RadFoam VERSION 1.0.0)\n\ncmake_policy(SET CMP0060 NEW)\n\nenable_language(CUDA"
},
{
"path": "LICENSE",
"chars": 11355,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "README.md",
"chars": 4831,
"preview": "# Radiant Foam: Real-Time Differentiable Ray Tracing\n\n\n\n## Shrisudhan Govindarajan, Daniel Rebain, Kwang "
},
{
"path": "benchmark.py",
"chars": 4534,
"preview": "import os\nimport numpy as np\nfrom PIL import Image\nimport configargparse\nimport warnings\n\nwarnings.filterwarnings(\"ignor"
},
{
"path": "configs/__init__.py",
"chars": 2621,
"preview": "import configargparse\nimport os\nfrom argparse import Namespace\n\n\nclass GroupParams:\n pass\n\n\nclass ParamGroup:\n def"
},
{
"path": "configs/db.yaml",
"chars": 842,
"preview": "# Model Parameters\nsh_degree: 3\ninit_points: 131_072\nfinal_points: 3_145_728\nactivation_scale: 1\ndevice: cuda\n\n# Pipelin"
},
{
"path": "configs/mipnerf360_indoor.yaml",
"chars": 850,
"preview": "# Model Parameters\nsh_degree: 3\ninit_points: 131_072\nfinal_points: 2_097_152\nactivation_scale: 1\ndevice: cuda\n\n# Pipelin"
},
{
"path": "configs/mipnerf360_outdoor.yaml",
"chars": 851,
"preview": "# Model Parameters\nsh_degree: 3\ninit_points: 131_072\nfinal_points: 4_194_304\nactivation_scale: 1\ndevice: cuda\n\n# Pipelin"
},
{
"path": "data_loader/__init__.py",
"chars": 4273,
"preview": "import os\n\nimport numpy as np\nimport einops\nimport torch\n\nimport radfoam\n\nfrom .colmap import COLMAPDataset\nfrom .blende"
},
{
"path": "data_loader/blender.py",
"chars": 4092,
"preview": "import os\nimport numpy as np\nfrom PIL import Image\nimport torch\nfrom torch.utils.data import Dataset\nimport json\nimport "
},
{
"path": "data_loader/colmap.py",
"chars": 4244,
"preview": "import os\n\nimport numpy as np\nfrom PIL import Image\nfrom tqdm import tqdm\nimport torch\nimport pycolmap\n\n\ndef get_cam_ray"
},
{
"path": "external/CMakeLists.txt",
"chars": 1462,
"preview": "if(PIP_GLFW)\n set(USE_PIP_GLFW\n True\n PARENT_SCOPE)\n set(GLFW_LIBRARY\n \"\"\n PARENT_SCOPE)\n set(GLFW_IN"
},
{
"path": "external/gl3w/gl3w.c",
"chars": 22074,
"preview": "/*\n * This file was generated with gl3w_gen.py, part of gl3w\n * (hosted at https://github.com/skaslev/gl3w)\n *\n * This i"
},
{
"path": "external/include/GL/gl3w.h",
"chars": 111022,
"preview": "/*\n * This file was generated with gl3w_gen.py, part of gl3w\n * (hosted at https://github.com/skaslev/gl3w)\n *\n * This i"
},
{
"path": "external/include/GL/glcorearb.h",
"chars": 426122,
"preview": "#ifndef __gl_glcorearb_h_\n#define __gl_glcorearb_h_ 1\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*\n** Copyright 2013-2020"
},
{
"path": "external/include/KHR/khrplatform.h",
"chars": 11131,
"preview": "#ifndef __khrplatform_h_\n#define __khrplatform_h_\n\n/*\n** Copyright (c) 2008-2018 The Khronos Group Inc.\n**\n** Permission"
},
{
"path": "prepare_colmap_data.py",
"chars": 3014,
"preview": "import argparse\nimport os\nimport warnings\n\nimport pycolmap\nfrom PIL import Image\nimport tqdm\n\n\ndef main(args):\n \"\"\"Mi"
},
{
"path": "pyproject.toml",
"chars": 187,
"preview": "[build-system]\nrequires = [\n \"setuptools>=64\",\n \"pybind11\",\n \"glfw==2.6.5\",\n \"cmake_build_extension\",\n]\nbuil"
},
{
"path": "radfoam_model/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "radfoam_model/render.py",
"chars": 3264,
"preview": "import torch\n\n\nclass ErrorBox:\n def __init__(self):\n self.ray_error = None\n self.point_error = None\n\n\nc"
},
{
"path": "radfoam_model/scene.py",
"chars": 23922,
"preview": "import os\nimport torch\nfrom torch import nn\nimport torch.nn.functional as F\nfrom plyfile import PlyData, PlyElement\nimpo"
},
{
"path": "radfoam_model/utils.py",
"chars": 2779,
"preview": "import numpy as np\nimport torch\n\n\ndef inverse_softplus(x, beta, scale=1):\n # log(exp(scale*x)-1)/scale\n out = x / "
},
{
"path": "requirements.txt",
"chars": 267,
"preview": "cmake==3.29.2\ncmake-format==0.6.13\ncmake_build_extension==0.6.1\nConfigArgParse==1.7\neinops==0.8.1\nglfw==2.6.5\npycolmap=="
},
{
"path": "scripts/cmake_clean.sh",
"chars": 164,
"preview": "#! /bin/sh\n\ncmake-format -i CMakeLists.txt\ncmake-format -i src/CMakeLists.txt\ncmake-format -i external/CMakeLists.txt\ncm"
},
{
"path": "scripts/torch_info.py",
"chars": 547,
"preview": "import sys\nimport sysconfig\nimport importlib.util\n\nlib_path = sysconfig.get_path(\"purelib\")\n\ndef import_module_from_path"
},
{
"path": "setup.cfg",
"chars": 516,
"preview": "[metadata]\nname = radfoam\ndescription = C++ backend for RadFoam\nlong_description = file: README.md\nlong_description_cont"
},
{
"path": "setup.py",
"chars": 1813,
"preview": "import os\nimport re\nimport sys\nfrom pathlib import Path\n\nimport cmake_build_extension\nimport setuptools\nimport sysconfig"
},
{
"path": "src/CMakeLists.txt",
"chars": 1039,
"preview": "find_package(CUDAToolkit REQUIRED)\n\nadd_definitions(-D_GLIBCXX_USE_CXX11_ABI=0 -D_USE_MATH_DEFINES)\n\nlist(\n APPEND\n RA"
},
{
"path": "src/aabb_tree/aabb_tree.cu",
"chars": 16135,
"preview": "#include <iostream>\n#include <vector>\n\n#include <cub/device/device_radix_sort.cuh>\n#include <cub/device/device_segmented"
},
{
"path": "src/aabb_tree/aabb_tree.cuh",
"chars": 8977,
"preview": "#pragma once\n\n#include <cub/warp/warp_merge_sort.cuh>\n\n#include \"../utils/cuda_array.h\"\n#include \"../utils/geometry.h\"\n#"
},
{
"path": "src/aabb_tree/aabb_tree.h",
"chars": 963,
"preview": "#pragma once\n\n#include \"../utils/cuda_helpers.h\"\n#include \"../utils/geometry.h\"\n\nnamespace radfoam {\n\n/// @brief Build a"
},
{
"path": "src/delaunay/delaunay.cu",
"chars": 14015,
"preview": "#include <vector>\n\n#include \"../aabb_tree/aabb_tree.h\"\n\n#include \"delaunay.cuh\"\n\nnamespace radfoam {\n\nvoid check_duplica"
},
{
"path": "src/delaunay/delaunay.cuh",
"chars": 1916,
"preview": "#pragma once\n\n#include <vector>\n\n#include <cub/device/device_merge_sort.cuh>\n#include <cub/device/device_partition.cuh>\n"
},
{
"path": "src/delaunay/delaunay.h",
"chars": 1089,
"preview": "#pragma once\n\n#include <memory>\n\n#include \"../utils/geometry.h\"\n\nnamespace radfoam {\n\nclass TriangulationFailedError : p"
},
{
"path": "src/delaunay/delete_violations.cu",
"chars": 6666,
"preview": "#include \"delaunay.cuh\"\n\nnamespace radfoam {\n\nconstexpr int DELAUNAY_VIOLATIONS_BLOCK_SIZE = 128;\n\n__global__ void\ndelau"
},
{
"path": "src/delaunay/exact_tree_ops.cuh",
"chars": 12523,
"preview": "#pragma once\n\n#include \"../utils/geometry.h\"\n#include \"../utils/random.h\"\n\n#include \"../aabb_tree/aabb_tree.cuh\"\n#includ"
},
{
"path": "src/delaunay/growth_iteration.cu",
"chars": 8179,
"preview": "#include \"delaunay.cuh\"\n\nnamespace radfoam {\n\nconstexpr int GROWTH_ITERATION_BLOCK_SIZE = 128;\n\n__global__ void\ngrowth_i"
},
{
"path": "src/delaunay/predicate.cuh",
"chars": 4121,
"preview": "#pragma once\n\n#include \"../utils/geometry.h\"\n#include \"shewchuk.cuh\"\n\nnamespace radfoam {\n\nstruct HalfspacePredicate {\n "
},
{
"path": "src/delaunay/sample_initial_tets.cu",
"chars": 4737,
"preview": "#include \"delaunay.cuh\"\n\nnamespace radfoam {\n\nconstexpr int SAMPLE_INITIAL_TETS_BLOCK_SIZE = 128;\n\n__global__ void sampl"
},
{
"path": "src/delaunay/shewchuk.cuh",
"chars": 86344,
"preview": "#pragma once\n\n#include <stdexcept>\n\n#include \"../utils/geometry.h\"\n\nnamespace radfoam {\n\n/******************************"
},
{
"path": "src/delaunay/sorted_map.cuh",
"chars": 3783,
"preview": "#pragma once\n\n#include \"../utils/cuda_array.h\"\n\nnamespace radfoam {\n\ntemplate <typename K, typename V>\nstruct SortedMap "
},
{
"path": "src/delaunay/triangulation_ops.cu",
"chars": 3164,
"preview": "#include \"triangulation_ops.h\"\n\n#include \"../utils/common_kernels.cuh\"\n#include \"exact_tree_ops.cuh\"\n\nnamespace radfoam "
},
{
"path": "src/delaunay/triangulation_ops.h",
"chars": 528,
"preview": "#pragma once\n\n#include \"../utils/geometry.h\"\n\nnamespace radfoam {\n\n/// @brief Find the farthest neighbor of each point\nv"
},
{
"path": "src/tracing/camera.h",
"chars": 2506,
"preview": "#pragma once\n\n#include \"../utils/geometry.h\"\n\nnamespace radfoam {\n\nstruct Ray {\n Vec3f origin;\n Vec3f direction;\n}"
},
{
"path": "src/tracing/pipeline.cu",
"chars": 30645,
"preview": "#include \"../aabb_tree/aabb_tree.h\"\n#include \"../delaunay/triangulation_ops.h\"\n#include \"../utils/cuda_array.h\"\n#include"
},
{
"path": "src/tracing/pipeline.h",
"chars": 5416,
"preview": "#pragma once\n\n#include <memory>\n\n#include \"../utils/typing.h\"\n#include \"camera.h\"\n\nnamespace radfoam {\n\nstruct TraceSett"
},
{
"path": "src/tracing/sh_utils.cuh",
"chars": 6157,
"preview": "#pragma once\n\n#include \"../utils/geometry.h\"\n#include \"camera.h\"\n\nnamespace radfoam {\n\n__constant__ float C0 = 0.2820947"
},
{
"path": "src/tracing/tracing_utils.cuh",
"chars": 4377,
"preview": "#pragma once\n\n#include \"../utils/geometry.h\"\n#include \"camera.h\"\n\nnamespace radfoam {\n\ntemplate <int block_size, int chu"
},
{
"path": "src/utils/batch_fetcher.cpp",
"chars": 5353,
"preview": "#include <atomic>\n#include <cstring>\n#include <exception>\n#include <iostream>\n#include <thread>\n#include <vector>\n\n#incl"
},
{
"path": "src/utils/batch_fetcher.h",
"chars": 522,
"preview": "#pragma once\n\n#include <memory>\n\nnamespace radfoam {\n\nclass BatchFetcher {\n public:\n virtual ~BatchFetcher() = defau"
},
{
"path": "src/utils/common_kernels.cuh",
"chars": 4355,
"preview": "#pragma once\n\n#include <iostream>\n\n#include \"cuda_helpers.h\"\n\n#include <cub/iterator/arg_index_input_iterator.cuh>\n#incl"
},
{
"path": "src/utils/cuda_array.h",
"chars": 6941,
"preview": "#pragma once\n\n#include <iostream>\n#include <limits>\n#include <memory>\n#include <vector>\n\n#include \"cuda_helpers.h\"\n#incl"
},
{
"path": "src/utils/cuda_helpers.h",
"chars": 1507,
"preview": "#pragma once\n\n#include <functional>\n#include <stdexcept>\n\n#include <GL/gl3w.h>\n#include <cuda.h>\n#include <cuda_runtime."
},
{
"path": "src/utils/geometry.h",
"chars": 16141,
"preview": "#pragma once\n\n#include <float.h>\n\n#define EIGEN_MPL2_ONLY\n#include <Eigen/Core>\n#include <Eigen/Geometry>\n\n#include <cud"
},
{
"path": "src/utils/random.h",
"chars": 2167,
"preview": "#pragma once\n\n#include <cmath>\n#include <limits>\n\n#include \"typing.h\"\n\nnamespace radfoam {\n\n// https://github.com/skeeto"
},
{
"path": "src/utils/typing.h",
"chars": 2970,
"preview": "#pragma once\n\n#include <string>\n\n#include <cuda_fp16.h>\n\n#ifdef __CUDACC__\n#define RADFOAM_HD __host__ __device__\n#else\n"
},
{
"path": "src/utils/unenumerate_iterator.cuh",
"chars": 2147,
"preview": "#pragma once\n\n#include <cub/iterator/arg_index_input_iterator.cuh>\n\nnamespace radfoam {\n\n/// @brief An output iterator t"
},
{
"path": "src/viewer/viewer.cpp",
"chars": 54427,
"preview": "#include <atomic>\n#include <chrono>\n#include <condition_variable>\n#include <iostream>\n#include <mutex>\n#include <stdexce"
},
{
"path": "src/viewer/viewer.h",
"chars": 1494,
"preview": "#pragma once\n\n#include <functional>\n#include <memory>\n\n#include \"../tracing/pipeline.h\"\n\nnamespace radfoam {\n\nstruct Vie"
},
{
"path": "test.py",
"chars": 3508,
"preview": "import numpy as np\nfrom PIL import Image\nimport configargparse\nimport warnings\n\nwarnings.filterwarnings(\"ignore\")\n\nimpor"
},
{
"path": "torch_bindings/CMakeLists.txt",
"chars": 1375,
"preview": "execute_process(\n COMMAND python ${CMAKE_SOURCE_DIR}/scripts/torch_info.py torch\n OUTPUT_VARIABLE TORCH_VERSION\n OUTP"
},
{
"path": "torch_bindings/bindings.h",
"chars": 2691,
"preview": "#pragma once\n\n#include <array>\n#include <string>\n\n#include <c10/cuda/CUDAStream.h>\n#include <pybind11/functional.h>\n#inc"
},
{
"path": "torch_bindings/pipeline_bindings.cpp",
"chars": 27892,
"preview": "#include \"pipeline_bindings.h\"\n\n#include \"tracing/pipeline.h\"\n#include \"viewer/viewer.h\"\n\nnamespace radfoam_bindings {\n\n"
},
{
"path": "torch_bindings/pipeline_bindings.h",
"chars": 118,
"preview": "#pragma once\n\n#include \"bindings.h\"\n\nnamespace radfoam_bindings {\n\nvoid init_pipeline_bindings(py::module &module);\n\n}"
},
{
"path": "torch_bindings/radfoam/__init__.py.in",
"chars": 881,
"preview": "import os\nimport warnings\nimport ctypes\n\nimport torch\n\ntorch_version_at_compile = \"@TORCH_VERSION@\"\ntorch_version_at_run"
},
{
"path": "torch_bindings/torch_bindings.cpp",
"chars": 2541,
"preview": "\n#include <optional>\n#include <stdexcept>\n#include <tuple>\n#include <vector>\n\n#include \"pipeline_bindings.h\"\n#include \"t"
},
{
"path": "torch_bindings/triangulation_bindings.cpp",
"chars": 8830,
"preview": "#include <memory>\n\n#include \"triangulation_bindings.h\"\n\n#include \"aabb_tree/aabb_tree.h\"\n#include \"delaunay/delaunay.h\"\n"
},
{
"path": "torch_bindings/triangulation_bindings.h",
"chars": 123,
"preview": "#pragma once\n\n#include \"bindings.h\"\n\nnamespace radfoam_bindings {\n\nvoid init_triangulation_bindings(py::module &module);"
},
{
"path": "train.py",
"chars": 11659,
"preview": "import os\nimport uuid\nimport yaml\nimport gc\nimport numpy as np\nfrom PIL import Image\nimport configargparse\nimport tqdm\ni"
},
{
"path": "viewer.py",
"chars": 1826,
"preview": "import numpy as np\nfrom PIL import Image\nimport configargparse\nimport warnings\n\nwarnings.filterwarnings(\"ignore\")\n\nimpor"
}
]
About this extraction
This page contains the full source code of the theialab/radfoam GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 73 files (1007.7 KB), approximately 273.5k tokens, and a symbol index with 244 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.