Ответ: Как сделать инфракрасный фильтр?
vs - vertex shader
тут используются шейдеры, на blitz3d шейдеры подключить нет возможности, т.к. блитц3д, в отличае от огра, работает не с самым свежим графическим API (это то, что делает программные вызовы движка к видеокарте понятными самой видеокарте), а именно - DirectX 7.
Шейдеры в зачаточном виде появились впервые в DirectX 8, в полную силу (точнее, какими мы их знаем и какими, очевидно, оперирует приведенный тобой пример) они заиграли в DirectX 9.
Наиболее часто в наши дни используются высокоуровневые шейдерные языки, такие как HLSL и GLSL. Их различия в том, что HLSL работает совместно с графическим API DirectX, а GLSL - вместе с OpenGl.
Теперь вернемся к твоей проблеме.
Варианты выхода следующие:
1. Использовать Xors3D, он работает уже на DirectX 9, и, соответственно, позволяет использовать шейдеры
2. Использовать Xors3D совместно с BlitzMax - этим ты увеличишь скорость обработки математических операций (которые, несомненно, встретятся у тебя в проекте) и получишь больше возможностей абстрагирования вместе с ООП. Такой переезд приведет архитектуру твоего проекта к более С++-подобному виду, и различные "переводы" всяческих "фишечек" для огра облегчится, если ты, конечно, не поленишься переписать архитектуру проекта.
3. Использовать другие текстуры.
Я бы посоветовал делать так: самые нижние 3 слоя отдать для "тепловидения", оставшиеся 5 - на диффуз и все остальное по твоему усмотрению.
Тепловизионные текстуры:
нижний слой - фон, типа статичная температура
средний - чуть "теплее", опять же, не по всему объекту, а крупными пятнами, при "разогреве" объекта (если ты собираешься его реализовывать) его яркость можно будет увеличивать (увеличивать прозрачность слоя)
самый верхний из тепловизионных - "горячее пятно". Тепловизионная картинка в центре объекта показывает бОльшую температуру. Беда в том, что если просто наложить на объект такое пятно, то при движении объекта или камеры мы не увидим того, что пятно остается в центре. Для этого и нужно делать это пятно отдельным слоем.
При движении игрока его нужно будет двигать, обеспечивая таким образом нужный эффект. Возможно, более рационально будет применять Environment mapping, тут тебе знатоки .b3d-формата подскажут.
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab. We LOVE you. We MADE you.
|