- 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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% Some predefined strings for conferences & journals | |
@string{AAAI = "Conference on Artificial Intelligence (AAAI)"} | |
@string{AISTATS = "International Conference on Artificial Intelligence and Statistics (AISTATS)"} | |
@string{Bernoulli = "Bernoulli"} | |
@string{Biometrika = "Biometrika"} | |
@string{CandG = "Computers \& Graphics"} | |
@string{CACM = "Commun. ACM"} | |
@string{CG_SIGGRAPH = "Comput. Graph. (Proc. SIGGRAPH)"} | |
@string{CGA = "IEEE Comput. Graph. Appl."} | |
@string{CGF = "Comput. Graph. Forum"} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
struct CpuGpuTimestampInfo { | |
VkDevice device; | |
VkQueue queue; | |
uint32_t queue_family_index; | |
float timestamp_period; // Copy from VkPhysicalDeviceLimits::timestampPeriod | |
uint32_t timestamp_valid_bits; // Copy from VkQueueFamilyProperties::timestampValidBits | |
}; | |
VkResult GetCpuGpuTimestamp(const CpuGpuTimestampInfo *info, | |
std::chrono::high_resolution_clock::time_point *out_cpu_time, uint64_t *out_gpu_time) { | |
if (info->timestamp_valid_bits == 0) { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Can load easier and more indepth with https://github.com/Hydroque/DDSLoader | |
Because a lot of crappy, weird DDS file loader files were found online. The resources are actually VERY VERY limited. | |
Written in C, can very easily port to C++ through casting mallocs (ensure your imports are correct), goto can be replaced. | |
https://www.gamedev.net/forums/topic/637377-loading-dds-textures-in-opengl-black-texture-showing/ | |
http://www.opengl-tutorial.org/beginners-tutorials/tutorial-5-a-textured-cube/ | |
^ Two examples of terrible code |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// smallgdpt: a simple implementation of gradient domain path tracing | |
// https://mediatech.aalto.fi/publications/graphics/GPT/ | |
// adapted from smallpt by Kevin Beason http://www.kevinbeason.com/smallpt/ | |
// and a screened poisson solver by Pravin Bhat http://grail.cs.washington.edu/projects/screenedPoissonEq/ | |
// to build, type: g++ -o smallgdpt -fopenmp -O3 smallgdpt.cpp -L/usr/local/lib -lm -lfftw3 | |
// you will need fftw3 http://www.fftw.org/ to compile | |
// usage: ./smallgdpt [number of samples per pixel] | |
#include <fftw3.h> | |
#include <math.h> | |
#include <stdlib.h> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// float->half variants. | |
// by Fabian "ryg" Giesen. | |
// | |
// I hereby place this code in the public domain, as per the terms of the | |
// CC0 license: | |
// | |
// https://creativecommons.org/publicdomain/zero/1.0/ | |
// | |
// float_to_half_full: This is basically the ISPC stdlib code, except | |
// I preserve the sign of NaNs (any good reason not to?) |