mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-06 18:10:35 +00:00
Fix up fetching layer/mip for FBOs on replay
This commit is contained in:
@@ -277,15 +277,20 @@ struct GLPipelineState
|
||||
bool32 FramebufferSRGB;
|
||||
bool32 Dither;
|
||||
|
||||
struct Attachment
|
||||
{
|
||||
ResourceId Obj;
|
||||
uint32_t Layer;
|
||||
uint32_t Mip;
|
||||
};
|
||||
|
||||
struct FBO
|
||||
{
|
||||
FBO() : Obj(), Depth(), Stencil() {}
|
||||
ResourceId Obj;
|
||||
rdctype::array<ResourceId> Color;
|
||||
rdctype::array<uint32_t> Layer;
|
||||
rdctype::array<uint32_t> Mip;
|
||||
ResourceId Depth;
|
||||
ResourceId Stencil;
|
||||
rdctype::array<Attachment> Color;
|
||||
Attachment Depth;
|
||||
Attachment Stencil;
|
||||
|
||||
rdctype::array<int32_t> DrawBuffers;
|
||||
int32_t ReadBuffer;
|
||||
|
||||
@@ -617,6 +617,16 @@ void Serialiser::Serialise(const char *name, GLPipelineState::FrameBuffer::Blend
|
||||
SIZE_CHECK(GLPipelineState::FrameBuffer::BlendState, 24);
|
||||
}
|
||||
|
||||
template<>
|
||||
void Serialiser::Serialise(const char *name, GLPipelineState::FrameBuffer::Attachment &el)
|
||||
{
|
||||
Serialise("", el.Obj);
|
||||
Serialise("", el.Layer);
|
||||
Serialise("", el.Mip);
|
||||
|
||||
SIZE_CHECK(GLPipelineState::FrameBuffer::Attachment, 16);
|
||||
}
|
||||
|
||||
template<>
|
||||
void Serialiser::Serialise(const char *name, GLPipelineState::FrameBuffer &el)
|
||||
{
|
||||
@@ -625,8 +635,6 @@ void Serialiser::Serialise(const char *name, GLPipelineState::FrameBuffer &el)
|
||||
|
||||
Serialise("", el.m_DrawFBO.Obj);
|
||||
Serialise("", el.m_DrawFBO.Color);
|
||||
Serialise("", el.m_ReadFBO.Layer);
|
||||
Serialise("", el.m_ReadFBO.Mip);
|
||||
Serialise("", el.m_DrawFBO.Depth);
|
||||
Serialise("", el.m_DrawFBO.Stencil);
|
||||
Serialise("", el.m_DrawFBO.DrawBuffers);
|
||||
@@ -634,8 +642,6 @@ void Serialiser::Serialise(const char *name, GLPipelineState::FrameBuffer &el)
|
||||
|
||||
Serialise("", el.m_ReadFBO.Obj);
|
||||
Serialise("", el.m_ReadFBO.Color);
|
||||
Serialise("", el.m_ReadFBO.Layer);
|
||||
Serialise("", el.m_ReadFBO.Mip);
|
||||
Serialise("", el.m_ReadFBO.Depth);
|
||||
Serialise("", el.m_ReadFBO.Stencil);
|
||||
Serialise("", el.m_ReadFBO.DrawBuffers);
|
||||
|
||||
@@ -714,6 +714,7 @@ WrappedOpenGL::WrappedOpenGL(const char *logfile, const GLHookSet &funcs)
|
||||
m_pSerialiser = new Serialiser(4, dummy, false);
|
||||
}
|
||||
|
||||
// once GL driver is more tested, this can be disabled
|
||||
if(m_Real.glDebugMessageCallback)
|
||||
{
|
||||
m_Real.glDebugMessageCallback(&DebugSnoopStatic, this);
|
||||
|
||||
@@ -362,12 +362,12 @@ bool GLReplay::IsRenderOutput(ResourceId id)
|
||||
{
|
||||
for(int32_t i=0; i < m_CurPipelineState.m_FB.m_DrawFBO.Color.count; i++)
|
||||
{
|
||||
if(m_CurPipelineState.m_FB.m_DrawFBO.Color[i] == id)
|
||||
if(m_CurPipelineState.m_FB.m_DrawFBO.Color[i].Obj == id)
|
||||
return true;
|
||||
}
|
||||
|
||||
if(m_CurPipelineState.m_FB.m_DrawFBO.Depth == id ||
|
||||
m_CurPipelineState.m_FB.m_DrawFBO.Stencil == id)
|
||||
if(m_CurPipelineState.m_FB.m_DrawFBO.Depth.Obj == id ||
|
||||
m_CurPipelineState.m_FB.m_DrawFBO.Stencil.Obj == id)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
@@ -1662,21 +1662,38 @@ void GLReplay::SavePipelineState()
|
||||
|
||||
pipe.m_FB.m_DrawFBO.Obj = rm->GetOriginalID(rm->GetID(FramebufferRes(ctx, curDrawFBO)));
|
||||
create_array_uninit(pipe.m_FB.m_DrawFBO.Color, numCols);
|
||||
create_array_uninit(pipe.m_FB.m_DrawFBO.Layer, numCols);
|
||||
create_array_uninit(pipe.m_FB.m_DrawFBO.Mip, numCols);
|
||||
for(GLint i=0; i < numCols; i++)
|
||||
{
|
||||
pipe.m_FB.m_DrawFBO.Color[i] = rm->GetOriginalID(rm->GetID(rbCol[i] ? RenderbufferRes(ctx, curCol[i]) : TextureRes(ctx, curCol[i])));
|
||||
pipe.m_FB.m_DrawFBO.Color[i].Obj = rm->GetOriginalID(rm->GetID(rbCol[i] ? RenderbufferRes(ctx, curCol[i]) : TextureRes(ctx, curCol[i])));
|
||||
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_DEPTH_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL, (GLint*)&pipe.m_FB.m_DrawFBO.Mip[i]);
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_DEPTH_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE, (GLint*)&pipe.m_FB.m_DrawFBO.Layer[i]);
|
||||
if(pipe.m_FB.m_DrawFBO.Layer[i] == 0)
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_DEPTH_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER, (GLint*)&pipe.m_FB.m_DrawFBO.Layer[i]);
|
||||
if(pipe.m_FB.m_DrawFBO.Color[i].Obj != ResourceId() && !rbCol[i])
|
||||
{
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, GLenum(eGL_COLOR_ATTACHMENT0+i), eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL, (GLint*)&pipe.m_FB.m_DrawFBO.Color[i].Mip);
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, GLenum(eGL_COLOR_ATTACHMENT0+i), eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE, (GLint*)&pipe.m_FB.m_DrawFBO.Color[i].Layer);
|
||||
if(pipe.m_FB.m_DrawFBO.Color[i].Layer == 0)
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, GLenum(eGL_COLOR_ATTACHMENT0+i), eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER, (GLint*)&pipe.m_FB.m_DrawFBO.Color[i].Layer);
|
||||
}
|
||||
}
|
||||
|
||||
pipe.m_FB.m_DrawFBO.Depth.Obj = rm->GetOriginalID(rm->GetID(rbDepth ? RenderbufferRes(ctx, curDepth) : TextureRes(ctx, curDepth)));
|
||||
pipe.m_FB.m_DrawFBO.Stencil.Obj = rm->GetOriginalID(rm->GetID(rbStencil ? RenderbufferRes(ctx, curStencil) : TextureRes(ctx, curStencil)));
|
||||
|
||||
if(pipe.m_FB.m_DrawFBO.Depth.Obj != ResourceId() && !rbDepth)
|
||||
{
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_DEPTH_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL, (GLint*)&pipe.m_FB.m_DrawFBO.Depth.Mip);
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_DEPTH_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE, (GLint*)&pipe.m_FB.m_DrawFBO.Depth.Layer);
|
||||
if(pipe.m_FB.m_DrawFBO.Depth.Layer == 0)
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_DEPTH_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER, (GLint*)&pipe.m_FB.m_DrawFBO.Depth.Layer);
|
||||
}
|
||||
|
||||
if(pipe.m_FB.m_DrawFBO.Stencil.Obj != ResourceId() && !rbStencil)
|
||||
{
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_STENCIL_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL, (GLint*)&pipe.m_FB.m_DrawFBO.Stencil.Mip);
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_STENCIL_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE, (GLint*)&pipe.m_FB.m_DrawFBO.Stencil.Layer);
|
||||
if(pipe.m_FB.m_DrawFBO.Stencil.Layer == 0)
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_STENCIL_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER, (GLint*)&pipe.m_FB.m_DrawFBO.Stencil.Layer);
|
||||
}
|
||||
|
||||
pipe.m_FB.m_DrawFBO.Depth = rm->GetOriginalID(rm->GetID(rbDepth ? RenderbufferRes(ctx, curDepth) : TextureRes(ctx, curDepth)));
|
||||
pipe.m_FB.m_DrawFBO.Stencil = rm->GetOriginalID(rm->GetID(rbStencil ? RenderbufferRes(ctx, curStencil) : TextureRes(ctx, curStencil)));
|
||||
|
||||
create_array_uninit(pipe.m_FB.m_DrawFBO.DrawBuffers, numCols);
|
||||
for(GLint i=0; i < numCols; i++)
|
||||
{
|
||||
@@ -1709,21 +1726,38 @@ void GLReplay::SavePipelineState()
|
||||
|
||||
pipe.m_FB.m_ReadFBO.Obj = rm->GetOriginalID(rm->GetID(FramebufferRes(ctx, curReadFBO)));
|
||||
create_array_uninit(pipe.m_FB.m_ReadFBO.Color, numCols);
|
||||
create_array_uninit(pipe.m_FB.m_ReadFBO.Layer, numCols);
|
||||
create_array_uninit(pipe.m_FB.m_ReadFBO.Mip, numCols);
|
||||
for(GLint i=0; i < numCols; i++)
|
||||
{
|
||||
pipe.m_FB.m_ReadFBO.Color[i] = rm->GetOriginalID(rm->GetID(rbCol[i] ? RenderbufferRes(ctx, curCol[i]) : TextureRes(ctx, curCol[i])));
|
||||
pipe.m_FB.m_ReadFBO.Color[i].Obj = rm->GetOriginalID(rm->GetID(rbCol[i] ? RenderbufferRes(ctx, curCol[i]) : TextureRes(ctx, curCol[i])));
|
||||
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_DEPTH_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL, (GLint*)&pipe.m_FB.m_ReadFBO.Mip[i]);
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_DEPTH_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE, (GLint*)&pipe.m_FB.m_ReadFBO.Layer[i]);
|
||||
if(pipe.m_FB.m_ReadFBO.Layer[i] == 0)
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_DEPTH_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER, (GLint*)&pipe.m_FB.m_ReadFBO.Layer[i]);
|
||||
if(pipe.m_FB.m_ReadFBO.Color[i].Obj != ResourceId() && !rbCol[i])
|
||||
{
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, GLenum(eGL_COLOR_ATTACHMENT0+i), eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL, (GLint*)&pipe.m_FB.m_ReadFBO.Color[i].Mip);
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, GLenum(eGL_COLOR_ATTACHMENT0+i), eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE, (GLint*)&pipe.m_FB.m_ReadFBO.Color[i].Layer);
|
||||
if(pipe.m_FB.m_ReadFBO.Color[i].Layer == 0)
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, GLenum(eGL_COLOR_ATTACHMENT0+i), eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER, (GLint*)&pipe.m_FB.m_ReadFBO.Color[i].Layer);
|
||||
}
|
||||
}
|
||||
|
||||
pipe.m_FB.m_ReadFBO.Depth = rm->GetOriginalID(rm->GetID(rbDepth ? RenderbufferRes(ctx, curDepth) : TextureRes(ctx, curDepth)));
|
||||
pipe.m_FB.m_ReadFBO.Stencil = rm->GetOriginalID(rm->GetID(rbStencil ? RenderbufferRes(ctx, curStencil) : TextureRes(ctx, curStencil)));
|
||||
pipe.m_FB.m_ReadFBO.Depth.Obj = rm->GetOriginalID(rm->GetID(rbDepth ? RenderbufferRes(ctx, curDepth) : TextureRes(ctx, curDepth)));
|
||||
pipe.m_FB.m_ReadFBO.Stencil.Obj = rm->GetOriginalID(rm->GetID(rbStencil ? RenderbufferRes(ctx, curStencil) : TextureRes(ctx, curStencil)));
|
||||
|
||||
if(pipe.m_FB.m_ReadFBO.Depth.Obj != ResourceId() && !rbDepth)
|
||||
{
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_DEPTH_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL, (GLint*)&pipe.m_FB.m_ReadFBO.Depth.Mip);
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_DEPTH_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE, (GLint*)&pipe.m_FB.m_ReadFBO.Depth.Layer);
|
||||
if(pipe.m_FB.m_ReadFBO.Depth.Layer == 0)
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_DEPTH_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER, (GLint*)&pipe.m_FB.m_ReadFBO.Depth.Layer);
|
||||
}
|
||||
|
||||
if(pipe.m_FB.m_ReadFBO.Stencil.Obj != ResourceId() && !rbStencil)
|
||||
{
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_STENCIL_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL, (GLint*)&pipe.m_FB.m_ReadFBO.Stencil.Mip);
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_STENCIL_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE, (GLint*)&pipe.m_FB.m_ReadFBO.Stencil.Layer);
|
||||
if(pipe.m_FB.m_ReadFBO.Stencil.Layer == 0)
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_STENCIL_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER, (GLint*)&pipe.m_FB.m_ReadFBO.Stencil.Layer);
|
||||
}
|
||||
|
||||
create_array_uninit(pipe.m_FB.m_ReadFBO.DrawBuffers, numCols);
|
||||
for(GLint i=0; i < numCols; i++)
|
||||
pipe.m_FB.m_ReadFBO.DrawBuffers[i] = -1;
|
||||
|
||||
@@ -585,7 +585,7 @@ namespace renderdocui.Code
|
||||
if (IsLogD3D11)
|
||||
return m_D3D11.m_OM.DepthTarget.Resource;
|
||||
else if (IsLogGL)
|
||||
return m_GL.m_FB.m_DrawFBO.Depth;
|
||||
return m_GL.m_FB.m_DrawFBO.Depth.Obj;
|
||||
}
|
||||
|
||||
return ResourceId.Null;
|
||||
@@ -598,7 +598,7 @@ namespace renderdocui.Code
|
||||
if (IsLogD3D11)
|
||||
return m_D3D11.m_OM.DepthTarget.Resource;
|
||||
else if (IsLogGL)
|
||||
return m_GL.m_FB.m_DrawFBO.Stencil;
|
||||
return m_GL.m_FB.m_DrawFBO.Stencil.Obj;
|
||||
}
|
||||
|
||||
return ResourceId.Null;
|
||||
@@ -648,7 +648,7 @@ namespace renderdocui.Code
|
||||
{
|
||||
int db = m_GL.m_FB.m_DrawFBO.DrawBuffers[i];
|
||||
if(db >= 0)
|
||||
ret[i] = m_GL.m_FB.m_DrawFBO.Color[db];
|
||||
ret[i] = m_GL.m_FB.m_DrawFBO.Color[db].Obj;
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -668,7 +668,7 @@ namespace renderdocui.Code
|
||||
return m_D3D11.m_OM.DepthTarget.Resource;
|
||||
|
||||
if (IsLogGL)
|
||||
return m_GL.m_FB.m_DrawFBO.Depth;
|
||||
return m_GL.m_FB.m_DrawFBO.Depth.Obj;
|
||||
}
|
||||
|
||||
return ResourceId.Null;
|
||||
@@ -685,7 +685,7 @@ namespace renderdocui.Code
|
||||
return m_D3D11.m_OM.DepthTarget.Resource;
|
||||
|
||||
if (IsLogGL)
|
||||
return m_GL.m_FB.m_DrawFBO.Stencil;
|
||||
return m_GL.m_FB.m_DrawFBO.Stencil.Obj;
|
||||
}
|
||||
|
||||
return ResourceId.Null;
|
||||
|
||||
@@ -312,6 +312,14 @@ namespace renderdoc
|
||||
public class FrameBuffer
|
||||
{
|
||||
public bool FramebufferSRGB;
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public class Attachment
|
||||
{
|
||||
public ResourceId Obj;
|
||||
public UInt32 Layer;
|
||||
public UInt32 Mip;
|
||||
};
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public class FBO
|
||||
@@ -319,13 +327,9 @@ namespace renderdoc
|
||||
public ResourceId Obj;
|
||||
|
||||
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
|
||||
public ResourceId[] Color;
|
||||
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
|
||||
public UInt32[] Layer;
|
||||
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
|
||||
public UInt32[] Mip;
|
||||
public ResourceId Depth;
|
||||
public ResourceId Stencil;
|
||||
public Attachment[] Color;
|
||||
public Attachment Depth;
|
||||
public Attachment Stencil;
|
||||
|
||||
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
|
||||
public Int32[] DrawBuffers;
|
||||
|
||||
@@ -1324,7 +1324,7 @@ namespace renderdocui.Windows.PipelineState
|
||||
{
|
||||
ResourceId p = ResourceId.Null;
|
||||
|
||||
if (db >= 0) p = state.m_FB.m_DrawFBO.Color[db];
|
||||
if (db >= 0) p = state.m_FB.m_DrawFBO.Color[db].Obj;
|
||||
|
||||
if (p != ResourceId.Null || showEmpty.Checked)
|
||||
{
|
||||
@@ -1384,7 +1384,7 @@ namespace renderdocui.Windows.PipelineState
|
||||
|
||||
{
|
||||
int i = 0;
|
||||
foreach (ResourceId depthstencil in new ResourceId[] { state.m_FB.m_DrawFBO.Depth, state.m_FB.m_DrawFBO.Stencil })
|
||||
foreach (ResourceId depthstencil in new ResourceId[] { state.m_FB.m_DrawFBO.Depth.Obj, state.m_FB.m_DrawFBO.Stencil.Obj })
|
||||
{
|
||||
if (depthstencil != ResourceId.Null || showEmpty.Checked)
|
||||
{
|
||||
|
||||
@@ -112,6 +112,21 @@ namespace renderdocui.Windows
|
||||
|
||||
return view != null ? (int)view.HighestMip : -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Type == FollowType.OutputColour)
|
||||
{
|
||||
return (int)core.CurGLPipelineState.m_FB.m_DrawFBO.Color[index].Mip;
|
||||
}
|
||||
else if (Type == FollowType.OutputDepth)
|
||||
{
|
||||
return (int)core.CurGLPipelineState.m_FB.m_DrawFBO.Depth.Mip;
|
||||
}
|
||||
else if (Type == FollowType.ReadWriteRes)
|
||||
{
|
||||
return (int)core.CurGLPipelineState.Images[index].Level;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
@@ -144,12 +159,20 @@ namespace renderdocui.Windows
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Type == FollowType.ReadWriteRes)
|
||||
if (Type == FollowType.OutputColour)
|
||||
{
|
||||
return (int)core.CurGLPipelineState.m_FB.m_DrawFBO.Color[index].Layer;
|
||||
}
|
||||
else if (Type == FollowType.OutputDepth)
|
||||
{
|
||||
return (int)core.CurGLPipelineState.m_FB.m_DrawFBO.Depth.Layer;
|
||||
}
|
||||
else if (Type == FollowType.ReadWriteRes)
|
||||
{
|
||||
if(!core.CurGLPipelineState.Images[index].Layered)
|
||||
return (int)core.CurGLPipelineState.Images[index].Layer;
|
||||
}
|
||||
if (Type == FollowType.PSResource)
|
||||
else if (Type == FollowType.PSResource)
|
||||
{
|
||||
return (int)core.CurGLPipelineState.Textures[index].FirstSlice;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user