- 2011 - A trip through the Graphics Pipeline 2011
- 2015 - Life of a triangle - NVIDIA's logical pipeline
- 2015 - Render Hell 2.0
- 2016 - How bad are small triangles on GPU and why?
- 2017 - GPU Performance for Game Artists
- 2019 - Understanding the anatomy of GPUs using Pokémon
- 2020 - GPU ARCHITECTURE RESOURCES
Interesting libraries I might like to use in a project... | |
Asset loading: | |
assetsys.h - virtual filesystem with ZIP backing, overlaying, etc https://github.com/mattiasgustavsson/libs/blob/master/docs/assetsys.md | |
cute_filewatch.h - file modification watching, for runtime reloading etc https://github.com/RandyGaul/cute_headers/blob/master/cute_filewatch.h | |
flatbuffers - data serialization, zero-copy deserialization, extensible schemas https://github.com/google/flatbuffers | |
stb_image - https://github.com/nothings/stb/blob/master/stb_image.h | |
tinyexr - https://github.com/syoyo/tinyexr | |
tinygltf - https://github.com/syoyo/tinygltf | |
tinyobjloader - https://github.com/syoyo/tinyobjloader |
For a brief user-level introduction to CMake, watch C++ Weekly, Episode 78, Intro to CMake by Jason Turner. LLVM’s CMake Primer provides a good high-level introduction to the CMake syntax. Go read it now.
After that, watch Mathieu Ropert’s CppCon 2017 talk Using Modern CMake Patterns to Enforce a Good Modular Design (slides). It provides a thorough explanation of what modern CMake is and why it is so much better than “old school” CMake. The modular design ideas in this talk are based on the book [Large-Scale C++ Software Design](https://www.amazon.de/Large-Scale-Soft
From metal documentation: | |
"Command buffer and command encoder objects are transient and designed for a single use. | |
They are very inexpensive to allocate and deallocate, so their creation methods return autoreleased objects." | |
https://developer.apple.com/library/content/documentation/Miscellaneous/Conceptual/MetalProgrammingGuide/Cmd-Submiss/Cmd-Submiss.html | |
Autorelease example: | |
NSAutoreleasePool* autoreleasePool = [[NSAutoreleasePool alloc] init]; | |
//c is an autoreleased object |
sRGB learning curve
https://gamedevdaily.io/the-srgb-learning-curve-773b7f68cf7a#.y9sitvhmm
Color Math
http://www.essentialmath.com/GDC2015/VanVerth_Jim_DoingMathwRGB.pdf
The Importance of Terminology and sRGB Uncertainty
http://colour-science.org/posts/the-importance-of-terminology-and-srgb-uncertainty/
import bpy | |
from mathutils import Vector | |
import bmesh | |
import numpy as np | |
sig = 0.3 | |
n_frames = 101 | |
bpy.context.scene.frame_end = n_frames |
The easiest way to start using the LLVM C++ API by example is to have LLVM generate the API usage for a given code sample. In this example it will emit the code required to rebuild the test.c
sample by using LLVM:
$ clang -c -emit-llvm test.c -o test.ll
$ llc -march=cpp test.ll -o test.cpp