#include "gfx/dag_uniforms.h" #include "gfx/gl_loader.h" #include #include namespace fn::gfx { static constexpr int MAX_NODES = 16; void dag_uniforms_apply(const std::vector& pipeline, unsigned int program) { float data[MAX_NODES * 4]; std::memset(data, 0, sizeof(data)); const int n = static_cast(std::min(pipeline.size(), static_cast(MAX_NODES))); for (int i = 0; i < n; ++i) { const auto& step = pipeline[static_cast(i)]; data[i * 4 + 0] = step.params[0]; data[i * 4 + 1] = step.params[1]; data[i * 4 + 2] = step.params[2]; data[i * 4 + 3] = step.params[3]; } GLint loc = glGetUniformLocation(program, "u_params"); if (loc >= 0) glUniform4fv(loc, MAX_NODES, data); } } // namespace fn::gfx