Я имел ввиду черный экран
http://www.sukhoi.ru/forum/attachmen...7&d=1248723595
В OpenGL шейдеры надо использовать по такой схеме: загрузить текст в объект шейдера, затем скомпиллировать, и если нет ошибок, указав два объекта шейдера слинковать их вместе.
У меня был случай, когда я при использовании шейдеров скопировал кусок кода для фрагментного шейдера с вершинного, а переменные заменил не все, а только ту, что загружала код шейдера в объект шейдера. Соответственно, вершинный компилировался дважды.
Однако, когда вызывалась линковка, драйверами на видеокарте nvidia (моей) неявно вызвалась компиллация, которую я пропустил. Все работало без нареканий(ошибок не было, тк шейдер был очень простой), пока я запустил это на видеокарте ATI, которая требует сделать все по порядку – загрузить, скомпиллировать каждый в отдельности, отлинковать.
----------------------------------------------------------------------
Существует такая вещь, как функциональное представление геометрических объектов
Например шар можно представить в виде F(X)>=0
F(x,y,z)=X*X+Y*Y+Z*Z –R*R
Это неявное представление геометрических объектов, и для того, чтобы получить непосредственно картинку, нужно это дело визуализировать. Для визуализации используется алгоритм марширующих кубов(http://www.ict.edu.ru/ft/002440/num6inttr.pdf), и алгоритм похожий на трассировку луча, когда последовательно проверяются точки через равные промежуки, и в этих точках рассчитываются значения функции F(X).
Все это требует многочисленного расчета функции F(X) при разных X. Для простого геометрического объекта из 10 шаров или подобных примитивов, на ЦПУ расчет картинки 640*480 может занимать около 1 секунды, однако простые примитивы это не так интересно, тк есть уже есть масса средств их визуализации. На много интересней сложные примитивы вроде конволюций(Convolution) (на русском языке, также именуется поверхностью свертки)
Это некотрое тело, обернутое вокруг примитива: отрезка, дуги, треугольника.
Вычисление функции свертки вокруг треугольника – достаточно длительное занятие. И это еще более длительное занятие, если таких треугольников будет много (сотни и тысячи). Если их будет еще больше расчет одной картинки может затянуться на недели.
Расчет вот этой картинки у меня длится около 6-ти часов 400*400 пикселей для 1922 треугольников (однопоточно, без использования ММХ или SSE).
Это ландшавт, вроде как покрытый снегом.
В тоже время, реализация через шейдеры позволяет, для простых объектов добиться визуализации в реальном времени, а для сложных объектов, получить ускорение в 50-200 раз.
Не все объекты могут получить значительное ускорение, но для конволюций это теоретически должно быть очень выгодно в силу наличия «внутренней» суммы вычисляемой по числу используемых треугольников.
Привести аналогичную картинку с шейдерами не могу, так как через шейдеры, в следствии небольшой недоработки с моей стороны, картинка получается очень "шумной", если монго треугольников используются. Если весь код функции не влезает в один шейдер - то получается ступенчатой - ступенчатость - это недоработка метода сечений, который используется, и я не продумал до конца как обойти эту ступенчатость.
Сами же конволюции могут быть применены либо, как средство сглаживания полигональной сетки, либо как часть автоматической генерации снежных заносов и завалов, а также обтекания геометрии тягучими жидкостями, чеканки(см ссылку) .
Через 3-5 лет плагины по вычислениям конволюций будут широко распространены, как сейчас получают распространения blob – подобные плагины для max/maya для моделирования органических объектов – мускул, жировых складок, и тд.
Кстати, в тему про снег, а вы не думали попробовать вот такую реализацию снега на ветках деревьев?
там хороший пример по превращению черного дерева в снежное дерево за счет шейдеров.(скачайте програмку и исходник, посмотрите, это действительно любопытно!)
-----------------------------------------
Когда начались ошибки, я переключил настройки на режим «согласно 3Д приложению»,P.S. У Вас на ноутбуке в драйверах антиалайсинг не форсирован?
Сейчас попробовал... мда.. ППЦ я не понимаю что происходит.
В начале действий у меня черный экран появлялся при активной опции HDR. Я пошел в настройки панели управлении Nvidia и принудительно отключил «Анизотропную фильтрацию». HDR стал доступен без черного экрана.
Тогда я пошел в настройки игры и отключил анизотропную фильтрацию там – HDR продолжал быть доступен. Тогда я включил в панели управления Nvidia принудительно Анизатропную фильтрацию повышая ее сначала до 2Х потом 4Х потом 16Х – каждый раз выходил из игры, и входил в игру, проверял – всегда режим HDR был доступен.
Тогда я в панели управления Nvidia выставил различные настройки на более лучшие. HDR был доступен без черного экрана.
Я перезагрузился, предполагая, что возможно это что-то что осталось вместе с загруженной библиотекой Direct3D. Черного экрана нет.
Мои рекомендации как шамана:
1) выставить в панели управления Nvidia, Анизатропная фильтрация - согласно 3Д приложения.
2) Запустить игру. Если будет черный экран – в опциях игры отключить Анизатропную фильтрацию и выйти
3) В панели управления Nvidia, Анизатропная фильтрация – сдеалать выкл
4) Запустить игру. Черного экрана должно не быть.
5) Теперь можно выставить любые опции, которые вам нравятся, в том числе форсированные.
Я не знаю как вновь получить черный экран, без переустановки драйверов.
Полный ППЦ эти драйвера для ноутбуков...
Осталась только одна проблема – частичное сокрытие элементов выделения юнитов прямоугольником 1024*768. Оно пропадает, если выставить разрешение 1024*768, но такое разрешение неудобно: экран предназначен именно к 1650*1050 пикселей.
Есть предложения как шаманить? В бубен стучать?