refactor(effects): drop the unused composite acrylic shader
The acrylic material carried a full composite shader — vertex and fragment source, compile and link helpers, the program handle and seven uniform locations — that nothing ever invoked. The acrylic is composited on the ImGui draw list, not through this program. - Remove the dead shader source, its compile/link helpers, the program and uniform fields, and the compile/link/cleanup steps in init and shutdown. No behaviour change; init no longer builds a program that is never bound. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -33,109 +33,6 @@ namespace dragonx {
|
|||||||
namespace ui {
|
namespace ui {
|
||||||
namespace effects {
|
namespace effects {
|
||||||
|
|
||||||
// ============================================================================
|
|
||||||
// Composite Shader Source (GLEW Available)
|
|
||||||
// ============================================================================
|
|
||||||
|
|
||||||
namespace {
|
|
||||||
|
|
||||||
const char* COMPOSITE_VERTEX = R"glsl(
|
|
||||||
#version 330 core
|
|
||||||
|
|
||||||
layout (location = 0) in vec2 aPos;
|
|
||||||
layout (location = 1) in vec2 aTexCoord;
|
|
||||||
|
|
||||||
out vec2 vTexCoord;
|
|
||||||
out vec2 vNoiseCoord;
|
|
||||||
|
|
||||||
uniform vec2 uTexScale; // For noise tiling
|
|
||||||
|
|
||||||
void main()
|
|
||||||
{
|
|
||||||
gl_Position = vec4(aPos, 0.0, 1.0);
|
|
||||||
vTexCoord = aTexCoord;
|
|
||||||
vNoiseCoord = aTexCoord * uTexScale; // Tile noise
|
|
||||||
}
|
|
||||||
)glsl";
|
|
||||||
|
|
||||||
const char* COMPOSITE_FRAGMENT = R"glsl(
|
|
||||||
#version 330 core
|
|
||||||
|
|
||||||
in vec2 vTexCoord;
|
|
||||||
in vec2 vNoiseCoord;
|
|
||||||
|
|
||||||
out vec4 FragColor;
|
|
||||||
|
|
||||||
uniform sampler2D uBlurTex;
|
|
||||||
uniform sampler2D uNoiseTex;
|
|
||||||
|
|
||||||
uniform vec4 uTintColor;
|
|
||||||
uniform float uTintOpacity;
|
|
||||||
uniform float uLuminosity;
|
|
||||||
uniform float uNoiseOpacity;
|
|
||||||
|
|
||||||
void main()
|
|
||||||
{
|
|
||||||
// Sample blurred background
|
|
||||||
vec3 blur = texture(uBlurTex, vTexCoord).rgb;
|
|
||||||
|
|
||||||
// Apply luminosity (desaturation effect)
|
|
||||||
float lum = dot(blur, vec3(0.299, 0.587, 0.114));
|
|
||||||
blur = mix(vec3(lum), blur, uLuminosity);
|
|
||||||
|
|
||||||
// Apply tint color
|
|
||||||
vec3 tinted = mix(blur, uTintColor.rgb, uTintOpacity);
|
|
||||||
|
|
||||||
// Sample and apply noise
|
|
||||||
float noise = texture(uNoiseTex, vNoiseCoord).r;
|
|
||||||
// Noise is centered at 0.5, so we subtract 0.5 and scale
|
|
||||||
float noiseOffset = (noise - 0.5) * 2.0 * uNoiseOpacity;
|
|
||||||
tinted += vec3(noiseOffset);
|
|
||||||
|
|
||||||
// Output with slight transparency
|
|
||||||
FragColor = vec4(tinted, uTintColor.a);
|
|
||||||
}
|
|
||||||
)glsl";
|
|
||||||
|
|
||||||
bool compileShader(GLuint shader, const char* source)
|
|
||||||
{
|
|
||||||
glShaderSource(shader, 1, &source, nullptr);
|
|
||||||
glCompileShader(shader);
|
|
||||||
|
|
||||||
GLint success;
|
|
||||||
glGetShaderiv(shader, GL_COMPILE_STATUS, &success);
|
|
||||||
|
|
||||||
if (!success) {
|
|
||||||
GLint logLength;
|
|
||||||
glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &logLength);
|
|
||||||
std::vector<char> log(logLength + 1);
|
|
||||||
glGetShaderInfoLog(shader, logLength, nullptr, log.data());
|
|
||||||
DEBUG_LOGF("Shader compile error:\n%s\n", log.data());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool linkProgram(GLuint program)
|
|
||||||
{
|
|
||||||
glLinkProgram(program);
|
|
||||||
|
|
||||||
GLint success;
|
|
||||||
glGetProgramiv(program, GL_LINK_STATUS, &success);
|
|
||||||
|
|
||||||
if (!success) {
|
|
||||||
GLint logLength;
|
|
||||||
glGetProgramiv(program, GL_INFO_LOG_LENGTH, &logLength);
|
|
||||||
std::vector<char> log(logLength + 1);
|
|
||||||
glGetProgramInfoLog(program, logLength, nullptr, log.data());
|
|
||||||
DEBUG_LOGF("Program link error:\n%s\n", log.data());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // anonymous namespace
|
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
// AcrylicMaterial Implementation (GLEW Available)
|
// AcrylicMaterial Implementation (GLEW Available)
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
@@ -172,52 +69,6 @@ bool AcrylicMaterial::init()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create composite shader
|
|
||||||
GLuint vs = glCreateShader(GL_VERTEX_SHADER);
|
|
||||||
GLuint fs = glCreateShader(GL_FRAGMENT_SHADER);
|
|
||||||
|
|
||||||
if (!compileShader(vs, COMPOSITE_VERTEX)) {
|
|
||||||
glDeleteShader(vs);
|
|
||||||
glDeleteShader(fs);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!compileShader(fs, COMPOSITE_FRAGMENT)) {
|
|
||||||
glDeleteShader(vs);
|
|
||||||
glDeleteShader(fs);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
compositeShader_ = glCreateProgram();
|
|
||||||
glAttachShader(compositeShader_, vs);
|
|
||||||
glAttachShader(compositeShader_, fs);
|
|
||||||
|
|
||||||
if (!linkProgram(compositeShader_)) {
|
|
||||||
glDeleteProgram(compositeShader_);
|
|
||||||
glDeleteShader(vs);
|
|
||||||
glDeleteShader(fs);
|
|
||||||
compositeShader_ = 0;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
glDeleteShader(vs);
|
|
||||||
glDeleteShader(fs);
|
|
||||||
|
|
||||||
// Get uniform locations
|
|
||||||
uCompositeTintColor_ = glGetUniformLocation(compositeShader_, "uTintColor");
|
|
||||||
uCompositeTintOpacity_ = glGetUniformLocation(compositeShader_, "uTintOpacity");
|
|
||||||
uCompositeLuminosity_ = glGetUniformLocation(compositeShader_, "uLuminosity");
|
|
||||||
uCompositeNoiseOpacity_ = glGetUniformLocation(compositeShader_, "uNoiseOpacity");
|
|
||||||
uCompositeBlurTex_ = glGetUniformLocation(compositeShader_, "uBlurTex");
|
|
||||||
uCompositeNoiseTex_ = glGetUniformLocation(compositeShader_, "uNoiseTex");
|
|
||||||
uCompositeTexScale_ = glGetUniformLocation(compositeShader_, "uTexScale");
|
|
||||||
|
|
||||||
DEBUG_LOGF("AcrylicMaterial: Composite shader uniforms:\n");
|
|
||||||
DEBUG_LOGF(" uTintColor=%d, uTintOpacity=%d, uLuminosity=%d\n",
|
|
||||||
uCompositeTintColor_, uCompositeTintOpacity_, uCompositeLuminosity_);
|
|
||||||
DEBUG_LOGF(" uNoiseOpacity=%d, uBlurTex=%d, uNoiseTex=%d, uTexScale=%d\n",
|
|
||||||
uCompositeNoiseOpacity_, uCompositeBlurTex_, uCompositeNoiseTex_, uCompositeTexScale_);
|
|
||||||
|
|
||||||
// Detect system capabilities
|
// Detect system capabilities
|
||||||
refreshCapabilities();
|
refreshCapabilities();
|
||||||
currentFallback_ = detectFallback();
|
currentFallback_ = detectFallback();
|
||||||
@@ -239,11 +90,6 @@ void AcrylicMaterial::shutdown()
|
|||||||
quad_.destroy();
|
quad_.destroy();
|
||||||
noiseTexture_.destroy();
|
noiseTexture_.destroy();
|
||||||
|
|
||||||
if (compositeShader_) {
|
|
||||||
glDeleteProgram(compositeShader_);
|
|
||||||
compositeShader_ = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
initialized_ = false;
|
initialized_ = false;
|
||||||
viewportWidth_ = 0;
|
viewportWidth_ = 0;
|
||||||
viewportHeight_ = 0;
|
viewportHeight_ = 0;
|
||||||
|
|||||||
@@ -352,12 +352,6 @@ private:
|
|||||||
*/
|
*/
|
||||||
void applyBlur(float radius, bool ignoreMultiplier = false);
|
void applyBlur(float radius, bool ignoreMultiplier = false);
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Composite final acrylic appearance
|
|
||||||
*/
|
|
||||||
void compositeAcrylic(const ImVec2& pMin, const ImVec2& pMax,
|
|
||||||
const AcrylicParams& params);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Check if effect should be skipped (settings/quality)
|
* @brief Check if effect should be skipped (settings/quality)
|
||||||
*/
|
*/
|
||||||
@@ -406,16 +400,6 @@ private:
|
|||||||
// Noise texture
|
// Noise texture
|
||||||
NoiseTexture noiseTexture_;
|
NoiseTexture noiseTexture_;
|
||||||
|
|
||||||
// Composite shader (tint + noise overlay)
|
|
||||||
GLuint compositeShader_ = 0;
|
|
||||||
GLint uCompositeTintColor_ = -1;
|
|
||||||
GLint uCompositeTintOpacity_ = -1;
|
|
||||||
GLint uCompositeLuminosity_ = -1;
|
|
||||||
GLint uCompositeNoiseOpacity_ = -1;
|
|
||||||
GLint uCompositeBlurTex_ = -1;
|
|
||||||
GLint uCompositeNoiseTex_ = -1;
|
|
||||||
GLint uCompositeTexScale_ = -1;
|
|
||||||
|
|
||||||
#ifdef DRAGONX_USE_DX11
|
#ifdef DRAGONX_USE_DX11
|
||||||
// ---- DX11 acrylic resources (used instead of GL objects above) ----
|
// ---- DX11 acrylic resources (used instead of GL objects above) ----
|
||||||
ID3D11Device* dx_device_ = nullptr;
|
ID3D11Device* dx_device_ = nullptr;
|
||||||
|
|||||||
Reference in New Issue
Block a user