Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.42.94] |
|
Сообщ.
#1
,
|
|
|
Добрый день!
Нашел в сети реализацию по моему данного алгоритма. https://github.com/lettier/3d-game-shaders-...ions/sharpen.md У меня уже есть подготовленная матрица для вывода vec3 rgb; gl_FragColor = vec4(rgb, 1); Мне не понятно как сделать данное преобразование из примера. vec3 color = texture(sharpenTexture, vec2(gl_FragCoord.x + 0, gl_FragCoord.y + 1) / texSize).rgb * neighbor + texture(sharpenTexture, vec2(gl_FragCoord.x - 1, gl_FragCoord.y + 0) / texSize).rgb * neighbor + texture(sharpenTexture, vec2(gl_FragCoord.x + 0, gl_FragCoord.y + 0) / texSize).rgb * center + texture(sharpenTexture, vec2(gl_FragCoord.x + 1, gl_FragCoord.y + 0) / texSize).rgb * neighbor + texture(sharpenTexture, vec2(gl_FragCoord.x + 0, gl_FragCoord.y - 1) / texSize).rgb * neighbor ; Добавлено Думаю я не прав, так сделать, нельзя Добавлено Возможно есть другая реализация? |
Сообщ.
#2
,
|
|
|
Я OpenGL (и GLSL) не знаю. Но по смыслу мне кажется, что нужно перенести "texSize" так в каждой строке:
texture(sharpenTexture, vec2(gl_FragCoord.x + 1 / texSize, gl_FragCoord.y + 0)).rgb * neighbor Ну и "1 / texSize" рассчитывать заранее и передавать в шейдер константой (если не ошибаюсь, это называется "юниформ"). |