MCPcopy Create free account
hub / github.com/WolfireGames/overgrowth / UpdateNormalOverride

Function UpdateNormalOverride

Source/Objects/envobject.cpp:240–256  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

238}
239
240static void UpdateNormalOverride(EnvObject* obj, Model* model) {
241 PROFILER_ZONE(g_profiler_ctx, "UpdateNormalOverride");
242 obj->normal_override.resize(model->faces.size() / 3);
243 obj->normal_override_custom.resize(model->faces.size() / 3, vec4(0.0f));
244 for (int i = 0, len = obj->normal_override.size(); i < len; ++i) {
245 vec3 vert[3];
246 for (int vert_index = 0; vert_index < 3; ++vert_index) {
247 int start = model->faces[i * 3 + vert_index] * 3;
248 for (int axis = 0; axis < 3; ++axis) {
249 vert[vert_index][axis] = model->vertices[start + axis];
250 }
251 vert[vert_index] = obj->GetTransform() * vert[vert_index];
252 }
253 vec3 normal = normalize(cross(vert[1] - vert[0], vert[2] - vert[0]));
254 obj->normal_override[i] = mix(normal, obj->normal_override_custom[i].xyz(), obj->normal_override_custom[i][3]); // model->face_normals[i];
255 }
256}
257
258const size_t kAttribIdCountVboInstancing = 11;
259const size_t kAttribIdCountUboInstancing = 7;

Callers 1

DrawInstancesMethod · 0.85

Calls 8

vec4Class · 0.50
normalizeFunction · 0.50
crossFunction · 0.50
mixFunction · 0.50
resizeMethod · 0.45
sizeMethod · 0.45
GetTransformMethod · 0.45
xyzMethod · 0.45

Tested by

no test coverage detected