void main(void) { #ifdef HAS_OES_DERIVATIVES highp vec3 materialBump = mix( vec3(0.5, 0.5, 1.0), texture2D( uMapNormal, vec2(vKdMapCoord.s / uMapNormalScale.s, vKdMapCoord.t / uMapNormalScale.t)).xyz, uNormalEmphasis); materialBump = normalize (materialBump*2.0 - 1.0); highp vec3 normal = perturb_normal( normalize(vNormal.xyz), vPosition.xyz, materialBump, vec2(vKdMapCoord.s / uMapNormalScale.s, vKdMapCoord.t / uMapNormalScale.t) ); gl_FragColor = vec4(normal, vpPosition.z/vpPosition.w); //gl_FragColor = vec4(materialBump, vpPosition.z/vpPosition.w); //gl_FragColor = vec4(normal.x*0.5 + 0.5, normal.y*0.5 + 0.5, normal.z*0.5 + 0.5, 1); #else gl_FragColor = vec4(vNormal.xyz, vpPosition.z/vpPosition.w); #endif }
void tangle_normal(double *nvec, double *obj_coor, double *pert, t_obj *obj) { nvec[0] = 4 * pow(obj_coor[0], 3) - 20 * pow(obj->size[0], 2) * obj_coor[0]; nvec[1] = 4 * pow(obj_coor[1], 3) - 20 * pow(obj->size[0], 2) * obj_coor[1]; nvec[2] = 4 * pow(obj_coor[2], 3) - 20 * pow(obj->size[0], 2) * obj_coor[2]; if (obj->ipt->bump > ZERO) apply_bump(nvec, obj_coor, obj->ipt->bump); perturb_normal(nvec, obj_coor, pert); }
void tore_normal(double *nvec, double *obj_coor, double *pert, t_obj *obj) { double k; k = 4 * (pow(obj_coor[0], 2) + pow(obj_coor[1], 2) + pow(obj_coor[2], 2) + pow(obj->size[0], 2) - pow(obj->size[1], 2)); nvec[0] = obj_coor[0] * k - 8.0 * pow(obj->size[0], 2) * obj_coor[0]; nvec[1] = obj_coor[1] * k - 8.0 * pow(obj->size[0], 2) * obj_coor[1]; nvec[2] = obj_coor[2] * k; if (obj->ipt->bump > ZERO) apply_bump(nvec, obj_coor, obj->ipt->bump); perturb_normal(nvec, obj_coor, pert); }