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

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

Страницы: 1440 441 442 443583 Следующая »
#6600
20:36, 31 мар. 2020

кароч, как обычно. стенсил буфер в начале кадра оказывается не чистился  )


#6601
20:39, 31 мар. 2020

BingoBongo
> стенсил буфер в начале кадра оказывается не чистился 

это как так ?

#6602
20:42, 31 мар. 2020

innuendo
после рефакторинга флаг забыл поставить

#6603
20:58, 31 мар. 2020
BingoBongo
> после рефакторинга флаг забыл поставить

никогда такого не было и вот опять повторилось

#6604
21:02, 31 мар. 2020

innuendo
не вижу проблемы, это естественная ситуация в процессе разработки.

#6605
21:47, 31 мар. 2020
BingoBongo
это был сарказм :)
#6606
(Правка: 21:55) 21:55, 31 мар. 2020

кароче тестируйте сами
https://community.amd.com/thread/250887

коротко:
как я понял после двух великолепных дней дебага - если в SPIR-V шейдере не линейная логика и несколько выходов из логики(несколько return или много функций по условиям) то такая логика будет давать непредвиденный результат в АМД, также циклы дают непредвиденный результат в АМД.
Вывод - в шейдерах нельзя использовать ничего сложнее одной main функции с одним выходом(один return на все), и нельзя использовать никакие циклы.

этот код

void main2()
{
    int i=0;
    if(i==0)return;
    else return;
    for (int i=0; i < 1; i++) {
    }
    return;
}
вызов main2() из шейдера в АМД закрашит выполнение шейдера в драйвере

скачать тесты(exe)(с исходниками шейдеров)
ссылка скачать
Тест1 на АМД должен дать то что показано на скрине(битые биты), Тест1 показывает 128Байт из push_const
Тест2 на АМД работает без проблем, тут показывает 128байт из массива в шейдере без паш констант
Тест3 минимальный код шейдера с той функцией выше, приложение не заработает на АМД, на Нвидии будет черное окно(так и должно быть)

как это влияет на реальное приложение:
Изображение

#6607
(Правка: 21:58) 21:58, 31 мар. 2020

П.С за отзывы буду благодарен
Скачайте и запустите test_1 и test_3 на АМД, и скажите выглядит также как у меня или нет.
заранее спасибо(чтоб я не чувствовал себя параноиком)

#6608
(Правка: 22:01) 22:01, 31 мар. 2020

Danilw
> test_1

как у тебя

> test_3

краш

rx580

#6609
22:10, 31 мар. 2020

Danilw
у меня как у иннуендо на rx480

#6610
22:13, 31 мар. 2020

Я такие чудеса в шейдерах видел, молодые зелёные приходят и кодают шейдер как general C++, или того хуже. Никакого понимания внутренней работы железки, регистров, индексирования, выборки из текстуры и т.д. Их бы в прошлое, во времена register combiners и NV_vertex_shader, чтобы хоть чуть мозги вправить.

#6611
22:20, 31 мар. 2020

innuendo
BingoBongo
спасибо, не чувствую себя параноиком теперь

#6612
22:43, 31 мар. 2020

Danilw
> Вывод - в шейдерах нельзя использовать ничего сложнее одной main функции с
> одним выходом(один return на все), и нельзя использовать никакие циклы.

код UE достаточно сложный - и там работает много чяго - тебе просто не везёт :)

#6613
23:03, 31 мар. 2020

если у рендерпасса несколько аттачментов, то могут ли они иметь различное количество семплов (в случае с msaa) ?

#6614
(Правка: 1 апр. 2020, 3:49) 23:10, 31 мар. 2020

innuendo
> тебе просто не везёт :)
ок))))))))))))))

забавно то что мой собственный самый комплексный шейдер карточная игра который работает в AMD, а другие более простые просто баг на баге...


кароче все с багрепортами точно покончено навсегда
никаких больше багрепортов никому
только нервы тратить

для тех кто думал что "это из за ошибок валидации" в моем оригинальном коде
Валидный код с иксешником по ссылке valid_AMD_ub_test.zip

код из SaschaWillems/Vulkan/triangle.cpp

П.С. ору в голос с челиков на реддите , посты удаляются и минусуются, вголос

Страницы: 1440 441 442 443583 Следующая »
ПрограммированиеФорумГрафика