ПрограммированиеФорумГрафика

Артефакты при смешивании текстур (GLSL) (3 стр)

Страницы: 1 2 3
#30
19:11, 14 апр 2021

MikeNew
никакой роли бранчи (или их отсутствие) не играют в швах мипмаппинга. они образуются там, где у тебя есть разрыв в текстурных координатах. иннуэнды связывают швы с бранчингом, лишь потому что бранчинг — один из самых популярных способов получения разрыва в текстурных координатах, но вовсе не единственный и вовсе не любой бранчинг породит разрыв координат. общий принцип заключается в том, чтобы либо использовать в явном виде градиенты, либо располагать шов там, где вес у выборки в результирующем блендинге равен нулю. оба способа здесь реализованы: https://www.shadertoy.com/view/Xtl3zf

я практически уверен, что ты пытаешься блендить два текстурых слоя разного масштаба, а на линии, где у тебя получается излом, ты один из них подменяешь другим, а на его место ставишь слой с новым масштабом. так вот чтобы разрыва не было, надо сменяющиеся слои чередовать, чтобы UV второго слоя оставался непрерывным.  короче, лень объяснять, читай код и комментарии.

PS но способ всё равно наркоманский, потому что в результате получится чёрт знает что произвольного масштаба.

#31
19:38, 14 апр 2021

Suslik
> иннуэнды связывают швы с бранчингом

мне до фени что там и как - бранчинг с texture без dFdx это зло

#32
20:47, 14 апр 2021

Suslik
> иннуэнды связывают швы с бранчингом, лишь потому что бранчинг — один из самых
> популярных способов получения разрыва в текстурных координатах, но вовсе не
> единственный и вовсе не любой бранчинг породит разрыв координат.
А texture в динамическом бранче вообще компелируется? Просто HLSL на этапе компиляции сразу пошлет с соответствующей ошибкой.

#33
7:15, 15 апр 2021

Suslik
> https://www.shadertoy.com/view/Xtl3zf
Сделаю сравнительные тесты.

Странно. Код один в один, а получается вот что:
Изображение

Глянь пожалуйста, шейдер коротенький, невозможно же ошибиться:

+ Показать
#34
14:33, 17 апр 2021

Текстуры криво мешаются, скорее всего, из-за того, что зря расстояние берется из глубины float dist = gl_FragCoord.z / gl_FragCoord.w. Она же там не линейная. Лучше взять координаты вершины в вершинном шейдере и положение камеры и считать там расстояние. Это и быстрее будет.

#35
12:41, 19 апр 2021

__sergey
> Текстуры криво мешаются, скорее всего, из-за того, что зря расстояние берется
> из глубины float dist = gl_FragCoord.z / gl_FragCoord.w. Она же там не
> линейная. Лучше взять координаты вершины в вершинном шейдере и положение камеры
> и считать там расстояние. Это и быстрее будет.
Спасибо, надо будет попробовать.
Тем более что нашел хорошее применение способу борьбы с тайлингом посредство масштабирования тепкстур - изменение масштаба для текстур нормалей воды. Там он будет в самый раз смотреться, в отличие от террайна.

#36
12:47, 19 апр 2021

MikeNew
> float k = texture( texSampler_1024, vec3(uv* 0.005, NOISE_TEXTURE)).x;
> vec2 offa = sin(vec2(3.0,7.0)*ia); // can replace with any other hash
> vec2 offb = sin(vec2(3.0,7.0)*ib); // can replace with any other hash
MikeNew
> Код один в один
в том и идея, чтобы не один в один код копировать, а попытаться разобраться, что он делает. скопирует за тебя innuendo, тут всё схвачено. например, этот код существенно зависит от масштаба сцены, и ты даже не попытался понять, как и почему и тем более что с этим делать.


это, кстати, не мой код. в моём коде если магические константы и есть, то они явно вынесены наружу из утилитарных функций.

#37
13:27, 19 апр 2021

Suslik
> в том и идея, чтобы не один в один код копировать, а попытаться разобраться,
> что он делает. скопирует за тебя innuendo

до тебя так и не дошло ?

Страницы: 1 2 3
ПрограммированиеФорумГрафика

Тема в архиве.