提示コードですがガウス曲線を用いたbloomガウス効果の実装についてなのですが知りたいがあります。
1
下記のコードは左右のピクセルを参照してそれをresult変数に代入しているのでしょうか?
result += texture(image, TexCoords + vec2(tex_offset.x * i, 0.0)).rgb * weight[i]; result += texture(image, TexCoords - vec2(tex_offset.x * i, 0.0)).rgb * weight[i];
参考サイト: https://learnopengl.com/Advanced-Lighting/Bloom
cpp
1 2#version 330 core 3out vec4 FragColor; 4 5in vec2 TexCoords; 6 7uniform sampler2D image; 8 9uniform bool horizontal; 10uniform float weight[5] = float[] (0.227027, 0.1945946, 0.1216216, 0.054054, 0.016216); 11 12void main() 13{ 14 vec2 tex_offset = 1.0 / textureSize(image, 0); // gets size of single texel 15 vec3 result = texture(image, TexCoords).rgb * weight[0]; // current fragment's contribution 16 if(horizontal) 17 { 18 for(int i = 1; i < 5; ++i) 19 { 20 result += texture(image, TexCoords + vec2(tex_offset.x * i, 0.0)).rgb * weight[i]; 21 result += texture(image, TexCoords - vec2(tex_offset.x * i, 0.0)).rgb * weight[i]; 22 } 23 } 24 else 25 { 26 for(int i = 1; i < 5; ++i) 27 { 28 result += texture(image, TexCoords + vec2(0.0, tex_offset.y * i)).rgb * weight[i]; 29 result += texture(image, TexCoords - vec2(0.0, tex_offset.y * i)).rgb * weight[i]; 30 } 31 } 32 FragColor = vec4(result, 1.0); 33}
参考サイトのナカミを読んだうえで質問してます?
あなたの回答
tips
プレビュー