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

Vulkan API (вышел!) (448 стр)

Страницы: 1447 448 449 450461 Следующая »
#6705
(Правка: 21:35) 21:33, 8 апр. 2020

Генерируется 3 текстуры с шумом и на их основе рисуется фон. Очень редко, может в одном запуске из 50 или 100 результат выглядит будто текстуры битые.

должно быть:

+ Показать

битый вариант:
+ Показать

мб кто-нить может узнать паттерн, характерный для определенного рода ошибки.


#6706
23:34, 8 апр. 2020

BingoBongo
> мб кто-нить может узнать паттерн, характерный для определенного рода ошибки.
Дай больше информации. Например код шейдера. Я бы предположил, что констант буфера еще не успели инициализироваться, и в них частично мусор.
По скриншоту видно, что низкочастотный шум более менее генерируется правильно, а на высокочастотном какая-то фигня.

#6707
(Правка: 0:47) 0:43, 9 апр. 2020

MrShoor
Там генерация очень простая и идет в компьют шейдере.

+ Показать

Шейдер фона

+ Показать

#6708
(Правка: 1:21) 1:10, 9 апр. 2020

BingoBongo
> + random1_2(g_id.z)*scale
Вот эта шляпа тебе зачем? Тут по идеи всегда должно быть одно число.

#6709
(Правка: 1:15) 1:14, 9 апр. 2020

foxes
это не шляпа, а константное рандомное смещение для каждого слоя

+ Показать
#6710
(Правка: 1:33) 1:21, 9 апр. 2020

Тут на всех трех масштабах перлин пляшет.

BingoBongo
> это не шляпа, а константное рандомное смещение для каждого слоя
> return fract(sin(vec2(point * 12.9898, point * 78.233)) * 43758.5453123);
О ты знаешь я бы таким вычислением не баловался, это только потестить. Не у всех оно прокатывает, и однозначно работать будет не везде. В результате могут одинаковые значения получиться без случайности. Лучше использовать небольшой массив из готовых случайных чисел, но большой битности. И в перлине тоже.

#6711
1:22, 9 апр. 2020

BingoBongo
> float alpha = fbmTiledPerlin2(uv*scale, vec2(scale), FBM_2D_TS);
Что такое FBM_2D_TS, константа? И вообще код fbmTiledPerlin2 хотелось бы увидеть.

> random1_2(g_id.z)
И код этой функции тоже.

В остальном ничего подозрительного не вижу.

p.s. Код с шейдером фона можно делать в момент генерации. И генерировать одну текстуру вместо трех.

#6712
(Правка: 1:36) 1:33, 9 апр. 2020

foxes
> О ты знаешь я бы таким вычислением не баловался. Не у всех оно прокатывает, и
> однозначно работать будет не везде. В результате могут одинаковые значения
> получиться без случайности.
Это как?

MrShoor
вот и я не вижу... random1_2() см. все выше. все что большими буквами - дефайны констант:

+ Показать

Хочется решить проблему, а не ее проявление )

#6713
(Правка: 1:40) 1:40, 9 апр. 2020

BingoBongo
> Это как?
Тему я тебе не найду, но вместо шума получались полосы или просто черный массив. Зависит от железа.

#6714
1:44, 9 апр. 2020

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

#6715
(Правка: 2:16) 1:57, 9 апр. 2020

BingoBongo
> где точность ниже.
Нет, на современных Radeon есть такой прокол и на встроенных офисных видюшках. У меня недавно на собеседовании такое же как у тебя вылезло на солнце, при этом на смартфоне и первом старом Ipad все работало. А то что на shadertoy там тоже есть уловки, чтобы не так страшно вылазило. У ID есть исследования на эту тему, он даже специально целочисленный делал генератор.

BingoBongo
> float fbmTiledPerlin2(vec2 point, vec2 size, vec3 ts)
> point=mod(point, size);
Вот эта последняя строчка точно лишняя. Ты point тут обрезаешь, для первого слоя это работает, а дальше масштабируешь "point = point * ts.z + ts.xy;" уже обрезанную - неправильно. У тебя оно и так режется в tiledPerlin2.

#6716
(Правка: 2:27) 2:23, 9 апр. 2020

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

#6717
16:25, 20 апр. 2020

Обнаружил, что в новых Vulkan SDK от LunarG могут удаляться "старые" расширения, в частности VK_NVX_device_generated_commands. Т. е. код, написанный под старый SDK, может перестать компилироваться с новыми. В OpenGL таких проблем не было, обычно если расширение добавлялось в заголовочный файл, оно там оставалось навсегда. Созрело понимание, что весь код, написанный вне Vulkan core, надо обкладывать проверкой дефайнов:

#ifdef VK_NVX_device_generated_commands
// пишем всё, что относится к использованию расширения
#endif

Только так можно гарантировать, что код будет компилироваться с SDK разных версий.
Проверки в ран-тайме разумеется остаются как и раньше.

#6718
17:34, 20 апр. 2020

v1c
Я у себя задаю версию вулкана под которую пишу код и качаю именно эту версию с гита.

#6719
18:13, 20 апр. 2020

v1c
> могут удаляться "старые" расширения

А зачем вообще полагаться на расширения? Неужели так плохо без них?

Страницы: 1447 448 449 450461 Следующая »
ПрограммированиеФорумГрафика