Code cleanup / Cycles:

* Change some more if / else if conditions to switch / case. 
* Avoid an unneeded variable casting in phong_ramp closure.
This commit is contained in:
Thomas Dinges 2013-05-10 12:51:30 +00:00
parent 5424c1fe55
commit 96a11219f6
3 changed files with 43 additions and 33 deletions

@ -73,31 +73,35 @@ ParticleCurveData::~ParticleCurveData()
void interp_weights(float t, float data[4], int type)
{
float t2, t3, fc;
switch (type) {
case CURVE_LINEAR:
data[0] = 0.0f;
data[1] = -t + 1.0f;
data[2] = t;
data[3] = 0.0f;
break;
case CURVE_CARDINAL:
t2 = t * t;
t3 = t2 * t;
fc = 0.71f;
if(type == CURVE_LINEAR) {
data[0] = 0.0f;
data[1] = -t + 1.0f;
data[2] = t;
data[3] = 0.0f;
}
else if(type == CURVE_CARDINAL) {
t2 = t * t;
t3 = t2 * t;
fc = 0.71f;
data[0] = -fc * t3 + 2.0f * fc * t2 - fc * t;
data[1] = (2.0f - fc) * t3 + (fc - 3.0f) * t2 + 1.0f;
data[2] = (fc - 2.0f) * t3 + (3.0f - 2.0f * fc) * t2 + fc * t;
data[3] = fc * t3 - fc * t2;
break;
case CURVE_BSPLINE:
t2 = t * t;
t3 = t2 * t;
data[0] = -fc * t3 + 2.0f * fc * t2 - fc * t;
data[1] = (2.0f - fc) * t3 + (fc - 3.0f) * t2 + 1.0f;
data[2] = (fc - 2.0f) * t3 + (3.0f - 2.0f * fc) * t2 + fc * t;
data[3] = fc * t3 - fc * t2;
}
else if(type == CURVE_BSPLINE) {
t2 = t * t;
t3 = t2 * t;
data[0] = -0.16666666f * t3 + 0.5f * t2 - 0.5f * t + 0.16666666f;
data[1] = 0.5f * t3 - t2 + 0.66666666f;
data[2] = -0.5f * t3 + 0.5f * t2 + 0.5f * t + 0.16666666f;
data[3] = 0.16666666f * t3;
data[0] = -0.16666666f * t3 + 0.5f * t2 - 0.5f * t + 0.16666666f;
data[1] = 0.5f * t3 - t2 + 0.66666666f;
data[2] = -0.5f * t3 + 0.5f * t2 + 0.5f * t + 0.16666666f;
data[3] = 0.16666666f * t3;
break;
default:
break;
}
}

@ -82,15 +82,21 @@ static void mikk_get_texture_coordinate(const SMikkTSpaceContext *context, float
MikkUserData *userdata = (MikkUserData*)context->m_pUserData;
BL::MeshTextureFace tf = userdata->layer.data[face_num];
float3 tfuv;
if(vert_num == 0)
tfuv = get_float3(tf.uv1());
else if(vert_num == 1)
tfuv = get_float3(tf.uv2());
else if(vert_num == 2)
tfuv = get_float3(tf.uv3());
else
tfuv = get_float3(tf.uv4());
switch (vert_num) {
case 0:
tfuv = get_float3(tf.uv1());
break;
case 1:
tfuv = get_float3(tf.uv2());
break;
case 2:
tfuv = get_float3(tf.uv3());
break;
default:
tfuv = get_float3(tf.uv4());
break;
}
uv[0] = tfuv.x;
uv[1] = tfuv.y;

@ -69,7 +69,7 @@ __device float3 bsdf_phong_ramp_eval_reflect(const ShaderClosure *sc, const floa
float cosRI = dot(R, omega_in);
if (cosRI > 0) {
float cosp = powf(cosRI, m_exponent);
float common = 0.5f * (float) M_1_PI_F * cosp;
float common = 0.5f * M_1_PI_F * cosp;
float out = cosNI * (m_exponent + 2) * common;
*pdf = (m_exponent + 1) * common;
return bsdf_phong_ramp_get_color(sc, colors, cosp) * out;