Ошибка при установке шейдеров

Как я могу отлаживать шейдеры GLSL?

При написании нетривиальных шейдеров (как и при написании любого другого нетривиального кода) люди делают ошибки. [цитата нужна] Однако я не могу просто отладить его, как любой другой код — вы не можете просто присоединить GDB или отладчик Visual Studio в конце концов. Вы даже не можете выполнять отладку printf, потому что нет формы вывода на консоль. Что я обычно делаю, так это визуализирую данные в цвете, но это очень элементарное и любительское решение. Я уверен, что люди придумали лучшие решения.

Так как же я могу отладить шейдер? Есть ли способ пройти через шейдер? Могу ли я посмотреть на выполнение шейдера на определенной вершине / примитиве / фрагменте?

(Этот вопрос конкретно о том, как отлаживать шейдерный код, похожий на то, как можно было бы отлаживать «нормальный» код, а не об отладке таких вещей, как изменения состояния.)

Насколько я знаю, нет инструментов, позволяющих пошагово проходить код в шейдере (также в этом случае вам нужно будет выбрать только пиксель / вершину, которую вы хотите «отладить», выполнение, вероятно, варьироваться в зависимости от этого).

То, что я лично делаю, это очень хакерская «красочная отладка». Так что я сбрасываю кучу динамических веток с #if DEBUG / #endif охранниками, которые в основном говорят

Таким образом, вы можете «наблюдать» отладочную информацию таким образом. Я обычно делаю разные трюки, такие как прокалывание или смешивание различных «цветовых кодов», чтобы проверить различные более сложные события или небинарные вещи.

В этой «структуре» я также считаю полезным иметь набор фиксированных соглашений для общих случаев, чтобы, если мне не приходилось постоянно возвращаться и проверять, с каким цветом я связан, с каким. Важно иметь хорошую поддержку горячей перезагрузки шейдерного кода, так что вы можете почти интерактивно изменять отслеживаемые данные / события и легко включать / выключать визуализацию отладки.

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

Конечно, само собой разумеется, что если я не «отлаживаю» пиксельный шейдер или вычислительный шейдер, я передаю эту информацию «debugColor» по всему конвейеру, не интерполируя ее (в GLSL с flat ключевым словом)

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

Также есть GLSL-отладчик . Этот отладчик раньше назывался GLSL Devil.

Сам отладчик очень удобен не только для кода GLSL, но и для самого OpenGL. У вас есть возможность переключаться между вызовами отрисовки и прерывать переключатели шейдеров. Он также показывает вам сообщения об ошибках, переданные OpenGL обратно в само приложение.

Поставщики графических процессоров предлагают несколько предложений, таких как AMD CodeXL или отладчик nSight / Linux GFX от NVIDIA, которые позволяют проходить через шейдеры, но привязаны к аппаратному обеспечению соответствующего поставщика.

Позвольте мне заметить, что, хотя они доступны в Linux, у меня всегда был небольшой успех с их использованием там. Я не могу комментировать ситуацию под Windows.

Вариант, который я недавно использовал, заключается в модульном кодировании моего шейдерного кода #includes и ограничении включенного кода общим подмножеством GLSL и C ++ & glm .

Когда я сталкиваюсь с проблемой, я пытаюсь воспроизвести ее на другом устройстве, чтобы увидеть, является ли проблема той же самой, которая намекает на логическую ошибку (вместо проблемы с драйвером / неопределенного поведения). Существует также вероятность передачи неверных данных в графический процессор (например, с помощью неправильно связанных буферов и т. Д.), Которые я обычно исключаю либо путем отладки вывода, как в ответе cifz, либо путем проверки данных через apitrace .

Читайте также:  Для установки мик с

Когда это логическая ошибка, я пытаюсь восстановить ситуацию с GPU на CPU, вызывая включенный код на CPU с теми же данными. Тогда я могу пройти через это на процессоре.

Опираясь на модульность кода, вы также можете попробовать написать для него unittest и сравнить результаты между запуском GPU и CPU. Однако вы должны знать, что в некоторых случаях C ++ может вести себя не так, как GLSL, что дает ложные срабатывания в этих сравнениях.

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

А для краткого обзора приведу блок-схему моего процесса отладки: Блок-схема процедуры, описанной в тексте

Источник



Шейдеры в Call of Duty Warzone: Установка и проблемы

Шейдеры в Call of Duty Warzone

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

Почему шейдеры каждый раз устанавливаются в Warzone?

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

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

Варианты ошибок при установке шейдеров:

  1. Зависание на конкретном проценте установки
  2. Бесконечная переустановка шейдеров

Почему не устанавливаются шейдеры в Warzone?

Слабый компьютер

Причин подобных зависаний масса, например, недавнее исследование показало, что установка шейдеров на процессоре Ryzen 5 3600 проходит без ошибок и в десятки раз быстрее чем на i3 8100. На i3 установка зависла, однако после перезапуска игры началась вновь. Не спешите расстраиваться, если у вас слабый компьютер, мы предоставим решение данной проблемы.

Что бы решить проблему зависания шейдеров следует:

  1. Запустить игру
  2. Перейти в Параметры
  3. Вкладка Графика
  4. Активировать Повторную установку шейдеров
  5. Дождись завершения установки
  6. Перезапустите игру

переустановка шейдеров в варзон

Надеюсь, мы смогли прояснить ситуацию с шейдерами и, вероятно, исправили возникшие ошибки, удачи в Верданске!

Источник

Ошибка 1603 при установке ПО от AMD

При попытке реализовать установку или же обновление драйверов для видеокарты от производителя ADM может возникнуть загвоздка в реализации процесса. Всему виной становится AMD ошибка 1603, которая возникает по нескольким причинам. Решение проблемы заключается в использовании одного из методов её устранения, которые будут перечислены ниже.

Причины

Существует целый спектр причин, которые впоследствии могут вызвать проблемы при установке драйверов:

  • Повреждения в системных файлах или ключах реестра.
  • Возникновение несовместимости графического драйвера и ПО.
  • Отсутствие обновлений операционной системы Windows, которые играют важную роль в процессе взаимодействия с ней.
  • Конфликт, вызванный ложными блокировками со стороны установленного антивирусного программного обеспечения.

Ошибка 1603 при установке ПО от AMD

Обратите внимание. Могут возникать случаи, в рамках которых несколько проблем одновременно препятствуют установке ПО.

Устранение ошибки

Чтобы код ошибки 1603 АМД больше не тревожил пользователей, следует принять конкретные меры. Ниже будут описаны различные методы, которые нужно воплощать в указанной последовательности до тех пор, пока проблема не будет устранена.

Восстановление системного реестра и файлов

Первый способ основывается на восстановлении системного реестра, а также файлов. Чтобы получить желаемый результат, необходимо запустить систему обслуживания образов развёртывания и управления ими Windows Deployment Image Servicing and Management (в сокращении – DISM).

Помимо этого, следует выполнить запуск средства проверки системных файлов System File Checker (сокращенно SFC).

Обратите внимание. Все действия в данном случае должны реализовываться от имени администратора.

Описанные средства DISM и SFC предназначены для того, чтобы выполнить проверку образа Windows на целостность. Оцениваются защищённые системные файлы, а также выполняется замена компонентов, которые повреждены или же имеют неправильную версию.

Читайте также:  A1312 imac установка ios

Для запуска DISM необходимо:

  • При использовании комбинации клавиш «Windows + X» запустить меню «Опытный пользователь».
  • Выбрать позицию «Командная строка (Администратор)».
  • Ввести специальную команду «DISM/Online/Cleanup-Image/RestoreHealth», а затем кликнуть на Enter на клавиатуре.

Важно. В процессе выполнения операции на 20% процесс временно приостановится. Не стоит искать устранение данного явления, так как уже через несколько минут вся процедура восстановится.

Что касается SFC, тут всё аналогично:

  • Упомянутым выше методом необходимо открыть меню «Опытный пользователь».
  • Среди всех вариантов выбирается пункт «Командная строка (Администратор)».
  • Затем вводится команда «SFC/SCANNOW» и нажимается Enter на клавиатуре.

Поврежденные распространяемые файлы Microsoft Visual C++

Ошибка 1603 при установке драйвера AMD может быть спровоцирована различными повреждениями компонентов Microsoft Visual C++, которые на данный момент установлены на вашем ПК. Для решения возникшей проблемы необходимо:

  • Проверить версии распространяемых компонентов через раздел «Программы и компоненты» и записать их.

Ошибка 1603 при установке ПО от AMD

  • Выполнить установку загруженных пакетов.
  • Удалить из системы все те версии Microsoft Visual C++, которые на данный момент времени установлены.
  • Реализовать повторное скачивание и сохранение новой копии распространяемых компонентов.

Обновление операционной системы

Следующая причина АМД ошибки 1603 может основываться на отсутствии обновлений для ОС Windows. Чтобы устранить неполадки, необходимо:

  • Запустить центр обновления Windows.
  • Выполнить поиск и установку всего того, что найдёт система.

Ошибка 1603 при установке ПО от AMD

Обратите внимание. Акцент следует сделать на инсталляции критических и важных обновлений.

Решение конфликта между ПО и драйверами

Код ошибки 1603 AMD может быть вызван за счёт несовместимости драйверов и программного обеспечения. Решение заключается в том, чтобы выполнить удаление повреждённых файлов и записей реестра. После этого установка нового пакета должна пройти без каких-либо нюансов.

В полной очистке драйверов помогает сторонний софт, среди популярных программ выделают AMD Clean Uninstall Utility и Display Driver Uninstaller.

Обратите внимание. При работе с данными приложениями (в особенности с Display Driver Uninstaller) вы должны быть внимательными и осторожными. Помните о том, что только вы несёте ответственность за все реализуемые действия, всё выполняется исключительно на ваш страх и риск.

Решение вопроса с антивирусом

Антивирусное ПО и базы данных сигнатур вирусов могут оказывать противодействие и мешать установке ПО от AMD. Во-первых, выполните обновление антивирусной программы. Во-вторых, на время инсталляции программного обеспечения и драйверов от AMD отключите защиту системы. Вместе с тем помните о том, что все действия вы так же реализуете на свой страх и риск.

Установка новейшей программы для инсталляции продуктов от AMD

Чтобы ошибка 1603 при установке драйвера АМД не возникала, рекомендуется использовать новейшее программное обеспечение. Последние версии дорабатываются разработчиками, из них исключают различные недочёты.

Заключение

Появление ошибки 1603 может быть вызвано множеством различных причин. Выше описаны методы, использование которых позволит устанавливать драйвера и ПО от AMD без каких-либо сбоев.

Источник

Как я могу отлаживать шейдеры GLSL?

При написании нетривиальных шейдеров (как и при написании любого другого нетривиального кода) люди делают ошибки. [цитата нужна] Однако я не могу просто отладить его, как любой другой код — вы не можете просто присоединить GDB или отладчик Visual Studio в конце концов. Вы даже не можете выполнять отладку printf, потому что нет формы вывода на консоль. Что я обычно делаю, так это визуализирую данные в цвете, но это очень элементарное и любительское решение. Я уверен, что люди придумали лучшие решения.

Так как же я могу отладить шейдер? Есть ли способ пройти через шейдер? Могу ли я посмотреть на выполнение шейдера на определенной вершине / примитиве / фрагменте?

(Этот вопрос конкретно о том, как отлаживать шейдерный код, похожий на то, как можно было бы отлаживать «нормальный» код, а не об отладке таких вещей, как изменения состояния.)

Читайте также:  Как запретить установку приложений виндовс 10

Насколько я знаю, нет инструментов, позволяющих пошагово проходить код в шейдере (также в этом случае вам нужно будет выбрать только пиксель / вершину, которую вы хотите «отладить», выполнение, вероятно, варьироваться в зависимости от этого).

То, что я лично делаю, это очень хакерская «красочная отладка». Так что я сбрасываю кучу динамических веток с #if DEBUG / #endif охранниками, которые в основном говорят

Таким образом, вы можете «наблюдать» отладочную информацию таким образом. Я обычно делаю разные трюки, такие как прокалывание или смешивание различных «цветовых кодов», чтобы проверить различные более сложные события или небинарные вещи.

В этой «структуре» я также считаю полезным иметь набор фиксированных соглашений для общих случаев, чтобы, если мне не приходилось постоянно возвращаться и проверять, с каким цветом я связан, с каким. Важно иметь хорошую поддержку горячей перезагрузки шейдерного кода, так что вы можете почти интерактивно изменять отслеживаемые данные / события и легко включать / выключать визуализацию отладки.

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

Конечно, само собой разумеется, что если я не «отлаживаю» пиксельный шейдер или вычислительный шейдер, я передаю эту информацию «debugColor» по всему конвейеру, не интерполируя ее (в GLSL с flat ключевым словом)

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

Также есть GLSL-отладчик . Этот отладчик раньше назывался GLSL Devil.

Сам отладчик очень удобен не только для кода GLSL, но и для самого OpenGL. У вас есть возможность переключаться между вызовами отрисовки и прерывать переключатели шейдеров. Он также показывает вам сообщения об ошибках, переданные OpenGL обратно в само приложение.

Поставщики графических процессоров предлагают несколько предложений, таких как AMD CodeXL или отладчик nSight / Linux GFX от NVIDIA, которые позволяют проходить через шейдеры, но привязаны к аппаратному обеспечению соответствующего поставщика.

Позвольте мне заметить, что, хотя они доступны в Linux, у меня всегда был небольшой успех с их использованием там. Я не могу комментировать ситуацию под Windows.

Вариант, который я недавно использовал, заключается в модульном кодировании моего шейдерного кода #includes и ограничении включенного кода общим подмножеством GLSL и C ++ & glm .

Когда я сталкиваюсь с проблемой, я пытаюсь воспроизвести ее на другом устройстве, чтобы увидеть, является ли проблема той же самой, которая намекает на логическую ошибку (вместо проблемы с драйвером / неопределенного поведения). Существует также вероятность передачи неверных данных в графический процессор (например, с помощью неправильно связанных буферов и т. Д.), Которые я обычно исключаю либо путем отладки вывода, как в ответе cifz, либо путем проверки данных через apitrace .

Когда это логическая ошибка, я пытаюсь восстановить ситуацию с GPU на CPU, вызывая включенный код на CPU с теми же данными. Тогда я могу пройти через это на процессоре.

Опираясь на модульность кода, вы также можете попробовать написать для него unittest и сравнить результаты между запуском GPU и CPU. Однако вы должны знать, что в некоторых случаях C ++ может вести себя не так, как GLSL, что дает ложные срабатывания в этих сравнениях.

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

А для краткого обзора приведу блок-схему моего процесса отладки: Блок-схема процедуры, описанной в тексте

Источник

Adblock
detector