Opengl 如何添加垂直高斯模糊
这是我的片段着色器代码,我将高斯模糊应用于纹理2D图像Opengl 如何添加垂直高斯模糊,opengl,glsl,Opengl,Glsl,这是我的片段着色器代码,我将高斯模糊应用于纹理2D图像 vec3 incrementalGaussian; incrementalGaussian.x = 1.0f / (sqrt(2.0f * pi) * BlurValue ); incrementalGaussian.y = exp(-0.5f / (BlurValue * BlurValue )); incrementalGaussian.z = incrementalGaussian.y * incrementalGaussian.
vec3 incrementalGaussian;
incrementalGaussian.x = 1.0f / (sqrt(2.0f * pi) * BlurValue );
incrementalGaussian.y = exp(-0.5f / (BlurValue * BlurValue ));
incrementalGaussian.z = incrementalGaussian.y * incrementalGaussian.y;
vec4 avgValue = vec4(0.0f, 0.0f, 0.0f, 0.0f);
float coefficientSum = 0.0f;
// Take the central sample first...
avgValue += texture2D(text, TexCoords.st) * incrementalGaussian.x;
coefficientSum += incrementalGaussian.x;
incrementalGaussian.xy *= incrementalGaussian.yz;
//Go through the remaining 8 vertical samples (4 on each side of the center)
for (float i = 1.0f; i <= numBlurPixelsPerSide ; i++) {
avgValue += texture2D(text, TexCoords.st - i * 0.01f *
blurMultiplyVec) * incrementalGaussian.x;
avgValue += texture2D(text, TexCoords.st + i * 0.01f *
blurMultiplyVec) * incrementalGaussian.x;
coefficientSum += 2 * incrementalGaussian.x;
incrementalGaussian.xy *= incrementalGaussian.yz;
avgValue.g = avgValue.r;
avgValue.b = avgValue.r;
color = avgValue * vec4(textColor, 1.0) / coefficientSum ;
}
vec3递增阿尔高辛;
增量algaussian.x=1.0f/(sqrt(2.0f*pi)*模糊值);
增量algaussian.y=exp(-0.5f/(模糊值*模糊值));
incrementalGaussian.z=incrementalGaussian.y*incrementalGaussian.y;
vec4平均值=vec4(0.0f,0.0f,0.0f,0.0f);
浮动系数总和=0.0f;
//先取中心样本。。。
avgValue+=texture2D(text,TexCoords.st)*递增algaussian.x;
coefficientSum+=增量algaussian.x;
incrementalGaussian.xy*=incrementalGaussian.yz;
//检查剩余的8个垂直样本(中心每侧4个)
对于(float i=1.0f;i一般来说,高斯模糊使用两次。对于垂直模糊,您必须添加第二次。首先进行水平模糊,然后对结果应用垂直模糊
对于水平模糊,纹理坐标的u分量将被置换:
用于(float i=1.0f;我有一个问题,如果我们想对场景应用模糊,然后将其渲染到帧缓冲区,并从中创建纹理,然后将其传递到着色器。对于纹理,我们不必将其渲染到帧缓冲区。如何对纹理进行多次传递。与此相同,LearnOpenGL.com-高斯模糊在图像上进行,而不是在图像上进行场景。@shomit第一遍将纹理渲染为新纹理,第二遍将纹理渲染为场景。