* 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

@@ -80,17 +80,19 @@ bool MeshManager::displace(Device *device, DeviceScene *dscene, Scene *scene, Me
int prim = mesh->tri_offset + i; int prim = mesh->tri_offset + i;
float u, v; float u, v;
if(j == 0) { switch (j) {
case 0:
u = 1.0f; u = 1.0f;
v = 0.0f; v = 0.0f;
} break;
else if(j == 1) { case 1:
u = 0.0f; u = 0.0f;
v = 1.0f; v = 1.0f;
} break;
else { default:
u = 0.0f; u = 0.0f;
v = 0.0f; v = 0.0f;
break;
} }
/* back */ /* back */

View File

@@ -124,23 +124,28 @@ SVMCompiler::SVMCompiler(ShaderManager *shader_manager_, ImageManager *image_man
int SVMCompiler::stack_size(ShaderSocketType type) int SVMCompiler::stack_size(ShaderSocketType type)
{ {
if(type == SHADER_SOCKET_FLOAT) int size = 0;
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;
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); assert(0);
return 0; break;
}
return size;
} }
int SVMCompiler::stack_find_offset(ShaderSocketType type) 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(); ShaderNode *node = graph->output();
ShaderInput *clin = NULL; ShaderInput *clin = NULL;
if(type == SHADER_TYPE_SURFACE) switch (type) {
case SHADER_TYPE_SURFACE:
clin = node->input("Surface"); clin = node->input("Surface");
else if(type == SHADER_TYPE_VOLUME) break;
case SHADER_TYPE_VOLUME:
clin = node->input("Volume"); clin = node->input("Volume");
else if(type == SHADER_TYPE_DISPLACEMENT) break;
case SHADER_TYPE_DISPLACEMENT:
clin = node->input("Displacement"); clin = node->input("Displacement");
else break;
default:
assert(0); assert(0);
break;
}
/* clear all compiler state */ /* clear all compiler state */
memset(&active_stack, 0, sizeof(active_stack)); 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(shader->used) {
if(clin->link) { if(clin->link) {
bool generate = false; bool generate = false;
if(type == SHADER_TYPE_SURFACE) {
/* generate surface shader */ switch (type) {
case SHADER_TYPE_SURFACE: /* generate surface shader */
generate = true; generate = true;
shader->has_surface = true; shader->has_surface = true;
} break;
else if(type == SHADER_TYPE_VOLUME) { case SHADER_TYPE_VOLUME: /* generate volume shader */
/* generate volume shader */
generate = true; generate = true;
shader->has_volume = true; shader->has_volume = true;
} break;
else if(type == SHADER_TYPE_DISPLACEMENT) { case SHADER_TYPE_DISPLACEMENT: /* generate displacement shader */
/* generate displacement shader */
generate = true; generate = true;
shader->has_displacement = true; shader->has_displacement = true;
break;
default:
break;
} }
if(generate) { if(generate) {