Я хочу исчезнуть экран определенного цвета с использованием GLSL До сих пор это мой GLSL код и он работает очень хорошо:Fade экрана для определенного цвета с использованием GLSL
uniform sampler2D textureSampler;
uniform vec2 texcoordOffset;
uniform vec3 sp;
uniform vec3 goal;
varying vec4 vertColor;
varying vec4 vertTexcoord;
void main(void) {
vec3 col=texture2D(textureSampler, vertTexcoord.st).rgb;
gl_FragColor = vec4(col+((goal-col)/sp), 1.0);
//gl_FragColor = vec4(col+((goal-col)*sp), 1.0); //as suggested below also this doesn't solve the problem
}
Единственная проблема у меня есть то, что с более высокими значениями sp, цвета не полностью исчезли до нового цвета. Я думаю, проблема связана с точностью, которая работает с шейдером. У любого есть идея, как повысить точность?
EDIT: Возможно ли, что этот эффект зависит от водителя? Я использую ATI с последними драйверами, возможно, кто-то может попробовать код на карте NVIDIA?
Обычно выцветание экрана выполняется путем рендеринга квадроцикла поверх всего с применением смешивания. –
@NicolBolas Похоже, что это пост-эффект. –
@NicolBolas Я также пробовал использовать квадроцикл поверх всего, но проблема все еще появляется. – Ranking