* Change some if / else if conditions to switch / case.
This commit is contained in:
Thomas Dinges
2013-05-09 15:20:00 +00:00
parent 3451baf141
commit ba55f2da64
2 changed files with 66 additions and 51 deletions

View File

@@ -124,23 +124,28 @@ SVMCompiler::SVMCompiler(ShaderManager *shader_manager_, ImageManager *image_man
int SVMCompiler::stack_size(ShaderSocketType type)
{
if(type == SHADER_SOCKET_FLOAT)
return 1;
else if(type == SHADER_SOCKET_INT)
return 1;
else if(type == SHADER_SOCKET_COLOR)
return 3;
else if(type == SHADER_SOCKET_VECTOR)
return 3;
else if(type == SHADER_SOCKET_NORMAL)
return 3;
else if(type == SHADER_SOCKET_POINT)
return 3;
else if(type == SHADER_SOCKET_CLOSURE)
return 0;
assert(0);
return 0;
int size = 0;
switch (type) {
case SHADER_SOCKET_FLOAT:
case SHADER_SOCKET_INT:
size = 1;
break;
case SHADER_SOCKET_COLOR:
case SHADER_SOCKET_VECTOR:
case SHADER_SOCKET_NORMAL:
case SHADER_SOCKET_POINT:
size = 3;
break;
case SHADER_SOCKET_CLOSURE:
size = 0;
break;
default:
assert(0);
break;
}
return size;
}
int SVMCompiler::stack_find_offset(ShaderSocketType type)
@@ -581,14 +586,20 @@ void SVMCompiler::compile_type(Shader *shader, ShaderGraph *graph, ShaderType ty
ShaderNode *node = graph->output();
ShaderInput *clin = NULL;
if(type == SHADER_TYPE_SURFACE)
clin = node->input("Surface");
else if(type == SHADER_TYPE_VOLUME)
clin = node->input("Volume");
else if(type == SHADER_TYPE_DISPLACEMENT)
clin = node->input("Displacement");
else
assert(0);
switch (type) {
case SHADER_TYPE_SURFACE:
clin = node->input("Surface");
break;
case SHADER_TYPE_VOLUME:
clin = node->input("Volume");
break;
case SHADER_TYPE_DISPLACEMENT:
clin = node->input("Displacement");
break;
default:
assert(0);
break;
}
/* clear all compiler state */
memset(&active_stack, 0, sizeof(active_stack));
@@ -604,20 +615,22 @@ void SVMCompiler::compile_type(Shader *shader, ShaderGraph *graph, ShaderType ty
if(shader->used) {
if(clin->link) {
bool generate = false;
if(type == SHADER_TYPE_SURFACE) {
/* generate surface shader */
generate = true;
shader->has_surface = true;
}
else if(type == SHADER_TYPE_VOLUME) {
/* generate volume shader */
generate = true;
shader->has_volume = true;
}
else if(type == SHADER_TYPE_DISPLACEMENT) {
/* generate displacement shader */
generate = true;
shader->has_displacement = true;
switch (type) {
case SHADER_TYPE_SURFACE: /* generate surface shader */
generate = true;
shader->has_surface = true;
break;
case SHADER_TYPE_VOLUME: /* generate volume shader */
generate = true;
shader->has_volume = true;
break;
case SHADER_TYPE_DISPLACEMENT: /* generate displacement shader */
generate = true;
shader->has_displacement = true;
break;
default:
break;
}
if(generate) {