У меня есть шейдер обнаружения границ, который отлично работает как обеими обезьянами рендеринга, так и моей HTC Desire HD. Однако он не работает на моем LG 3D P920. Вот шейдер:Посторонние эффекты OpenGLSL - не уверены в причине
Короче говоря, я беру центральный пиксель и вычитаю 8 значений вокруг него. Текстура составляет 512x512.
precision highp float;
varying vec2 vTextureCoord;
uniform sampler2D sTexture;
vec4 edges(void)
{
const float offset = 1.0/512.0;
vec4 c = texture2D(sTexture, vTextureCoord);
vec4 edge = texture2D(sTexture, vTextureCoord + vec2(-offset, -offset)) +
texture2D(sTexture, vTextureCoord + vec2(-offset, 0.0)) +
texture2D(sTexture, vTextureCoord + vec2(-offset, offset)) +
texture2D(sTexture, vTextureCoord + vec2(0.0, offset)) +
texture2D(sTexture, vTextureCoord + vec2(offset, offset)) +
texture2D(sTexture, vTextureCoord + vec2(offset, 0.0)) +
texture2D(sTexture, vTextureCoord + vec2(offset, -offset)) +
texture2D(sTexture, vTextureCoord + vec2(0.0, -offset));
return 8.0 * (c + -0.125 * edge);
}
void main() {
gl_FragColor = edges();
}
Теперь на ПК и желании HD это изображение в основном черного цвета с выделенными выделенными краями. Однако на устройстве LG оно отображается как изображение с повышенной экспозицией, но с довольно небольшим количеством шума.
Это ощущение точности, и, как вы можете видеть, я пытался повысить точность, но я не знаю, что еще попробовать или если я сделал это правильно.
Это не изолировано от этого шейдера, у меня есть шейдер освещения, который, кажется, имеет шум на этом устройстве, но не на других.
Я также попытался закрепить конечное значение.