- implement stat gpu on vulkan and fix it on opengl
This commit is contained in:
parent
692aed0551
commit
81e32ecc72
12 changed files with 176 additions and 19 deletions
|
|
@ -10,6 +10,16 @@ Postprocess hw_postprocess;
|
|||
|
||||
PPResource *PPResource::First = nullptr;
|
||||
|
||||
bool gpuStatActive = false;
|
||||
bool keepGpuStatActive = false;
|
||||
FString gpuStatOutput;
|
||||
|
||||
ADD_STAT(gpu)
|
||||
{
|
||||
keepGpuStatActive = true;
|
||||
return gpuStatOutput;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void PPBloom::UpdateTextures(int width, int height)
|
||||
|
|
@ -46,6 +56,8 @@ void PPBloom::RenderBloom(PPRenderState *renderstate, int sceneWidth, int sceneH
|
|||
return;
|
||||
}
|
||||
|
||||
renderstate->PushGroup("bloom");
|
||||
|
||||
UpdateTextures(sceneWidth, sceneHeight);
|
||||
|
||||
ExtractUniforms extractUniforms;
|
||||
|
|
@ -121,6 +133,8 @@ void PPBloom::RenderBloom(PPRenderState *renderstate, int sceneWidth, int sceneH
|
|||
renderstate->SetOutputCurrent();
|
||||
renderstate->SetAdditiveBlend();
|
||||
renderstate->Draw();
|
||||
|
||||
renderstate->PopGroup();
|
||||
}
|
||||
|
||||
void PPBloom::RenderBlur(PPRenderState *renderstate, int sceneWidth, int sceneHeight, float gameinfobluramount)
|
||||
|
|
@ -144,6 +158,8 @@ void PPBloom::RenderBlur(PPRenderState *renderstate, int sceneWidth, int sceneHe
|
|||
return;
|
||||
}
|
||||
|
||||
renderstate->PushGroup("blur");
|
||||
|
||||
int numLevels = 3;
|
||||
assert(numLevels <= NumBloomLevels);
|
||||
|
||||
|
|
@ -214,6 +230,8 @@ void PPBloom::RenderBlur(PPRenderState *renderstate, int sceneWidth, int sceneHe
|
|||
renderstate->SetOutputCurrent();
|
||||
renderstate->SetNoBlend();
|
||||
renderstate->Draw();
|
||||
|
||||
renderstate->PopGroup();
|
||||
}
|
||||
|
||||
void PPBloom::BlurStep(PPRenderState *renderstate, const BlurUniforms &blurUniforms, PPTexture &input, PPTexture &output, PPViewport viewport, bool vertical)
|
||||
|
|
@ -295,6 +313,8 @@ void PPLensDistort::Render(PPRenderState *renderstate)
|
|||
uniforms.LensDistortionCoefficient = k;
|
||||
uniforms.CubicDistortionValue = kcube;
|
||||
|
||||
renderstate->PushGroup("lens");
|
||||
|
||||
renderstate->Clear();
|
||||
renderstate->Shader = &Lens;
|
||||
renderstate->Uniforms.Set(uniforms);
|
||||
|
|
@ -303,6 +323,8 @@ void PPLensDistort::Render(PPRenderState *renderstate)
|
|||
renderstate->SetOutputNext();
|
||||
renderstate->SetNoBlend();
|
||||
renderstate->Draw();
|
||||
|
||||
renderstate->PopGroup();
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
|
@ -319,6 +341,8 @@ void PPFXAA::Render(PPRenderState *renderstate)
|
|||
FXAAUniforms uniforms;
|
||||
uniforms.ReciprocalResolution = { 1.0f / screen->mScreenViewport.width, 1.0f / screen->mScreenViewport.height };
|
||||
|
||||
renderstate->PushGroup("fxaa");
|
||||
|
||||
renderstate->Clear();
|
||||
renderstate->Shader = &FXAALuma;
|
||||
renderstate->Uniforms.Clear();
|
||||
|
|
@ -332,6 +356,8 @@ void PPFXAA::Render(PPRenderState *renderstate)
|
|||
renderstate->Uniforms.Set(uniforms);
|
||||
renderstate->SetInputCurrent(0, PPFilterMode::Linear);
|
||||
renderstate->Draw();
|
||||
|
||||
renderstate->PopGroup();
|
||||
}
|
||||
|
||||
int PPFXAA::GetMaxVersion()
|
||||
|
|
@ -385,6 +411,8 @@ void PPCameraExposure::Render(PPRenderState *renderstate, int sceneWidth, int sc
|
|||
return;
|
||||
}
|
||||
|
||||
renderstate->PushGroup("exposure");
|
||||
|
||||
UpdateTextures(sceneWidth, sceneHeight);
|
||||
|
||||
ExposureExtractUniforms extractUniforms;
|
||||
|
|
@ -439,6 +467,8 @@ void PPCameraExposure::Render(PPRenderState *renderstate, int sceneWidth, int sc
|
|||
renderstate->SetNoBlend();
|
||||
renderstate->Draw();
|
||||
|
||||
renderstate->PopGroup();
|
||||
|
||||
FirstExposureFrame = false;
|
||||
}
|
||||
|
||||
|
|
@ -492,6 +522,8 @@ void PPColormap::Render(PPRenderState *renderstate, int fixedcm)
|
|||
uniforms.MapStart = { scm->ColorizeStart[0], scm->ColorizeStart[1], scm->ColorizeStart[2], 0.f };
|
||||
uniforms.MapRange = m;
|
||||
|
||||
renderstate->PushGroup("colormap");
|
||||
|
||||
renderstate->Clear();
|
||||
renderstate->Shader = &Colormap;
|
||||
renderstate->Uniforms.Set(uniforms);
|
||||
|
|
@ -500,6 +532,8 @@ void PPColormap::Render(PPRenderState *renderstate, int fixedcm)
|
|||
renderstate->SetOutputNext();
|
||||
renderstate->SetNoBlend();
|
||||
renderstate->Draw();
|
||||
|
||||
renderstate->PopGroup();
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
|
@ -552,6 +586,8 @@ void PPTonemap::Render(PPRenderState *renderstate)
|
|||
case Palette: shader = &PaletteShader; break;
|
||||
}
|
||||
|
||||
renderstate->PushGroup("tonemap");
|
||||
|
||||
renderstate->Clear();
|
||||
renderstate->Shader = shader;
|
||||
renderstate->Viewport = screen->mScreenViewport;
|
||||
|
|
@ -561,6 +597,8 @@ void PPTonemap::Render(PPRenderState *renderstate)
|
|||
renderstate->SetOutputNext();
|
||||
renderstate->SetNoBlend();
|
||||
renderstate->Draw();
|
||||
|
||||
renderstate->PopGroup();
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
|
@ -713,6 +751,8 @@ void PPAmbientOcclusion::Render(PPRenderState *renderstate, float m5, int sceneW
|
|||
ambientViewport.width = AmbientWidth;
|
||||
ambientViewport.height = AmbientHeight;
|
||||
|
||||
renderstate->PushGroup("ssao");
|
||||
|
||||
// Calculate linear depth values
|
||||
renderstate->Clear();
|
||||
renderstate->Shader = gl_multisample > 1 ? &LinearDepthMS : &LinearDepth;
|
||||
|
|
@ -774,6 +814,8 @@ void PPAmbientOcclusion::Render(PPRenderState *renderstate, float m5, int sceneW
|
|||
else
|
||||
renderstate->SetAlphaBlend();
|
||||
renderstate->Draw();
|
||||
|
||||
renderstate->PopGroup();
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
|
@ -804,6 +846,8 @@ void PPShadowMap::Update(PPRenderState *renderstate)
|
|||
ShadowMapUniforms uniforms;
|
||||
uniforms.ShadowmapQuality = (float)gl_shadowmap_quality;
|
||||
|
||||
renderstate->PushGroup("shadowmap");
|
||||
|
||||
renderstate->Clear();
|
||||
renderstate->Shader = &ShadowMap;
|
||||
renderstate->Uniforms.Set(uniforms);
|
||||
|
|
@ -812,6 +856,8 @@ void PPShadowMap::Update(PPRenderState *renderstate)
|
|||
renderstate->SetOutputShadowMap();
|
||||
renderstate->SetNoBlend();
|
||||
renderstate->Draw();
|
||||
|
||||
renderstate->PopGroup();
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
|
@ -905,6 +951,8 @@ PPCustomShaderInstance::PPCustomShaderInstance(PostProcessShader *desc) : Desc(d
|
|||
|
||||
void PPCustomShaderInstance::Run(PPRenderState *renderstate)
|
||||
{
|
||||
renderstate->PushGroup(Desc->Name);
|
||||
|
||||
renderstate->Clear();
|
||||
renderstate->Shader = &Shader;
|
||||
renderstate->Viewport = screen->mScreenViewport;
|
||||
|
|
@ -916,6 +964,8 @@ void PPCustomShaderInstance::Run(PPRenderState *renderstate)
|
|||
SetUniforms(renderstate);
|
||||
|
||||
renderstate->Draw();
|
||||
|
||||
renderstate->PopGroup();
|
||||
}
|
||||
|
||||
void PPCustomShaderInstance::SetTextures(PPRenderState *renderstate)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue