A Pen by Arifayan Idowu Olatubosun on CodePen.
List of freely available resources to study computer graphics programming.
- Creative Coding for Beginners [video] (new to programming)
- Learn C++ [book]
- Essence of Linear Algebra [video] [article]
- 3D Math Primer for Graphics and Game Development [book]
- How do Video Game Graphics Work? [video]
- 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 hidden or 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
// | |
// C++ implementaion of "A simple method to construct isotropic quasirandom blue | |
// noise point sequences" | |
// | |
// http://extremelearning.com.au/a-simple-method-to-construct-isotropic-quasirandom-blue-noise-point-sequences/ | |
// | |
// Assume 0 <= x | |
static double myfmod(double x) { return x - std::floor(x); } |
This file contains hidden or 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
auto world = GetWorld(); | |
if(world == nullptr) | |
return; | |
auto viewLocations = world->ViewLocationsRenderedLastFrame; | |
if(viewLocations.Num() == 0) | |
return; | |
FVector camLocation = viewLocations[0]; |
For particularly necessary to-do reminders, the JM_TODO
macro below will print to the build console (and on the warning/error list) as a trivial warning -- so it won't interfere with builds that treat warnings as errrors. Then you can just double-click it and jump to that spot.
#define JM_PRAGMA_STRING2(x) #x
#define JM_PRAGMA_STRING(x) JM_PRAGMA_STRING2(x)
This file contains hidden or 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
// Comments are left by me, not from the code. | |
// Because why not have a default set or make the method abstract or, really, anything but this. Luckily no one would ever | |
// think to use ::GetMaxSpeed as a divisor or anything. | |
inline float UMovementComponent::GetMaxSpeed() const | |
{ | |
return 0.f; | |
} | |
// FUN FACT: UMovementComponent defines a plethora of methods for managing the maximum speed of a component. It does not, |
This file contains hidden or 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
// NOTE: This does not result in the accessors being available for blueprint-use as they're not UFUNCTIONs. | |
UCLASS( ) | |
class URawr : public UObject | |
{ | |
GENERATED_CLASS( ) | |
protected: | |
float RawrValue; | |
This file contains hidden or 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
// Generally, developers in UE4 tend towards the following convention for enumerations: | |
UENUM( BlueprintType ) | |
enum class ENoiseGeneratorCellularType : uint8 | |
{ | |
NGCT_Natural UMETA( DisplayName = "Natural" ), | |
NGCT_Euclidean UMETA( DisplayName = "Euclidean" ), | |
NGCT_Manhattan UMETA( DisplayName = "Manhattan" ), | |
NGCT_Max UMETA( Hidden ) | |
}; |
NewerOlder