×
Menu

NiBltSource - notes

 
Теория, что собственно за зверь такой.
 
Примечание (С) взято из "интернету энтого"(С).
Спрайты - действительно родились на старых игровых компьютерах, на PC изначально аппаратной поддержки не было,
только программная эмуляция. Спрайт - это картинка в памяти, там она хранится в виде макаронины, а
на экране в виде квадратика, если спрайт регулярный, и произвольной формы, если спрайт нерегулярный
(с прозрачными областями).
Спрайтами у нас занимается DirectDraw.
 
Сейчас модно стало рисовать всё в 3D - Direct3D может нарисовать точно такую же картинку, как и DirectDraw, но уже применяя рендеринг, а не битовые переносы.
Это даёт огромные преимущества перед BitBlt() из DirectDraw, но нужен 3D-ускоритель.
Зато можно прозрачность применять, поворот, мультитекстурирование, масштабировать и всё это со сглаживанием изображения.
До сих пор применяется термин спрайт, хотя он уже давно не спрайт, а полигон с натянутой на него текстурой, а это САВСЕМ ДРУГАЯ вещь!
 
https://en.wikipedia.org/wiki/Bit_blit
Bit blit (also written BITBLT, BIT BLT, BitBLT, Bit BLT, Bit Blt etc., which stands for bit block transfer) is a data operation commonly used in computer graphics in which several bitmaps are combined into one using a boolean function.
The operation involves at least two bitmaps, one source and destination, possibly a third that is often called the "mask" and sometimes a fourth used to create a stencil. The pixels of each are combined bitwise according to the specified raster operation (ROP) and the result is then written to the destination. The ROP is essentially a boolean formula. The most obvious ROP overwrites the destination with the source. Other ROPs may involve AND, OR, XOR, and NOT operations. The Commodore Amiga's graphics chipset (and others) could combine three source bitmaps using any of the 256 possible boolean functions with three inputs.
Modern graphics software has almost completely replaced bitwise operations with more general mathematical operations used for effects such as alpha compositing. This is because bitwise operations on color displays do not usually produce results that resemble the physical combination of lights or inks. Some software still uses XOR to draw interactive highlight rectangles or region borders; when this is done to color images, the unusual resulting colors are easily seen.
 
https://ru.qwe.wiki/wiki/Bit_blit
Это транслит версия.
Бито Blit (также написано BitBlt , БИТО BLT , BitBlt , Бито BLT , Bit BLT и т.д., которая выступает за битовый блок передачи ) является операцией данных , обычно используемой в компьютерной графике , в котором несколько растровых изображениях объединены в одну , используя булеву функцию .
Операция включает в себя по меньшей мере два растровых изображений, один источник и пункт назначения, возможно, третий , который часто называют «маской» , а иногда и четвертый используется для создания трафарета . Пиксели каждого объединяются побитовыми в соответствии с указанной операцией растры (ROP) , и результат затем записываются в пункт назначения. ROP по существу является булевой формулой. Наиболее очевидный ROP переписывает назначения с источником. Другие УОП могут включать в себя и , OR , XOR и NOT операции. Коммодор Амигу «ы графический чипсет (и другие) мог бы объединить три исходные растровые изображения с использованием любого из 256 возможных булевых функций с тремя входами.
Современное графическое программное обеспечение практически полностью вытеснило битовые операции с более общими математическими операциями , используемыми для эффектов , таких как альфа - композитинг . Это происходит потому , что битовые операции на цветных дисплеях обычно не дают результаты , которые напоминают физическое сочетание огней или чернил. Некоторые программы по- прежнему использует XOR рисовать интерактивные выделить прямоугольники или область границы; когда это делается для цветных изображений, необычные результирующие цвета легко увидеть.
 
https://wikipedia.tel/%D0%91%D0%BB%D0%B8%D1%82%D1%82%D0%B5%D1%80
 
Блиттеры в современных компьютерах
Все современные графические процессоры обладают функциями, присущими возможностям блиттера, однако доступ к ним скрыт и не рекомендуется, особенно при работе с трёхмерной графикой.
Современные API (Direct3D и OpenGL) заставляют описывать весь кадр, а затем отрисовывать его с нуля. Перемещение данных непосредственно в кадровом буфере менее эффективно и может рассматриваться как плохой подход в программировании. Современные устройства уже обладают набором функций для обработки изображений (вращение, изменение масштаба и прозрачности), которые легко доступны через API. Использование текстур при отрисовке полигонов делают блиттеры устаревшими. Однако данная технология нашла своё применение в современных графических подсистемах с низким энергопотреблением.
 
В технологии блиттера количество объектов ограничено только производительностью самого блиттера и объёмом используемой им памяти. С ростом производительности компьютеров это преимущество перечеркнуло плюсы использования спрайтов, и в конце концов системы обработки спрайтов трансформировались в блиттеры. Тем не менее, почти все компьютеры с появлением манипуляторов типа «мышь» умеют выводить как минимум один аппаратный спрайт — собственно курсор мыши.
 

Примечание.
Является контейнером, для указания ссылки на обычную, либо упакованную текстуру.
Т.е. является заголовком файла, по аналогии с NiSequenceStreamHelper.
Но может быть использован и качестве обычной текстуры.
Т.е. прописан как niSourceTexture в niTexturingProperty.
Хотя нифскоп выдает массу страшных предупреждений.
 
Примечание.
Объект не должно использовать в качестве потомка обычной ноды.
Т.е. нельзя указывать в Children какой-либо ноды.
Это может приводить к ошибкам игры.
А нифскоп пишет предупреждения.
Только заголовком файла, или на правах текстуры в слоте текстурных свойств.
 
Примечание.
Проведенные тесты показали сомнительность возможности использования этого объекта непосредственно в ниф файлах.
Либо проводились "не правильные" тесты.
Т.е. объект создается в ниф файлах корректно, никаких ошибок не возникает, но в игре - чистая поверхность.
Вероятно, локальное использование, из файлов, не предполагается.
Т.е. объект создается и вызывается движком непосредственно в сеансе игры.
На это же намекает и справка к Gamebryo.
Возможно, этот объект можно (будет) использовать по средством MWSE 2.X.
 
Примечание.
Примеров использования, в локальных ниф файлах, других игр, найти не удалось.
Что в целом логично, если учесть, что блиттер должен создаваться динамически.
 
Примечание.
Есть мнение, что этот объект, мог быть ранней версией niScreenTexture.
Такая запись появилась в поздних версиях движка.
Где вместе с niScreenPolygon отвечает за динамическое создание разного рода меню.
Или эффектов от взрывов (тоже).
 
Примечание.
Проводились следующие тесты:
- NiBlt в качестве корня файла с указанием на текстуру (или PixelData).
- указывался в niTexturesProperties в качестве обычной текстуры.
Результат:
- отрицательный. Чистая белая поверхность шейпа.
- niBlt вне корня файла.
- никаких ошибок и никакого результата.
- NiBlt в качестве текстуры в ниф файле, т.е. создана запись и указана в  niTexturesProperties.
- вылет игры.
Также проводились и иные тесты.
Где, niBlt получал различные настройки в Nif.xml файле, так и по разному прописывался в Ниф файлах.
Во все случаях, результат был отрицательным.
Либо вылеты игры, либо модель загружалась без каких либо сообщение об ошибках, но и без заметных изменений.
 
NiBlt вне корня файла, по видимости может работать!
Т.е. niBlt с неправильными настройками приводил к ошибкам, но с описанными выше настройками, ошибок не возникало.
Что и наводит на мысли о том, что это должен быть Корень файла, по аналогии с NiSequenceStreamHelper.
Впрочем, как этот объект работал во времена Netimmerse 4.0 вопрос открытый.
Отчего приходится оставлять допущение, что niBlt все таки сможет быть использован и в локальных ниф файлах.
Однако, вероятность этого, (по видимости) не велика.
 
Остается надеяться на MWSE и творческий порыв (кого-нибудь) кто захочет проверить этот элемент в действии.
 
Справка к Gamebryo показывает использование этого объекта в качестве сплеш скрина от пушки в одной из демо игр.

Выдержка из оригинальной справки. NDL Gamebryo 1.1
NiBltSource represents source image data objects that are to be Blt-ed (Block Transferred) to the renderer backbuffer. Blts are used for some basic rectangular, 2D opaque interface elements, as well as "splash" and application loading screens.
Note that unlike previous versions of Gamebryo, renderers are not required to support transparent (or "chromakeyed") Blts. Also, NiBltSource objects represent static source data, and the pixel data cannot be modified once the objects are created.
 
NiBltSource objects support platform-specific data loading.  This capability enables applications to place pre-formatted image files for multiple platforms in different subdirectories and select the desired platform at runtime.
 
For example, an application that will run on D3D and PS2 might place a standard-format "MyBlt.NIF" image file in the root directory, and then place a PS2-formatted "MyBlt.NIF" image file in a "PS2" subdirectory.  Having done this step, under normal circumstances, calling ("MyBlt.NIF") will load the standard-format file.