https://github.com/voldien/opengl-samples
OpenGL Samples - Basic to Advanced
https://github.com/voldien/opengl-samples
cpp graphics graphics-programming opengl opengl-api opengl-samples
Last synced: 2 months ago
JSON representation
OpenGL Samples - Basic to Advanced
- Host: GitHub
- URL: https://github.com/voldien/opengl-samples
- Owner: voldien
- License: mit
- Created: 2020-11-04T18:12:47.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2025-11-20T11:17:07.000Z (8 months ago)
- Last Synced: 2025-11-20T11:33:09.182Z (8 months ago)
- Topics: cpp, graphics, graphics-programming, opengl, opengl-api, opengl-samples
- Language: C++
- Homepage: https://www.codeintrinsic.com/computer-graphic-programming-showcase/
- Size: 3.16 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://github.com/voldien/opengl-samples/actions/workflows/linux-build.yml)
[](https://opensource.org/licenses/MIT)
# OpenGL Sample Repository - Work In Progress

A collection of OpenGL Samples, work in progress, for personal educational purposes.
## CLI - Command Line Options
```bash
Usage:
OpenGL Sample: GLSample [OPTION...]
GLSample options:
-h, --help helper information.
-d, --debug Enable Debug View. (default: true)
-t, --time arg How long to run sample (default: 0)
-f, --fullscreen Run in FullScreen Mode
-v, --vsync Vertical Blank Sync
-g, --opengl-version arg OpenGL Version (default: -1)
-F, --filesystem arg FileSystem (default: .)
-r, --renderdoc Enable RenderDoc
-W, --width arg Set Window Width (default: -1)
-H, --height arg Set Window Height (default: -1)
-D, --display arg Display (default: -1)
-R, --dynamic-range arg Set Dynamic Range ldr,hdr16,hdr32 (default:
hdr16)
-m, --multi-sample arg Set MSAA (MultiSampling) (default: 0)
--super-multisample arg Set Super MultiSampling MSAA (default: 0)
-p, --use-postprocessing Use Post Processing (default: true)
-C, --disable-colorspace Use Color Space Convertion
-s, --glsl-version arg Override glsl version from system
(110,120,130,140,150,330...) (default: -1)
```
## Graphic Based Samples
### [**Triangle**](Samples/Triangle)

### [**Texture**](Samples/Texture)


### [**Point Lights**](Samples/PointLight)
### 
### [**Normal Mapping**](Samples/NormalMap)
### [**SkyBox Cubemap**](Samples/Skybox)

### [**SkyBox Panoramic**](Samples/Skybox)

### [**Fog**](Samples/Fog)

### [**Simple Reflection**](Samples/SimpleReflection/)
### [**Irradiance**](Samples/Irradiance/)

### [**Instance**](Samples/Instance)

### [**SubSurface Scattering**](Samples/SubSurfaceScattering)


### [**Normal**](Samples/Normal)

### [**Blinn - Phong**](Samples/PhongBlinn/)


### [**Terrain**](Samples/Terrain/)

### [**FrustumCulling**](Samples/Frustum/)

### [**Shadow Map**](Samples/ShadowMapping/)

### [**Shadow Map PCF**](Samples/ShadowMapping/)


### [**Point Shadow Light**](Samples/ShadowPointLight/)


### [**Shadow Projection**](Samples/ProjectedShadow/)

### [**Shadow Map Variance**](Samples/ShadowVariance/)
### **Shadow Volume**
### [**Tessellation Basic**](Samples/Tessellation/)
### [**MipMap Visual**](Samples/MipMapVisual/)

### [**Multipass**](Samples/MultiPass/)

### [**Deferred Rendering**](Samples/Deferred/)
### [**Ambient Occlusion**](Samples/AmbientOcclusion/)




### **Physical Based Rendering**



### [**Panoramic**](Samples/Panoramic/)


### [**Skinned Mesh**](Samples/SkinnedMesh/)
### [**Simple Ocean**](Samples/SimpleOcean/)

### [**Video Playback**](Samples/VideoPlayback/)
## Compute Shader Base Examples
### [**Ray Tracing**](Samples/RayTracing/Ray/)
### [**Game Of Life**](Samples/GameOfLife)

### [**Mandelbrot**](Samples/Mandelbrot/)

### [**ReactionDiffusion**](Samples/ReactionDiffusion)
### [**Vector Field 2D**](Samples/VectorField2D/)

### [**Compute Group Visual**](Samples/ComputeGroupVisual/)

### [**Marching Cube**](Samples/MarchingCube/)


### [**Rigidbody**](Samples/Rigidbody/)

## PostProcessing Effects
- **Chromatic Aberration**
- **Sobel Edge Detection**
- **Screen Space Ambient Occlusion**
- **Gaussian/Box Blur**
- **Mist Fog**
- **Volumetric Scattering**


- **ColorSpace**
- **Pixelate**
- **Grain**
- **Bloom**
- **Contact Shadow**
- **Vignette**
## Required Packages
```bash
sudo apt-get install pkg-config libsdl2-dev libfreeimage-dev libfmt-dev libglm-dev libgtest-dev googletest mesa-common-dev mesa-utils libopenal-dev libalut-dev
sudo apt-get install glslang-tools libavcodec-dev libavformat-dev libswscale-dev libavutil-dev binutils-dev libeigen3-dev libglu1-mesa-dev libbz2-dev libzip-dev libogg-dev libopus-dev libvorbis-dev libssl-dev
```
## Build Instruction
```bash
git submodule update --init --recursive
mkdir build && cd build
cmake ..
make
make DownloadAsset
```
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details
Models downloaded from Morgan McGuire's [Computer Graphics Archive](https://casual-effects.com/data)
## Misc Notes
### Force NVIDIA Usage
Force the system to try to use the NVIDIA GPU. This is very useful when using a system with multiple GPUs.
```bash
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia program arguments
```
### Mesa
```bash
MESA_DEBUG=1
MESA_GLSL=source
MESA_SHADER_DUMP_PATH=dump
INTEL_DEBUG=perf
```
### Export Build to Target Directory
Build Asset File
```bash
tar
```
Setup Build.
```bash
cmake .. -DCMAKE_INSTALL_PREFIX=/target -DCMAKE_BUILD_TYPE=Release
```
Install
```bash
cmake --build . --parallel $(nproc --all) --target install ;
```