MCPcopy Create free account
hub / github.com/TombEngine/TombEngine / Update

Method Update

TombEngine/Renderer/Frustum.cpp:6–70  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4namespace TEN::Renderer
5{
6 void Frustum::Update(const Matrix& view, const Matrix& projection)
7 {
8 std::array<float, 16> clip;
9 clip[0] = view._11 * projection._11 + view._12 * projection._21 + view._13 * projection._31 + view._14 * projection._41;
10 clip[1] = view._11 * projection._12 + view._12 * projection._22 + view._13 * projection._32 + view._14 * projection._42;
11 clip[2] = view._11 * projection._13 + view._12 * projection._23 + view._13 * projection._33 + view._14 * projection._43;
12 clip[3] = view._11 * projection._14 + view._12 * projection._24 + view._13 * projection._34 + view._14 * projection._44;
13
14 clip[4] = view._21 * projection._11 + view._22 * projection._21 + view._23 * projection._31 + view._24 * projection._41;
15 clip[5] = view._21 * projection._12 + view._22 * projection._22 + view._23 * projection._32 + view._24 * projection._42;
16 clip[6] = view._21 * projection._13 + view._22 * projection._23 + view._23 * projection._33 + view._24 * projection._43;
17 clip[7] = view._21 * projection._14 + view._22 * projection._24 + view._23 * projection._34 + view._24 * projection._44;
18
19 clip[8] = view._31 * projection._11 + view._32 * projection._21 + view._33 * projection._31 + view._34 * projection._41;
20 clip[9] = view._31 * projection._12 + view._32 * projection._22 + view._33 * projection._32 + view._34 * projection._42;
21 clip[10] = view._31 * projection._13 + view._32 * projection._23 + view._33 * projection._33 + view._34 * projection._43;
22 clip[11] = view._31 * projection._14 + view._32 * projection._24 + view._33 * projection._34 + view._34 * projection._44;
23
24 clip[12] = view._41 * projection._11 + view._42 * projection._21 + view._43 * projection._31 + view._44 * projection._41;
25 clip[13] = view._41 * projection._12 + view._42 * projection._22 + view._43 * projection._32 + view._44 * projection._42;
26 clip[14] = view._41 * projection._13 + view._42 * projection._23 + view._43 * projection._33 + view._44 * projection._43;
27 clip[15] = view._41 * projection._14 + view._42 * projection._24 + view._43 * projection._34 + view._44 * projection._44;
28
29 // This will extract the LEFT side of the frustum.
30 frustum[1][0] = clip[3] - clip[0];
31 frustum[1][1] = clip[7] - clip[4];
32 frustum[1][2] = clip[11] - clip[8];
33 frustum[1][3] = clip[15] - clip[12];
34 NormalizePlane(1);
35
36 // This will extract the RIGHT side of the frustum.
37 frustum[0][0] = clip[3] + clip[0];
38 frustum[0][1] = clip[7] + clip[4];
39 frustum[0][2] = clip[11] + clip[8];
40 frustum[0][3] = clip[15] + clip[12];
41 NormalizePlane(0);
42
43 // This will extract the BOTTOM side of the frustum.
44 frustum[2][0] = clip[3] + clip[1];
45 frustum[2][1] = clip[7] + clip[5];
46 frustum[2][2] = clip[11] + clip[9];
47 frustum[2][3] = clip[15] + clip[13];
48 NormalizePlane(2);
49
50 // This will extract the TOP side of the frustum.
51 frustum[3][0] = clip[3] - clip[1];
52 frustum[3][1] = clip[7] - clip[5];
53 frustum[3][2] = clip[11] - clip[9];
54 frustum[3][3] = clip[15] - clip[13];
55 NormalizePlane(3);
56
57 // This will extract the BACK side of the frustum.
58 frustum[4][0] = clip[3] + clip[2];
59 frustum[4][1] = clip[7] + clip[6];
60 frustum[4][2] = clip[11] + clip[10];
61 frustum[4][3] = clip[15] + clip[14];
62 NormalizePlane(4);
63

Callers 12

DrawRoomSortedMethod · 0.45
DrawItemSortedMethod · 0.45
DrawStaticSortedMethod · 0.45
DrawHairSortedMethod · 0.45
InterpolateCameraMethod · 0.45
RenderViewCameraMethod · 0.45
DrawSpritesMethod · 0.45
DrawSingleSpriteMethod · 0.45
DrawSpriteSortedMethod · 0.45
CollectStaticsMethod · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected