dFdx оказался весьма тормозным и оттого воспротивился я ему всей душой.
Как в моем случае (чтобы получить эффект как в видео в первом посте) можно обойтись без бранчей?
MikeNew
> dFdx оказался весьма тормозным
это шо за железо такое ?
> можно обойтись без бранчей?
cmov?
вынеси texture вначало без бранчей - детский сад
MikeNew
> dFdx оказался весьма тормозным и оттого воспротивился я ему всей душой.
Железка старая? Я както давно тестил релиеф маппинг, сравнивал textureGrad и textureLod. Карту не помню, 9800гтх вроде? Так вот, textureGrad был в разы медленней. Там же использование textureSize не кисло так роняла производительность. На 680 я уже такого безобразия не видел.
MikeNew
> dFdx оказался весьма тормозным и оттого воспротивился я ему всей душой
советую всё-таки разобраться с тем, что он вообще делает. но для этого надо почитать ссылку выше, а не просто код копировать. код расчёта градиента в шейдере практически бесплатный, иначе его бы никто не хардкодил в дефолтные семплеры аппаратно.
barnes
> сравнивал textureGrad и textureLod. Карту не помню, 9800гтх вроде? Так вот,
> textureGrad был в разы медленней.
не может textureGrad быть медленнее. медленнее может быть семплинг, если ты ему неправильные градиенты передал и все выборки мимо текстурного кеша полетели.
MikeNew
Можно ли все же объяснить, зачем вообще все это?
Почему нельзя обойтись просто встроенной трилинейной фильтрацией? Или там что-то типа мегатекстуры?
Suslik
> не может textureGrad быть медленнее. медленнее может быть семплинг, если ты ему
> неправильные градиенты передал и все выборки мимо текстурного кеша полетели.
Железка яж говорю старая была. Результат был даже медленнее чем просто чтение текстуры.
Щас с этим все ок.
innuendo
> это шо за железо такое ?
gt710
innuendo
> вынеси texture вначало без бранчей - детский сад
Не понял, как в начало? Координаты-то считаются в бранчах. Я пробовал за бранчи выносить в конец - те же самые артефакты, что впрочем логично.
barnes
> Железка старая?
Да.Suslik
> советую всё-таки разобраться с тем, что он вообще делает. но для этого надо
> почитать ссылку выше, а не просто код копировать. код расчёта градиента в
> шейдере практически бесплатный, иначе его бы никто не хардкодил в дефолтные
> семплеры аппаратно.
Я ее прочитал. Ну объяснено там почему так происходит, но как решать - не сказано. Сказано только то что это не просто, а это я и сам вижу.
Suslik
> не может textureGrad быть медленнее. медленнее может быть семплинг, если ты ему
> неправильные градиенты передал и все выборки мимо текстурного кеша полетели
имеенно dFdx, dFdy медленные, а не textureGrad.
innuendo
> cmov?
Что это еще за странный негуглящийся зверь?
Ranma
> MikeNew
> Можно ли все же объяснить, зачем вообще все это?
> Почему нельзя обойтись просто встроенной трилинейной фильтрацией? Или там
> что-то типа мегатекстуры?
Видео в первом посте смотрел? Я пробую метод борьбы с тайлингом ландшафта путем увеличения масштаба текустуры по мере удаления. Чем дальше - тем больше текстура. Хочу сделать в пять шагов, а не в один, для большей плавности. Из-за особенностей работы видеокарт если использовать условия в шейдере - аппаратный мипмэпинг работает неправильно. Путаюсь придумать как обойтись без if.
по fog считаешь vv*foo - потом в итоге texture
MikeNew
> Я пробую метод борьбы с тайлингом ландшафта путем увеличения масштаба
> текустуры по мере удаления. Чем дальше - тем больше текстура.
ну и чё это будет-то? ты где видел, чтобы текстура ландшафта по мере удаления масштаб меняла? мол, чем дальше трава, тем она больше? я уж не знаю, откуда ты этот способ взял, но с тайлингом есть миллион нормальных способов бороться, например, так:
https://www.shadertoy.com/view/WdVGWG
или так:
https://www.shadertoy.com/view/tsVGRd
и не за шесть выборок по четырём бренчам как у тебя, а за две или три соответственно и вообще без ветвлений.
MikeNew
> имеенно dFdx, dFdy медленные, а не textureGrad.
Да.... вычетание в шейдере дорогое стало, эх...
MrShoor
> Да.... вычетание в шейдере дорогое стало, эх...
это как эпсилон в CAD? там же не просто вычитание, да ? неспроста же сделали https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/ddx-coarse
Suslik
> ну и чё это будет-то? ты где видел, чтобы текстура ландшафта по мере удаления
> масштаб меняла? мол, чем дальше трава, тем она больше? я уж не знаю, откуда ты
> этот способ взял
Конечно, это не подойдет для определенных текстур, но для текстур без крупных деталей хорошо смотреться должно, уж всяко лучше чем адский тайлинг, который вылазит в куче игр местами, где его не разымыли или не замаскировали деревьями или тому подобным.
, но с тайлингом есть миллион нормальных способов бороться,
> например, так:
Видел это еще несколько лет назад, красиво, но жестко в плане производительности.
Suslik
> и не за шесть выборок
Там две выборки, это я мультитекстурирование ландшафта забыл убрать из примера.
innuendo
> по fog считаешь vv*foo - потом в итоге texture
Наркомания какая-то получается (причем в буквальном смысле этого слова), впрочем может это я что-то не так делаю. Буду дальше пробовать, где-то накосячил.
Так-то у меня уже есть неплохой метод борьбы с тайлингом путем поворота текстур на рэндомный угол и заодно смещения, но хочется сравнить варианты.
Забавно, реализовал без бранчей, так теперь артефакты видны еще лучше, причем на этот раз даже textureGrad не помогает. Ох уж этот мипмапинг.
Тема в архиве.