VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtLightComputeProgram.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright (c) 2021 MAK Technologies, Inc.
3  * All rights reserved.
4  *****************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvOsg/vrvOsg.h>
13 
18 
20 
21 #include <atomic>
22 #include <array>
23 
24 namespace makVrv
25 {
26  class DtDe;
27  class DtGlBuffer;
28  class DtLight;
29  class DtTileSpaceLightGrid;
30  class DtGlProgram;
31  class DtGlShader;
32 
33  #define CPU_SIDE_COMPILATION 1
34  #include <../data/shaders/lights/DtLightIndexData.h>
35  #include <../data/shaders/lights/DtLightIntersectionData.h>
36  #include <../data/shaders/lights/DtLightIndexBufferInfo.h>
37  #undef CPU_SIDE_COMPILATION
38 
40  class DtLightSourceComputeShaderConstants;
41 
47  {
48  public:
49  static const int theNumLightSourceComputeShaders = 2;
50  public:
53 
55  virtual ~DtLightComputeProgram();
56  private:
58  DtLightComputeProgram() = delete;
62  DtLightComputeProgram& operator=(const DtLightComputeProgram&) = delete;
63 
64  public:
66  virtual void slot_reloadShader(void);
67 
70  virtual bool failedCompilation(void) const;
71 
73  virtual void execute(const DtTileSpaceLightGrid* tileSpaceLightGrid
74  , const int tileLightIndexTotalCount
75  , const size_t lightCount
76  , const int numChunks
77  , const Matrix4_64& projectionMatrix
78  , const Vector3_64& vWorldEye
79  , const Vector3_64& vWorldCenter
80  , const Vector3_64& vWorldUp
81  , const Vector2_uint32& viewportSize
82  , const int viewOffset
83  , const unsigned int sensorMask);
84 
85  protected:
87  virtual void initializeShadersIfNecessary(void);
88 
90  virtual void deleteShaders(void);
91  protected:
92 
93  std::array<DtGlProgram*, theNumLightSourceComputeShaders> myComputePrograms;
95 
96  std::array<DtLightSourceComputeShaderConstants*, theNumLightSourceComputeShaders> myLightSourceComputeShaderConstants;
97 
98  std::array<DtGlBuffer*, theNumLightSourceComputeShaders> myGpuShaderUbo;
99  std::array<int, theNumLightSourceComputeShaders> myGpuShaderUboBinding;
100 
101  static const std::array<std::string, theNumLightSourceComputeShaders> theLightSourcesComputeShaderFilePaths;
102 
104 
106 
108 
109  // We cannot delete shaders from the cull thread, so setting this true
110  // signals the main thread to do that.
111  std::atomic<bool> myDeleteShaders;
112 
114  };
115 
116 }
std::atomic< bool > myDeleteShaders
Definition: DtLightComputeProgram.h:111
DtDe & myDe
Definition: DtLightComputeProgram.h:105
int myWorkGroupLocalSizeX
Definition: DtLightComputeProgram.h:113
std::array< DtLightSourceComputeShaderConstants *, theNumLightSourceComputeShaders > myLightSourceComputeShaderConstants
Definition: DtLightComputeProgram.h:96
2 dimensional vector
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
4 dimensional vector
A convenience class to represent an OpenGL Shader.
Definition: DtGlShader.h:24
3 dimensional vector
std::array< int, theNumLightSourceComputeShaders > myGpuShaderUboBinding
Definition: DtLightComputeProgram.h:99
std::array< DtGlBuffer *, theNumLightSourceComputeShaders > myGpuShaderUbo
Definition: DtLightComputeProgram.h:98
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
Class doing all the heavy lifting in regards of forward+ lighting.
Definition: DtTileSpaceLightGrid.h:40
DtGlShader * myLightingFunctionShader
Definition: DtLightComputeProgram.h:94
static const std::array< std::string, theNumLightSourceComputeShaders > theLightSourcesComputeShaderFilePaths
Definition: DtLightComputeProgram.h:101
Base class to provide boost signal/slot management.
std::array< DtGlProgram *, theNumLightSourceComputeShaders > myComputePrograms
Definition: DtLightComputeProgram.h:93
Contains DLL export macros.
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:70
bool myShadersFailedToCompile
Definition: DtLightComputeProgram.h:103
DtSignalConnectionManager myConnections
Definition: DtLightComputeProgram.h:107
4 dimensional matrix
Class that encapsulates the 2 pass (setup, sort) computation of lights affecting the screen space til...
Definition: DtLightComputeProgram.h:46

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)