VR-Forces 4.10 Class Documentation
 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) 2020 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 
84  protected:
86  virtual void initializeShadersIfNecessary(void);
87 
89  virtual void deleteShaders(void);
90  protected:
91 
92  std::array<DtGlProgram*, theNumLightSourceComputeShaders> myComputePrograms;
94 
95  std::array<DtLightSourceComputeShaderConstants*, theNumLightSourceComputeShaders> myLightSourceComputeShaderConstants;
96 
97  std::array<DtGlBuffer*, theNumLightSourceComputeShaders> myGpuShaderUbo;
98  std::array<int, theNumLightSourceComputeShaders> myGpuShaderUboBinding;
99 
100  static const std::array<std::string, theNumLightSourceComputeShaders> theLightSourcesComputeShaderFilePaths;
101 
103 
105 
107 
108  // We cannot delete shaders from the cull thread, so setting this true
109  // signals the main thread to do that.
110  std::atomic<bool> myDeleteShaders;
111 
113  };
114 
115 }
std::atomic< bool > myDeleteShaders
Definition: DtLightComputeProgram.h:110
DtDe & myDe
Definition: DtLightComputeProgram.h:104
int myWorkGroupLocalSizeX
Definition: DtLightComputeProgram.h:112
std::array< DtLightSourceComputeShaderConstants *, theNumLightSourceComputeShaders > myLightSourceComputeShaderConstants
Definition: DtLightComputeProgram.h:95
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:98
std::array< DtGlBuffer *, theNumLightSourceComputeShaders > myGpuShaderUbo
Definition: DtLightComputeProgram.h:97
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:93
static const std::array< std::string, theNumLightSourceComputeShaders > theLightSourcesComputeShaderFilePaths
Definition: DtLightComputeProgram.h:100
Base class to provide boost signal/slot management.
std::array< DtGlProgram *, theNumLightSourceComputeShaders > myComputePrograms
Definition: DtLightComputeProgram.h:92
Contains DLL export macros.
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
bool myShadersFailedToCompile
Definition: DtLightComputeProgram.h:102
DtSignalConnectionManager myConnections
Definition: DtLightComputeProgram.h:106
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 Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)