Content uploaded by Matthias Trapp
Author content
All content in this area was uploaded by Matthias Trapp on Jan 02, 2019
Content may be subject to copyright.
02/22/2013 Interactive Rendering of Complex 3D Treemaps :: Matthias Trapp 2
SECTION I
02/22/2013 Interactive Rendering of Complex 3D Treemaps :: Matthias Trapp 4
▪
▪
▪
▪
▪
▪
▪
02/22/2013 Rendering of Complex 3D Treemaps :: Matthias Trapp 5
Rendering/Rasterization of 3D Rendering Primitives
Generation of 3D Rendering Primitives
Mapping of Thematic Data to Treemap Items
02/22/2013 Interactive Rendering of Complex 3D Treemaps :: Matthias Trapp 6
Computation of 2D Treemap Layout
02/22/2013 Rendering of Complex 3D Treemaps :: Matthias Trapp 7
▪
▪
▪
▪
02/22/2013 Rendering of Complex 3D Treemaps :: Matthias Trapp 8
→
→
→
▪
▪
▪
→
02/22/2013 Rendering of Complex 3D Treemaps :: Matthias Trapp 9
SECTION II
▪
▪
▪
▪
▪
▪
▪
▪
02/22/2013 Rendering of Complex 3D Treemaps :: Matthias Trapp 11
→
→
02/22/2013 Rendering of Complex 3D Treemaps :: Matthias Trapp 12
02/22/2013 Rendering of Complex 3D Treemaps :: Matthias Trapp 13
02/22/2013 Interactive Rendering of Complex 3D Treemaps :: Matthias Trapp 14
02/22/2013 Interactive Rendering of Complex 3D Treemaps :: Matthias Trapp 15
02/22/2013 Interactive Rendering of Complex 3D Treemaps :: Matthias Trapp 16
02/22/2013 Interactive Rendering of Complex 3D Treemaps :: Matthias Trapp 17
▪
▪
▪
02/22/2013 Rendering of Complex 3D Treemaps :: Matthias Trapp 18
SECTION III
▪
▪
▪
02/22/2013 Rendering of Complex 3D Treemaps :: Matthias Trapp 20
02/22/2013 Rendering of Complex 3D Treemaps :: Matthias Trapp 21
▪
▪
▪
▪
▪
▪
▪
▪
▪
▪
02/22/2013 Rendering of Complex 3D Treemaps :: Matthias Trapp 22
02/22/2013 Rendering of Complex 3D Treemaps :: Matthias Trapp 23
( ) ( )
( ) ( )
=
−=−=
otherwisefalse
batrue
llingpassSizeCu
ppppbppppa yyyyxxxx
70707070 ,,min,,max,,min,,max
02/22/2013 Interactive Rendering of Complex 3D Treemaps :: Matthias Trapp 24
bool passCulling(const in mat4 mvp, const in vec4 vertex, const in vec4 dimensions,
const in bool applyViewFrustumCulling, const in bool applySizeCulling)
{ float cPMaxX=-10000.0;float cPMinX=10000.0;float cPMaxY=-10000.0;float cPMinY=10000.0;
bool passCulling = true;
if(useViewFrustumCulling)
{ // 1. Do conservative culling and test only center of item
vec4 V = mvp * vertex;
passCulling=((-V.w<V.x)&&(V.x<V.w))&&((-V.w<V.y)&&(V.y<V.w))&&((-V.w<V.z)&&(V.z<V.w));
if(!passCulling)
{ // 2. Perform precise culling if item center is not in frustum
vec4 AABB[8];
for (int i = 0; i < 8; i++){
AABB[i] = mvp * (vertex + VERTEX[i] * dimensions);
vec4 p = AABB[i] / AABB[i].w;
p.xy = (p.xy + 1.0) * (viewport.zw * 0.5) + viewport.xy;
cPMaxX = max(cPMaxX, p.x); cPMinX = min(cPMinX, p.x);
cPMaxY = max(cPMaxY, p.y); cPMinY = min(cPMinY, p.y);
} //endfor
// 2. Perform precise culling if item center is not in frustum
int bounds[6] = int[6](0,0,0,0,0,0);
for(int i = 0; i < 8; i++){
if(AABB[i].x>AABB[i].w) bounds[0]++; if(AABB[i].x<-AABB[i].w) bounds[1]++;
if(AABB[i].y>AABB[i].w) bounds[2]++; if(AABB[i].y<-AABB[i].w) bounds[3]++;
if(AABB[i].z>AABB[i].w) bounds[4]++; if(AABB[i].z<-AABB[i].w) bounds[5]++;
}//endfor
for(int i = 0; i < 6; i++) if(bounds[i]==8) passCulling = false;
}//endif }//endif
// 3. Apply size culling if enable to every visible item
if(passCulling && applyViewFrustumCulling && useSizeCulling)
passCulling = ((abs(cPMaxX)-abs(cPMinX))*(abs(cPMaxY)-abs(cPMinY)))
> float(pixelSizeThreshold);
return passCulling;
}
▪
▪
▪
02/22/2013 Rendering of Complex 3D Treemaps :: Matthias Trapp 25
02/22/2013 Interactive Rendering of Complex 3D Treemaps :: Matthias Trapp 26
SECTION IV
▪ →
▪
▪
02/22/2013 Interactive Rendering of Complex 3D Treemaps :: Matthias Trapp 28
▪
▪
▪
▪
▪
▪
02/22/2013 Rendering of Complex 3D Treemaps :: Matthias Trapp 29
02/22/2013 Rendering of Complex 3D Treemaps :: Matthias Trapp 30
Shape Generation Pseudo
Instancing
UBO
Instancing
TBO
Instancing
Indexed
VBO
Non-Indexed
VBO
Intermediate
Mode
13.884 0,38 1,68 1,47 1,49 0,63 1,37 5,12
98.858 1,75 6,28 4,01 4,01 3,42 8,67 35,45
365.645 6,15 27,49 15,91 14,93 12,57 32,35 133,05
614.920 14,76 60,88 31,12 31,51 28,46 54,71 220,01
0
50
100
150
200
250
milliseconds
▪
▪
▪
▪
02/22/2013 Interactive Rendering of Complex 3D Treemaps :: Matthias Trapp 31
CPU GPU CPU GPU CPU GPU CPU GPU
13.884 98.858 365.645 614.920
Shape Generation 444288 444368 3163456 3163536 11700640 11700640 19677440 19677520
Pseudo Instancing 444368 444368 3163536 3163536 11700640 11700640 19677520 19677520
UBO Instancing 444368 444368 3163536 3163536 11700640 11700640 19677520 19677520
TBO Instancing 444368 444368 3163536 3163536 11700640 11700640 19677520 19677520
Indexed VBO 1999296 1555008 14235552 11072096 52652880 40952240 88548480 68871040
Non-Indexed VBO 15439008 14994720 109930096 106766640 406597240 394896600 683791040 664113600
Intermediate Mode 444288 0 3163456 0 11700640 0 19677440 0
1
10
100
1000
10000
100000
1000000
10000000
100000000
1E+09
byte
02/22/2013 Rendering of Complex 3D Treemaps :: Matthias Trapp 32
▪
▪
▪
▪
▪
▪
▪
▪
▪
▪
02/22/2013 Rendering of Complex 3D Treemaps :: Matthias Trapp 33
SECTION V
02/22/2013 Interactive Rendering of Complex 3D Treemaps :: Matthias Trapp 35
low overdrawhigh overdraw
02/22/2013 Interactive Rendering of Complex 3D Treemaps :: Matthias Trapp 36
L2
L1
L0
Independent Representation Interdependent Representation
Unnecessary Item Overdraw
A B
Item Origin
L ~ Hierachy Level of Item
02/22/2013 Interactive Rendering of Complex 3D Treemaps :: Matthias Trapp 37
02/22/2013 Rendering of Complex 3D Treemaps :: Matthias Trapp 38
▪
▪
▪
▪
▪
02/22/2013 Rendering of Complex 3D Treemaps :: Matthias Trapp 39
▪
▪
▪
▪
▪
▪
▪
02/22/2013 Interactive Rendering of Complex 3D Treemaps :: Matthias Trapp 40
➢
➢
➢
07/23/2012 Rendering of Complex 3D Treemaps :: Matthias Trapp 41