History

Clenaing the rendering and the framebuffer allocations

samcake committed 10 years ago

Commit cde17ec1 parent 5d4b55e18 files · +234 −361Browse files

Showing the changes to libraries/render-utils/src/DeferredFramebuffer.cpp (1 of 18 files). Show all

Unified · Split

libraries/render-utils/src/DeferredFramebuffer.cpp+15−54
@@ -15,34 +15,34 @@ DeferredFramebuffer::DeferredFramebuffer() { · 14 unmodified lines
15}15}
16 16
17 17
18void DeferredFramebuffer::setPrimaryDepth(const gpu::TexturePointer& depthBuffer) {18void DeferredFramebuffer::updatePrimaryDepth(const gpu::TexturePointer& depthBuffer) {
19 //If the size changed, we need to delete our FBOs19 //If the depth buffer or size changed, we need to delete our FBOs
20 if (_primaryDepthTexture != depthBuffer) {20 bool reset = false;
21 if ((_primaryDepthTexture != depthBuffer)) {
21 _primaryDepthTexture = depthBuffer;22 _primaryDepthTexture = depthBuffer;
22 23 reset = true;
24 }
25 if (_primaryDepthTexture) {
26 auto newFrameSize = glm::ivec2(_primaryDepthTexture->getDimensions());
27 if (_frameSize != newFrameSize) {
28 _frameSize = newFrameSize;
29 reset = true;
30 }
23 }31 }
24}
25 32
26void DeferredFramebuffer::setFrameSize(const glm::ivec2& frameBufferSize) {33 if (reset) {
27 //If the size changed, we need to delete our FBOs34 _deferredFramebuffer.reset();
28 if (_frameSize != frameBufferSize) {
29 _frameSize = frameBufferSize;
30 _deferredFramebuffer.reset();
31 _deferredFramebufferDepthColor.reset();35 _deferredFramebufferDepthColor.reset();
32 _deferredColorTexture.reset();36 _deferredColorTexture.reset();
33 _deferredNormalTexture.reset();37 _deferredNormalTexture.reset();
34 _deferredSpecularTexture.reset();38 _deferredSpecularTexture.reset();
35 _lightingTexture.reset();39 _lightingTexture.reset();
36 _lightingFramebuffer.reset();40 _lightingFramebuffer.reset();
37
38 _occlusionFramebuffer.reset();
39 _occlusionTexture.reset();
40 _occlusionBlurredFramebuffer.reset();
41 _occlusionBlurredTexture.reset();
42 }41 }
43}42}
44 43
45void DeferredFramebuffer::allocate() {44void DeferredFramebuffer::allocate() {
45
46 _deferredFramebuffer = gpu::FramebufferPointer(gpu::Framebuffer::create());46 _deferredFramebuffer = gpu::FramebufferPointer(gpu::Framebuffer::create());
47 _deferredFramebufferDepthColor = gpu::FramebufferPointer(gpu::Framebuffer::create());47 _deferredFramebufferDepthColor = gpu::FramebufferPointer(gpu::Framebuffer::create());
48 48
@@ -52,9 +52,6 @@ void DeferredFramebuffer::allocate() { · 3 unmodified lines
52 auto height = _frameSize.y;52 auto height = _frameSize.y;
53 53
54 auto defaultSampler = gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_POINT);54 auto defaultSampler = gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_POINT);
55 // _primaryColorTexture = gpu::TexturePointer(gpu::Texture::create2D(colorFormat, width, height, defaultSampler));
56
57 // _primaryFramebuffer->setRenderBuffer(0, _primaryColorTexture);
58 55
59 _deferredColorTexture = gpu::TexturePointer(gpu::Texture::create2D(colorFormat, width, height, defaultSampler));56 _deferredColorTexture = gpu::TexturePointer(gpu::Texture::create2D(colorFormat, width, height, defaultSampler));
60 57
@@ -67,8 +64,6 @@ void DeferredFramebuffer::allocate() { · 6 unmodified lines
67 64
68 _deferredFramebufferDepthColor->setRenderBuffer(0, _deferredColorTexture);65 _deferredFramebufferDepthColor->setRenderBuffer(0, _deferredColorTexture);
69 66
70 // auto depthFormat = gpu::Element(gpu::SCALAR, gpu::FLOAT, gpu::DEPTH);
71
72 auto depthFormat = gpu::Element(gpu::SCALAR, gpu::UINT32, gpu::DEPTH_STENCIL); // Depth24_Stencil8 texel format67 auto depthFormat = gpu::Element(gpu::SCALAR, gpu::UINT32, gpu::DEPTH_STENCIL); // Depth24_Stencil8 texel format
73 if (!_primaryDepthTexture) {68 if (!_primaryDepthTexture) {
74 _primaryDepthTexture = gpu::TexturePointer(gpu::Texture::create2D(depthFormat, width, height, defaultSampler));69 _primaryDepthTexture = gpu::TexturePointer(gpu::Texture::create2D(depthFormat, width, height, defaultSampler));
@@ -88,41 +83,7 @@ void DeferredFramebuffer::allocate() { · 13 unmodified lines
88 83
89 _deferredFramebuffer->setRenderBuffer(3, _lightingTexture);84 _deferredFramebuffer->setRenderBuffer(3, _lightingTexture);
90 85
91 // For AO:
92 // auto pointMipSampler = gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_MIP_POINT);
93 // _depthPyramidTexture = gpu::TexturePointer(gpu::Texture::create2D(gpu::Element(gpu::SCALAR, gpu::FLOAT, gpu::RGB), width, height, gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_LINEAR_MIP_POINT)));
94 // _depthPyramidFramebuffer = gpu::FramebufferPointer(gpu::Framebuffer::create());
95 // _depthPyramidFramebuffer->setRenderBuffer(0, _depthPyramidTexture);
96 // _depthPyramidFramebuffer->setDepthStencilBuffer(_primaryDepthTexture, depthFormat);
97
98 // resizeAmbientOcclusionBuffers();
99}
100
101/*
102void DeferredFramebuffer::resizeAmbientOcclusionBuffers() {
103 _occlusionFramebuffer.reset();
104 _occlusionTexture.reset();
105 _occlusionBlurredFramebuffer.reset();
106 _occlusionBlurredTexture.reset();
107
108
109 auto width = _frameBufferSize.width() >> _AOResolutionLevel;
110 auto height = _frameBufferSize.height() >> _AOResolutionLevel;
111 auto colorFormat = gpu::Element(gpu::VEC4, gpu::NUINT8, gpu::RGB);
112 auto defaultSampler = gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_LINEAR);
113 auto depthFormat = gpu::Element(gpu::SCALAR, gpu::UINT32, gpu::DEPTH_STENCIL); // Depth24_Stencil8 texel format
114
115 _occlusionTexture = gpu::TexturePointer(gpu::Texture::create2D(colorFormat, width, height, defaultSampler));
116 _occlusionFramebuffer = gpu::FramebufferPointer(gpu::Framebuffer::create());
117 _occlusionFramebuffer->setRenderBuffer(0, _occlusionTexture);
118 _occlusionFramebuffer->setDepthStencilBuffer(_primaryDepthTexture, depthFormat);
119
120 _occlusionBlurredTexture = gpu::TexturePointer(gpu::Texture::create2D(colorFormat, width, height, defaultSampler));
121 _occlusionBlurredFramebuffer = gpu::FramebufferPointer(gpu::Framebuffer::create());
122 _occlusionBlurredFramebuffer->setRenderBuffer(0, _occlusionBlurredTexture);
123 _occlusionBlurredFramebuffer->setDepthStencilBuffer(_primaryDepthTexture, depthFormat);
124}86}
125*/
126 87
127 88
128gpu::TexturePointer DeferredFramebuffer::getPrimaryDepthTexture() {89gpu::TexturePointer DeferredFramebuffer::getPrimaryDepthTexture() {