17 #ifndef GL_NV_shading_rate_image
18 #define GL_NV_shading_rate_image 1
19 #define GL_SHADING_RATE_IMAGE_NV 0x9563
20 #define GL_SHADING_RATE_NO_INVOCATIONS_NV 0x9564
21 #define GL_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV 0x9565
22 #define GL_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV 0x9566
23 #define GL_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV 0x9567
24 #define GL_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV 0x9568
25 #define GL_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV 0x9569
26 #define GL_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV 0x956A
27 #define GL_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV 0x956B
28 #define GL_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV 0x956C
29 #define GL_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV 0x956D
30 #define GL_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV 0x956E
31 #define GL_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV 0x956F
32 #define GL_SHADING_RATE_IMAGE_BINDING_NV 0x955B
33 #define GL_SHADING_RATE_IMAGE_TEXEL_WIDTH_NV 0x955C
34 #define GL_SHADING_RATE_IMAGE_TEXEL_HEIGHT_NV 0x955D
35 #define GL_SHADING_RATE_IMAGE_PALETTE_SIZE_NV 0x955E
36 #define GL_MAX_COARSE_FRAGMENT_SAMPLES_NV 0x955F
37 #define GL_SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV 0x95AE
38 #define GL_SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV 0x95AF
39 #define GL_SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV 0x95B0
46 class DtVariableRateShadingImage;
60 void (GL_APIENTRY * glBindShadingRateImageNV) (
GLuint texture);
63 void (GL_APIENTRY * glShadingRateImageBarrierNV) (GLboolean synchronize);
65 void (GL_APIENTRY * glShadingRateSampleOrderNV) (
GLenum order);
91 void initGLObjects(osg::State& state);
94 bool createShadingRateImageTextureForChannel(osg::State& state);
97 unsigned int imageWidth()
const;
100 unsigned int imageHeight()
const;
103 unsigned int shadingRateTexelWidth()
const;
106 unsigned int shadingRateTexelHeight()
const;
109 void useImageData(
bool useData);
112 void dirtyImageData();
115 std::vector<VariableRatePixelBuffer>& imageData();
121 void bindShadingImage(osg::State& state);
127 void reset() { myIsInitalised =
false; }
130 static void populateDataForvated(
int width,
int height,
float centerX,
float centerY, VariableRatePixelBuffer &data);
134 static void populateDataFocusRect(
int width,
int height,
float focusMinX,
float focusMinY,
float focusMaxX,
float focusMaxY,
unsigned char focusVal,
unsigned char contextVal, VariableRatePixelBuffer& data);
141 void loadImageData(osg::State& state);
167 static const osg::StateAttribute::Type VariableRateShadingImageStateAttributeType = (osg::StateAttribute::Type)3000;
181 virtual bool isTextureAttribute()
const;
184 virtual int compare(
const osg::StateAttribute& sa)
const;
187 virtual void apply(osg::State&)
const;
190 virtual void compileGLObjects(osg::State&)
const;
193 virtual void releaseGLObjects(osg::State* = 0)
const;
GLint myShadingRateImageTexelHeight
Definition: DtVariableRateShadingImage.h:153
std::vector< VariableRatePixelBuffer > myShadingRateImageData
Definition: DtVariableRateShadingImage.h:155
An osg stateattribute that applies a DtVariableRateShadingImage to the State.
Definition: DtVariableRateShadingImage.h:162
bool myIsInitalised
Definition: DtVariableRateShadingImage.h:148
Wrapper around Nvidia Variable Rate Shading Image functionality Creates a texture of the correct size...
Definition: DtVariableRateShadingImage.h:75
A helper classes for creating a RTT target, optionally including depth buffer.
Definition: DtGlRenderToTexture.h:46
Contains makVrv::DtOsgChannel class.
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
Definition: featureContext.h:37
GLuint samples
Definition: DtVariableRateShadingImage.h:62
unsigned int GLuint
Definition: DtGlTextureBufferObject.h:18
GLuint GLenum * rate
Definition: DtVariableRateShadingImage.h:61
VariableRateShadingExtensions * myExt
Definition: DtVariableRateShadingImage.h:147
This class provides the OSG-specific implementation of a DtChannel.
Definition: DtOsgChannel.h:55
DtOsgChannel * myChannel
Definition: DtVariableRateShadingImage.h:145
GLuint GLsizei const GLenum * rates
Definition: DtVariableRateShadingImage.h:64
A helper classes for creating a RTT target, optionally including depth buffer.
bool isInitalised()
has initGLObject been called and succeeded
Definition: DtVariableRateShadingImage.h:124
GLint myShadingRateImageTexelWidth
Definition: DtVariableRateShadingImage.h:152
bool myShadingRateTextureIsDirty
Definition: DtVariableRateShadingImage.h:157
bool myUseImageData
Definition: DtVariableRateShadingImage.h:156
DtGlRenderTexture * myShadingRateTexture
Definition: DtVariableRateShadingImage.h:150
unsigned int GLenum
Definition: DtGlTextureBufferObject.h:19
std::vector< unsigned char > VariableRatePixelBuffer
Definition: DtVariableRateShadingImage.h:85
Extension functions used for Nvidia variable rate shading Initalises function pointers for the nvidia...
Definition: DtVariableRateShadingImage.h:53
osg::ref_ptr< DtVariableRateShadingImage > myShadingRateImage
Definition: DtVariableRateShadingImage.h:200
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:72
DtDe & myDe
Definition: DtVariableRateShadingImage.h:144
GLuint const GLint * locations
Definition: DtVariableRateShadingImage.h:66
void reset()
reset the initalised state so the image is rebuilt
Definition: DtVariableRateShadingImage.h:127