История изменений
Исправление RPG, (текущая версия) :
Типичный шейдр - выделение края по лапласу. Костыли, такие костыли:) Обратите внимание, что достаточно сделать всего лишь пять текстурных выборок для фильтра размером 5х5.
uniform sampler2D tex;
uniform vec2 texel;
varying vec2 TexCoord;
void main() {
vec4 color = texture2D(tex, TexCoord);
//5x5 kernel, using sampler ability to mixing
vec2 t = texel * 1.5;
vec3 c = color.rgb * 8.0
- 2.0 * (texture2D(tex, TexCoord + vec2(-t.x, -t.y)).rgb
+ texture2D(tex, TexCoord + vec2(t.x, -t.y)).rgb
+ texture2D(tex, TexCoord + vec2(t.x, t.y)).rgb
+ texture2D(tex, TexCoord + vec2(-t.x, t.y)).rgb);
gl_FragColor = vec4(c, color.a);
}
В шейдрах ничего сложного. Вот о CUDA с их пятью видами памяти мозг сломаешь.
Исходная версия RPG, :
Типичный шейдр - выделение края по лапласу. Костыли, такие костыли:)
uniform sampler2D tex;
uniform vec2 texel;
varying vec2 TexCoord;
void main() {
vec4 color = texture2D(tex, TexCoord);
//5x5 kernel, using sampler ability to mixing
vec2 t = texel * 1.5;
vec3 c = color.rgb * 8.0
- 2.0 * (texture2D(tex, TexCoord + vec2(-t.x, -t.y)).rgb
+ texture2D(tex, TexCoord + vec2(t.x, -t.y)).rgb
+ texture2D(tex, TexCoord + vec2(t.x, t.y)).rgb
+ texture2D(tex, TexCoord + vec2(-t.x, t.y)).rgb);
gl_FragColor = vec4(c, color.a);
}
В шейдрах ничего сложного. Вот о CUDA с их пятью видами памяти мозг сломаешь.