Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,7 @@ public void postFrame(FrameBuffer out) {

FrameBuffer sceneBuffer = renderFrameBuffer;
if (renderFrameBufferMS != null && !renderer.getCaps().contains(Caps.OpenGL32)) {
renderer.copyFrameBuffer(renderFrameBufferMS, renderFrameBuffer, true);
renderer.copyFrameBuffer(renderFrameBufferMS, renderFrameBuffer, true, true);
} else if (renderFrameBufferMS != null) {
sceneBuffer = renderFrameBufferMS;
}
Expand Down
2 changes: 1 addition & 1 deletion jme3-core/src/main/java/com/jme3/post/HDRRenderer.java
Original file line number Diff line number Diff line change
Expand Up @@ -364,7 +364,7 @@ public void postFrame(FrameBuffer out) {
// renderManager.renderViewPortRaw(viewPort);

// render back to non-multisampled FB
renderer.copyFrameBuffer(msFB, mainSceneFB, true);
renderer.copyFrameBuffer(msFB, mainSceneFB, true, true);
}else{
// renderer.setFrameBuffer(mainSceneFB);
// renderer.clearBuffers(true,true,false);
Expand Down
12 changes: 11 additions & 1 deletion jme3-core/src/main/java/com/jme3/renderer/Renderer.java
Original file line number Diff line number Diff line change
Expand Up @@ -184,11 +184,21 @@ public interface Renderer {
*/
public void deleteShaderSource(ShaderSource source);



/**
* Copies contents from src to dst, scaling if necessary.
* set copyDepth to false to only copy the color buffers.
* @deprecated Use {@link Renderer#copyFrameBuffer(com.jme3.texture.FrameBuffer, com.jme3.texture.FrameBuffer, boolean, boolean)}.
*/
public void copyFrameBuffer(FrameBuffer src, FrameBuffer dst, boolean copyDepth);
@Deprecated public void copyFrameBuffer(FrameBuffer src, FrameBuffer dst, boolean copyDepth);


/**
* Copies contents from src to dst, scaling if necessary.
*/
public void copyFrameBuffer(FrameBuffer src, FrameBuffer dst, boolean copyColor, boolean copyDepth);


/**
* Sets the framebuffer that will be drawn to.
Expand Down
15 changes: 13 additions & 2 deletions jme3-core/src/main/java/com/jme3/renderer/opengl/GLRenderer.java
Original file line number Diff line number Diff line change
Expand Up @@ -1635,11 +1635,16 @@ public void deleteShader(Shader shader) {
|* Framebuffers *|
\*********************************************************************/
public void copyFrameBuffer(FrameBuffer src, FrameBuffer dst) {
copyFrameBuffer(src, dst, true);
copyFrameBuffer(src, dst, true, true);
}

@Override
public void copyFrameBuffer(FrameBuffer src, FrameBuffer dst, boolean copyDepth) {
copyFrameBuffer(src, dst, true, copyDepth);
}

@Override
public void copyFrameBuffer(FrameBuffer src, FrameBuffer dst, boolean copyColor,boolean copyDepth) {
if (caps.contains(Caps.FrameBufferBlit)) {
int srcX0 = 0;
int srcY0 = 0;
Expand Down Expand Up @@ -1692,7 +1697,13 @@ public void copyFrameBuffer(FrameBuffer src, FrameBuffer dst, boolean copyDepth)
dstX1 = dst.getWidth();
dstY1 = dst.getHeight();
}
int mask = GL.GL_COLOR_BUFFER_BIT;

int mask = 0;

if(copyColor){
mask|=GL.GL_COLOR_BUFFER_BIT;
}

if (copyDepth) {
mask |= GL.GL_DEPTH_BUFFER_BIT;
}
Expand Down
5 changes: 5 additions & 0 deletions jme3-core/src/main/java/com/jme3/system/NullRenderer.java
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,11 @@ public void copyFrameBuffer(FrameBuffer src, FrameBuffer dst) {
@Override
public void copyFrameBuffer(FrameBuffer src, FrameBuffer dst, boolean copyDepth) {
}

@Override
public void copyFrameBuffer(FrameBuffer src, FrameBuffer dst, boolean copyColor, boolean copyDepth) {
}


@Override
public void setMainFrameBufferOverride(FrameBuffer fb) {
Expand Down
2 changes: 1 addition & 1 deletion jme3-core/src/main/java/com/jme3/texture/FrameBuffer.java
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
* depth testing (which requires a depth buffer).
* Buffers can be copied to other framebuffers
* including the main screen, by using
* {@link Renderer#copyFrameBuffer(com.jme3.texture.FrameBuffer, com.jme3.texture.FrameBuffer, boolean)}.
* {@link Renderer#copyFrameBuffer(com.jme3.texture.FrameBuffer, com.jme3.texture.FrameBuffer, boolean, boolean)}.
* The content of a {@link RenderBuffer} can be retrieved by using
* {@link Renderer#readFrameBuffer(com.jme3.texture.FrameBuffer, java.nio.ByteBuffer) }.
* <p>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ protected boolean isRequiresDepthTexture() {
protected void postFrame(RenderManager renderManager, ViewPort viewPort, FrameBuffer prevFilterBuffer, FrameBuffer sceneBuffer) {
renderManager.setCamera(viewPort.getCamera(), false);
if (prevFilterBuffer != sceneBuffer) {
renderManager.getRenderer().copyFrameBuffer(prevFilterBuffer, sceneBuffer, false);
renderManager.getRenderer().copyFrameBuffer(prevFilterBuffer, sceneBuffer, true, false);
}
renderManager.getRenderer().setFrameBuffer(sceneBuffer);
viewPort.getQueue().renderQueue(RenderQueue.Bucket.Translucent, renderManager, viewPort.getCamera());
Expand Down
2 changes: 1 addition & 1 deletion jme3-vr/src/main/java/com/jme3/post/PreNormalCaching.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public static void getPreNormals(RenderManager renderManager, Pass normalPass, V
// do we already have a valid cache to set the framebuffer to?
Renderer r = renderManager.getRenderer();
if( cachedPreNormals != null ) {
r.copyFrameBuffer(cachedPreNormals, normalPass.getRenderFrameBuffer(), false);
r.copyFrameBuffer(cachedPreNormals, normalPass.getRenderFrameBuffer(),true, false);
} else {
// lets make the prenormals
r.setFrameBuffer(normalPass.getRenderFrameBuffer());
Expand Down