Skip to content

Commit 926f7bb

Browse files
Start organising notes
1 parent 489e78c commit 926f7bb

File tree

6 files changed

+289
-3
lines changed

6 files changed

+289
-3
lines changed

.gitignore

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,139 @@
11
_build/
2+
3+
# Byte-compiled / optimized / DLL files
4+
__pycache__/
5+
*.py[cod]
6+
*$py.class
7+
8+
# C extensions
9+
*.so
10+
11+
# Distribution / packaging
12+
.Python
13+
build/
14+
develop-eggs/
15+
dist/
16+
downloads/
17+
eggs/
18+
.eggs/
19+
lib/
20+
lib64/
21+
parts/
22+
sdist/
23+
var/
24+
wheels/
25+
pip-wheel-metadata/
26+
share/python-wheels/
27+
*.egg-info/
28+
.installed.cfg
29+
*.egg
30+
MANIFEST
31+
32+
# PyInstaller
33+
# Usually these files are written by a python script from a template
34+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
35+
*.manifest
36+
*.spec
37+
38+
# Installer logs
39+
pip-log.txt
40+
pip-delete-this-directory.txt
41+
42+
# Unit test / coverage reports
43+
htmlcov/
44+
.tox/
45+
.nox/
46+
.coverage
47+
.coverage.*
48+
.cache
49+
nosetests.xml
50+
coverage.xml
51+
*.cover
52+
*.py,cover
53+
.hypothesis/
54+
.pytest_cache/
55+
56+
# Translations
57+
*.mo
58+
*.pot
59+
60+
# Django stuff:
61+
*.log
62+
local_settings.py
63+
db.sqlite3
64+
db.sqlite3-journal
65+
66+
# Flask stuff:
67+
instance/
68+
.webassets-cache
69+
70+
# Scrapy stuff:
71+
.scrapy
72+
73+
# Sphinx documentation
74+
docs/_build/
75+
_build
76+
77+
# PyBuilder
78+
target/
79+
80+
# Jupyter Notebook
81+
.ipynb_checkpoints
82+
83+
# IPython
84+
profile_default/
85+
ipython_config.py
86+
87+
# pyenv
88+
.python-version
89+
90+
# pipenv
91+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
93+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
94+
# install all needed dependencies.
95+
#Pipfile.lock
96+
97+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
98+
__pypackages__/
99+
100+
# Celery stuff
101+
celerybeat-schedule
102+
celerybeat.pid
103+
104+
# SageMath parsed files
105+
*.sage.py
106+
107+
# Environments
108+
.env
109+
.venv
110+
env/
111+
venv/
112+
ENV/
113+
env.bak/
114+
venv.bak/
115+
116+
# Spyder project settings
117+
.spyderproject
118+
.spyproject
119+
120+
# Rope project settings
121+
.ropeproject
122+
123+
# mkdocs documentation
124+
/site
125+
126+
# mypy
127+
.mypy_cache/
128+
.dmypy.json
129+
dmypy.json
130+
131+
# Pyre type checker
132+
.pyre/
133+
134+
# Java
135+
out/
136+
*.class
137+
138+
# IDEs
139+
.vscode/

_toc.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,7 @@
11
- file: index.md
2+
3+
- part: Getting started
4+
chapters:
5+
- file: doc/getting-started/the-forge
6+
- file: doc/getting-started/building
7+
- file: doc/getting-started/triangle

doc/getting-started/building.md

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
# Building TheForge
2+
3+
Does not officially support project generator. They provide IDE files for each platform.
4+
5+
Project can be found in `The-Forge\Examples_3\Unit_Tests\PC Visual Studio 2017\Unit_Tests.sln` set `Examples\01_Transformations` as startup project. Set build to DebugDx
6+
7+
## By modifying directly the example
8+
9+
Simply remove the content of the first .cpp and follow the tutorial
10+
11+
## With a new Visual Studio project
12+
13+
### Create a new project
14+
15+
Right click and create new project
16+
17+
Set the name to DebugDx or file won't be copied
18+
19+
### Copy resources in local folder
20+
21+
Shaders and GPUCfg in the same folder in src
22+
23+
Add them with add existing files
24+
25+
### Link Libraries
26+
27+
In `Configuration Properties/VC++ Directories/Library Directories`
28+
29+
```
30+
$(SolutionDir)\$(Platform)\$(Configuration);$(LibraryPath)
31+
```
32+
33+
In `Configuration Properties/Linker/Input/Additional Dependencies`
34+
35+
```
36+
LuaManager.lib;Xinput9_1_0.lib;ws2_32.lib;gainputstatic.lib;RendererDX12.lib;OS.lib;%(AdditionalDependencies)
37+
```
38+
39+
In `Configuration Properties/Linker/General/Additional Library Directories`
40+
41+
```
42+
$(GLFW_DIR)\lib
43+
```
44+
45+
### Post-build commands to copy resources to build folder
46+
47+
In `Configuration Properties/Build Events/Post-build Event`
48+
49+
```bash
50+
set SHADER_DIR=D3D12
51+
if $(Configuration) == DebugDx11 set SHADER_DIR=D3D11
52+
if $(Configuration) == ReleaseDx11 set SHADER_DIR=D3D11
53+
if $(Configuration) == DebugVk set SHADER_DIR=Vulkan
54+
if $(Configuration) == ReleaseVk set SHADER_DIR=Vulkan
55+
56+
xcopy /Y /S /D "$(ProjectDir)..\UnitTestResources\Textures\Skybox_*.dds" "$(OutDir)Textures\"
57+
xcopy /Y /S /D "$(ProjectDir)..\UnitTestResources\Textures\circlepad.dds" "$(OutDir)Textures\"
58+
xcopy /Y /S /D "$(ProjectDir)..\UnitTestResources\Fonts\*.ttf" "$(OutDir)Fonts\"
59+
xcopy /Y /S /D "$(ProjectDir)..\UnitTestResources\Fonts\*.otf" "$(OutDir)Fonts\"
60+
xcopy /Y /S /D "$(ProjectDir)..\..\..\Middleware_3\UI\Shaders\%SHADER_DIR%\*.*" "$(OutDir)Shaders\"
61+
xcopy /Y /S /D "$(ProjectDir)..\..\..\Middleware_3\Text\Shaders\%SHADER_DIR%\*.*" "$(OutDir)Shaders\"
62+
xcopy /Y /S /D "$(ProjectDir)..\src\$(ProjectName)\Shaders\%SHADER_DIR%\*.*" "$(OutDir)Shaders\"
63+
xcopy /Y /S /D "$(ProjectDir)..\src\$(ProjectName)\GPUCfg\*.*" "$(OutDir)GPUCfg\"
64+
65+
xcopy /Y /D "$(SolutionDir)$(Platform)\$(Configuration)\*.dll" "$(OutDir)"
66+
```
67+
68+
Note that the `CompiledShader` folder is created at runtime if shader compiled not found
69+
70+
### Set project build order
71+
72+
With dependencies on master project properties
73+
74+
```
75+
gainputstatic
76+
LuaManager
77+
OS
78+
RendererDX11
79+
RendererDX12
80+
RendererVulkan
81+
```
82+
83+
## With a community CMake
84+
85+
https://github.com/rextimmy/the-forge-glfw
86+

doc/getting-started/the-forge.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# The Forge
2+
3+
## What is The Forge ?
4+
5+
## Who created it ?
6+
7+
## Who uses it ?
8+
9+
## What are the alternatives ?
10+
11+
## Why do we deciced to use it ?
12+
13+

doc/getting-started/triangle.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Rendering a Triangle

index.md

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Introduction
22

3-
Explanation and examples of modern rendering techniques commonly used for game engines
3+
Explanation and examples of modern rendering techniques commonly used for game engines.
44

55
```{tip}
66
If you are on your phone consider browsing through this <a href="https://rendering-techniques.learn-computer-graphics.com/" target="_blank">link</a> for better performance.
@@ -14,6 +14,7 @@ If you are on your phone consider browsing through this <a href="https://renderi
1414
| --- | --- | --- |
1515
| [WebGL Fundamentals](https://webglfundamentals.org/) | - | Various tutorial on rendering techniques for WebGL 1 & 2 |
1616
| [Learn OpenGL](https://learnopengl.com/) | [Joey de Vries](http://joeydevries.com/) | Various tutorial on rendering techniques for OpenGL |
17+
| [Vulkan Tutorial](https://vulkan-tutorial.com/) | [Alexander Overvoorde](https://while.io/) | A step-by-step tutorial to use Vulkan |
1718
| [Advances in Real Time rendering](https://advances.realtimerendering.com/) | - | Slides and Videos from SigGraph conferences |
1819
| [Scratch A Pixel](https://www.scratchapixel.com/) | - | Tutorial on Computer Graphics theory |
1920

@@ -33,24 +34,65 @@ If you are on your phone consider browsing through this <a href="https://renderi
3334
| [ID software tiago](https://twitter.com/idsoftwaretiago) | [Tiago Sousa](https://www.linkedin.com/in/tsousa/) | Lead rendering programmer at ID Software |
3435
| [PataBlog](https://patapom.com/blog/) | - | Rendering artisan on Dishonored 2 |
3536
| [Create the matrix](reatethematrix.blogspot.com) | [Anoop Ravi Thomas](https://twitter.com/createthematrix) | Senior Graphics Programmer at Rockstar San Diego |
37+
| [Game Art Tricks](https://simonschreibt.de/) | [Simon Schreibt](https://linktr.ee/simonschreibt) | VFX artist at Wild Sheep Studio in Montpellier France |
38+
39+
#### Articles
40+
41+
| Name | Author | Description |
42+
| ------------------------------------------------------------ | ----------------- | ----------- |
43+
| [How Unreal renders a frame](https://interplayoflight.wordpress.com/2017/10/25/how-unreal-renders-a-frame/) | Kostas Anagnostou | |
44+
| [Data driven rendering pipeline](https://jorenjoestar.github.io/post/data_driven_rendering_pipeline/) | Gabriel Sassone | |
3645

3746
### Videos
3847

48+
#### Youtube channels
49+
3950
| Name | Author | Description |
4051
| --- | --- | --- |
4152
| [SketchPunkLabs - Learn WebGL](https://www.youtube.com/channel/UCSnyjB_8iVxi2ZAfn_1L6tA) | - | Various tutorials on rendering techniques with WebGL |
4253
| [GDC Vault](https://www.gdcvault.com/free) | - | Many conferences from professionals in the game industry |
4354
| [The Cherno](https://www.youtube.com/channel/UCQ-W1KE9EYfdxhL6S4twUNw) | - | Various videos on programming and graphics programming with content on OpenGL |
4455
| [ChiliTomatoNoodle](https://www.youtube.com/user/ChiliTomatoNoodle) | - | Various videos on programming and graphics programming with content on DirectX |
4556

46-
### Code samples
57+
#### On architecture
58+
59+
| Name | Description | Analysis |
60+
| ------------------------------------------------------------ | ----------------------------------------- | ------------------------------------------------------------ |
61+
| [GDC - Multithreading Destiny](https://www.youtube.com/watch?v=v2Q_zHG3vqg) | GDC 2015 talk by Barry Genova from Bungie | Destiny datum array accessed with handles, so there is no copy (maybe only on the rendering side, because it is not in sync with the simulation). Check at 29 min<br/><br/>Read and writes are declared with a policy, and a check is done between the jobs to check if the policies are compatible before the task starts.<br/><br/>If it is not, there is an assert and you need to review the way it is structured :<br/>- Start after the end of the overlap (dependency)<br/>- Copy data / cache data<br/>- Queue messages so that the overlapping action is taken latter<br/>- Change algorithm<br/><br/>Those checks are built-out in release. They call it the "Execution Environment" |
62+
63+
### API Code samples
4764

4865
| Name | Description |
4966
| ------------------------------------------------------------ | ------------------------------------------------------------ |
5067
| [Sacha Willem's Vulkan](https://github.com/SaschaWillems/Vulkan) | Various rendering techniques with the Vulkan API |
5168
| [DirectX graphics samples](https://github.com/microsoft/DirectX-Graphics-Samples) | Microsoft official repository for code samples in DirectX 12 |
5269
| [Vulkan Samples](https://github.com/KhronosGroup/Vulkan-Samples) | Khronos official repository for code samples in Vulkan |
53-
| [vk denoise](https://github.com/nvpro-samples/vk_denoise) | |
70+
71+
### Renderers
72+
73+
This [Gist](https://gist.github.com/Erfan-Ahmadi/defe4ab99af97f624b68e0dccb0712ea) offers multiple links related to renderers
74+
75+
| Logo | Name | Description |
76+
| --- | --- | --- |
77+
| <img src="https://github.com/DiligentGraphics/DiligentCore/raw/master/media/diligentgraphics-logo.png" height="40px" /> | [Diligent Engine](https://github.com/DiligentGraphics/DiligentEngine) | |
78+
| <img src="https://d2.alternativeto.net/dist/icons/panda3d_144587.png?width=128&height=128&mode=crop&upscale=false" height="40px" /> | [Panda3D](https://www.panda3d.org/) | |
79+
| <img src="https://google.github.io/filament/images/filament_logo_small.png" height="40px" /> | [Google Filament](https://github.com/google/filament) | |
80+
| <img src="https://theforge.dev/wp-content/uploads/2019/09/theforge-marque.svg" height="40px" /> | [The Forge](https://theforge.dev/) | |
81+
| <img src="https://img.itch.zone/aW1hZ2UyL2phbS8zMDg1NzAvNTYyMTEwMi5wbmc=/original/KMlSyG.png" height="40px" /> | [Unity graphics package](https://github.com/Unity-Technologies/Graphics) | |
82+
83+
### Open-source Game engines
84+
85+
| Logo | Name | Description |
86+
| ------------------------------------------------------------ | ------------------------------------------------------------ | ----------- |
87+
| <img src="https://cdn.iconscout.com/icon/free/png-256/unreal-engine-555438.png" height="40px" /> | [Unreal Engine 4](https://github.com/EpicGames/UnrealEngine) | |
88+
| <img src="https://cdn.icon-icons.com/icons2/2248/PNG/512/cryengine_icon_138710.png" height="40px" /> | [Cry Engine](https://github.com/CRYTEK/CRYENGINE) | |
89+
| <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/6a/Godot_icon.svg/1024px-Godot_icon.svg.png" height="40px" /> | [Godot](https://github.com/godotengine/godot) | |
90+
| <img src="https://d2.alternativeto.net/dist/icons/paradox-game-engine_166766.png?width=128&height=128&mode=crop&upscale=false" height="40px" /> | [Stride](https://stride3d.net/) | |
91+
| <img src="https://avatars0.githubusercontent.com/u/6214737?s=200&v=4" height="40px" /> | [NeoAxis Engine](https://github.com/NeoAxis/NeoAxisEngine) | |
92+
| <img src="https://avatars2.githubusercontent.com/u/25413467?s=200&v=4" height="40px" /> | [Heaps Haxe engine](https://heaps.io/) | |
93+
| <img src="https://flaxengine.com/wp-content/uploads/2020/12/logo_1_150x100.png" height="40px" /> | [Flax Engine](https://flaxengine.com/) | |
94+
| <img src="https://github.com/turanszkij/WickedEngine/raw/master/Content/logo_small.png" height="40px" /> | [Wicked Engine](https://github.com/turanszkij/WickedEngine) | |
95+
5496

5597
### Books
5698

0 commit comments

Comments
 (0)