Shader CRT-Pi alternatiu en pipeline separat; selecció via config + presets (v0.6.0)
This commit is contained in:
1 parent
26b4d9e610
commit
ce5bec1b34
16 files changed
+11205
-8
No files matched your search
@@ -222,6 +222,13 @@ namespace Rendering {
|
||||
cleanup();
|
||||
return false;
|
||||
}
|
||||
// El pipeline CrtPi es crea sempre — l'usuari pot alternar en calent
|
||||
// via setActiveShader() sense tornar a init'ar la GPU.
|
||||
crtpi_pipeline_ = std::make_unique<CrtPiPipeline>();
|
||||
if (!crtpi_pipeline_->init(device_, window_)) {
|
||||
cleanup();
|
||||
return false;
|
||||
}
|
||||
|
||||
is_ready_ = true;
|
||||
return true;
|
||||
@@ -361,6 +368,13 @@ namespace Rendering {
|
||||
return;
|
||||
}
|
||||
|
||||
// Camí CrtPi: delega tot el render pass al pipeline dedicat.
|
||||
if (active_shader_ == ShaderType::CRTPI && crtpi_pipeline_ != nullptr) {
|
||||
crtpi_pipeline_->render(cmd, swapchain, scene_texture_, sampler_, game_width_, game_height_);
|
||||
SDL_SubmitGPUCommandBuffer(cmd);
|
||||
return;
|
||||
}
|
||||
|
||||
uniforms_.time = static_cast<float>(SDL_GetTicks()) / 1000.0F;
|
||||
|
||||
SDL_GPUColorTargetInfo color_target{};
|
||||
@@ -386,6 +400,12 @@ namespace Rendering {
|
||||
SDL_SubmitGPUCommandBuffer(cmd);
|
||||
}
|
||||
|
||||
void SDL3GPUShader::setCrtPiParams(const CrtPiParams& params) {
|
||||
if (crtpi_pipeline_ != nullptr) {
|
||||
crtpi_pipeline_->setParams(params);
|
||||
}
|
||||
}
|
||||
|
||||
void SDL3GPUShader::setPostFXParams(const PostFXParams& params) {
|
||||
uniforms_.vignette_strength = params.vignette;
|
||||
uniforms_.scanline_strength = params.scanlines;
|
||||
@@ -430,6 +450,9 @@ namespace Rendering {
|
||||
if (device_ != nullptr) {
|
||||
SDL_WaitForGPUIdle(device_);
|
||||
|
||||
// El pipeline CrtPi ha d'alliberar-se mentre el device segueix viu.
|
||||
crtpi_pipeline_.reset();
|
||||
|
||||
if (pipeline_ != nullptr) {
|
||||
SDL_ReleaseGPUGraphicsPipeline(device_, pipeline_);
|
||||
pipeline_ = nullptr;
|
||||
|
||||
Reference in new issue
Block a user