VR-Forces 4.7 Class Documentation
Home
Modules
Namespaces
Classes
Files
Examples
Behavior Models
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
include
vrvOsg
DtGpuCullingAndLod.h
Go to the documentation of this file.
1
/******************************************************************************
2
** Copyright (c) 2018 VT-MAK Technologies, Inc.
3
** All rights reserved.
4
******************************************************************************/
5
9
10
#pragma once
11
12
#include <
vrvGraphicsUtils/DtCommonTypes.h
>
13
#include <
vrvIndirectRendering/DtGpuCullingAndLodDefines.h
>
14
15
namespace
osg
16
{
17
class
State;
18
};
19
20
namespace
makVrv
21
{
22
class
DtGlBuffer;
23
class
DtIndirectGeometryRegistrar;
24
class
DtInstanceContainer;
25
class
DtOsgShaderFilesCache;
26
27
struct
InstancesOffsetAndNumOfInstances
28
{
29
int
offset
;
30
int
numOfInstances
;
31
};
32
46
class
DtGpuCullingAndLod
47
{
48
public
:
50
DtGpuCullingAndLod
(
DtIndirectGeometryRegistrar
* registrar,
bool
viewFrustumCulling,
bool
lodChecking,
bool
useInstanceCount
);
51
53
virtual
~DtGpuCullingAndLod
();
54
56
virtual
void
doCullingAndLOD
(
const
DtInstanceContainer
& myInstances
57
,
const
DtIndirectViewParameters
& viewParameters
58
,
const
DtIndirectRenderingParameters
& irParams
59
,
const
MapIntToInt
& modelIdsToNumInstances
60
,
unsigned
int
contextID
61
);
62
65
virtual
void
bind
();
66
69
virtual
void
unbind
();
70
72
virtual
void
bindIndirectThings
();
73
75
virtual
void
unbindIndirectThings
();
76
79
virtual
bool
useInstanceCount
(
void
)
const
;
80
83
virtual
int
drawCount
(
void
)
const
;
84
86
virtual
void
setShadersFolderPath
(
const
std::string& shaderFolderPath);
87
89
virtual
void
setShadersFileCache
(
DtOsgShaderFilesCache
* shaderFilesCache);
90
91
virtual
void
releaseGLObjects
(osg::State* state)
const
;
92
93
protected
:
95
96
97
98
99
virtual
void
updateGpuInstancesBuffer
(
const
DtInstanceContainer
& instances,
const
Vector3_64
& vCameraPosition,
bool
cameraRelative);
100
virtual
void
updateGpuGeometrySpecificationsBuffer
(
const
int
numGeometries,
const
DtInstanceContainer
& instances);
101
virtual
void
updateGpuMaterialsBuffer
(
const
int
numGeometries,
const
DtInstanceContainer
& instances);
102
virtual
void
updateGpuGeometryOffsetAndSizeBuffer
(
int
& numGeometries,
const
DtInstanceContainer
& instances);
103
virtual
void
updateGpuIndirectBuffer
(
const
DtInstanceContainer
& instances,
int
numStates);
104
virtual
void
clearInstanceCountIndirectBuffer
(
int
numStates);
106
108
virtual
void
bindGpuOutputInstanceBuffer
(
void
)
const
;
109
virtual
void
unbindGpuOutputInstanceBuffer
(
void
)
const
;
110
112
virtual
void
createCullShaderAndProgramIfNecessary
(
void
);
113
115
virtual
void
updateGpuTexturesBuffer
(
unsigned
int
contextID,
const
DtInstanceContainer
& instances);
116
118
119
virtual
void
printDebugInstances
();
120
virtual
int
printCountBufferCount
();
121
virtual
void
printDrawCommandsDetails
(GLuint drawCount);
122
virtual
void
printInstancesDetails
(GLuint drawCount);
123
virtual
void
printModelIdsToNumOfGeosDetails
(GLuint drawCount);
125
126
virtual
void
updateInstancesOffsetAndInstances
(
const
DtInstanceContainer
& instances,
const
MapIntToInt
& modelIdsToNumInstances);
127
protected
:
128
const
DtIndirectGeometryRegistrar
*
myRegistrar
;
129
132
DtGlBuffer
*
myGpuInstancesBuffer
;
133
136
DtGlBuffer
*
myGpuGeometrySpecificationsBuffer
;
137
140
DtGlBuffer
*
myGpuGeometryOffsetAndSizeBuffer
;
141
144
DtGlBuffer
*
myGpuMaterialsBuffer
;
145
147
DtGlBuffer
*
myGpuIndirectBuffer
;
148
150
DtGlBuffer
*
myGpuCountBuffer
;
151
153
DtGlBuffer
*
myGpuOutputInstanceBuffer
;
154
155
mutable
GLuint
myCullProgram
;
156
mutable
GLuint
myCullShader
;
157
158
DtGlBuffer
*
myGpuTexturesBuffer
;
159
160
MapIntToInt
myModelIdToIndex
;
161
162
Vector3_64
myPreviousCameraPosition
;
163
164
int
myMaxNumInstancesIndex
;
165
int
myModelViewMatrixIndex
;
166
int
myProjectionMatrixIndex
;
167
int
myZoomMagnificationIndex
;
168
169
bool
myViewFrustumCulling
;
170
bool
myLODChecking
;
171
bool
myUseInstanceCount
;
172
173
static
const
bool
myDebugInstancesAppended
;
174
175
std::vector<InstancesOffsetAndNumOfInstances>
myInstancesOffsetAndNumInstances
;
176
DtGlBuffer
*
myGpuInstancesOffsetAndNumInstances
;
177
178
int
myMaxAtomicCounters
;
179
180
std::string
myShaderFolderPath
;
181
DtOsgShaderFilesCache
*
myShaderFilesCache
;
182
private
:
184
DtGpuCullingAndLod
();
185
};
186
}
187
Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (
www.mak.com
)