Chang the custom node shaders to be inherited by the children if left to nullptr

This commit is contained in:
Peder Bergebakken Sundt 2019-03-16 16:42:30 +01:00
parent 32ee578082
commit ce277dfce5
2 changed files with 4 additions and 4 deletions

View File

@ -368,7 +368,7 @@ void updateFrame(GLFWwindow* window) {
} }
void renderNode(SceneNode* node) { void renderNode(SceneNode* node, Gloom::Shader* parent_shader = default_shader) {
struct Light { // lights as stored in the shader struct Light { // lights as stored in the shader
// coordinates in MV space // coordinates in MV space
vec3 position; vec3 position;
@ -389,7 +389,7 @@ void renderNode(SceneNode* node) {
// activate the correct shader // activate the correct shader
Gloom::Shader* node_shader = (node->shader != nullptr) Gloom::Shader* node_shader = (node->shader != nullptr)
? node->shader ? node->shader
: default_shader; : parent_shader;
if (s != node_shader) { if (s != node_shader) {
s = node_shader; s = node_shader;
s->activate(); s->activate();
@ -435,7 +435,7 @@ void renderNode(SceneNode* node) {
} }
for(SceneNode* child : node->children) { for(SceneNode* child : node->children) {
renderNode(child); renderNode(child, node_shader);
} }
} }

View File

@ -57,7 +57,7 @@ struct SceneNode {
vec3 rotation = vec3(0, 0, 0); vec3 rotation = vec3(0, 0, 0);
vec3 scale = vec3(1, 1, 1); vec3 scale = vec3(1, 1, 1);
// set this if the shape uses a custom shader other than the default one // set this if the shape uses a custom shader other than the inherited one
Gloom::Shader* shader = nullptr; Gloom::Shader* shader = nullptr;
// A transformation matrix representing the transformation of the node's location relative to its parent. This matrix is updated every frame. // A transformation matrix representing the transformation of the node's location relative to its parent. This matrix is updated every frame.