3D Graphics
This project focused on implementing a procedural Value Noise generator in C++ using modular helper components for smoothing and interpolation.
Fade.hpp
to define various smoothing methods including Linear, Cosine, Smoothstep, and Quintic.Interpolation.hpp
containing reusable templates for linear, bilinear, and trilinear interpolation.NoiseCoordinate.hpp
to convert floating-point inputs into discrete cell coordinates and interpolation weights.ValueNoise.hpp
to evaluate 1D, 2D, and 3D Value Noise using the above modules, fully templated and period-adjustable.
One of the most challenging aspects was understanding the difference between layout(location = 0/1/2)
in shaders, and ensuring vertex attributes matched correctly.
Additionally, I learned that fragment output must be explicitly defined using layout(location = 0) out vec4 fFragmentColor
, and not just assigned to a variable like fragColor
.
This debugging process improved my understanding of the GLSL pipeline and the tight coupling between vertex input and fragment output stages.