## MESHTOOL/OGFVIEWER README, FAQ [201306xx]

1. Что это?

2. Что умеем?

3. Комплектация пакета

4. Отличия, особенности версий ogfviewer

5. Управление клавиатурой, мышью

6. Предварительные действия

7. Какие форматы текстур умеем

8. Как (где) ищется конфигурация ogfviewer.cfg

9. Как ищутся текстуры

10. Как ассоциировать файлы с ogfviewer?

11. Как убрать ассоциацию c ogfviewer?

12. Как смотреть уровни

13. Как конвертировать ogf и omf-анимации в smd

14. Методичка по консольным утилитам

15. История изменений

16. Планы

17. Использованные материалы и благодарности

1. Что это?

   MESHTOOL/OGFVIEWER - кроссплатформенный комплект утилит для просмотра, конвертации разнообразных 3d-моделей и уровней.

   Использовались 3D интерфейсы, API: Microsoft DirectX, OpenGL (Microsoft, SGI, IBM, Mesa3D, Scitech SNAP, glut, libtk, glaux), allegro, Irrlicht.

   Cистемные требования:

   - Платформа Microsoft Windows: Windows 9x/NT/2000/XP/2003/Vista/2008/7/8/2012 [x86/x64] (а также Linux+Wine :) )

     Возможна работа без аппаратной 3D-акселерации. ( MESHTOOL cовместим с TransGaming SwiftShader, Realtech VR DXGL Wrapper, AltOpenGL, TechLand Soft OpenGL, mesaFX OpenGL. )

   - Платформа IBM OS/2: OS/2 Warp 3, Warp 4, eComStation.

     Поддерживается OpenGL: IBM 1.0, IBM 1.1, WarpMesaGL 1.4, SNAPGL 1.5

   - Платформа DOS: DOS 3.3 и старше.

     Поддерживается OpenGL: SNAPGL 1.5, allegro

2. Что умеем?

   Открываем:

   - X-Ray ogf v4 (builds 2xxx-3xxx), возможен экспорт анимаций в smd
   - X-Ray ogf v3 (builds 1xxx) - частично
   - X-Ray object v3 (builds 1xxx), только статика
   - X-Ray object v4 (builds 2xxx-3xxx), только статика
   - X-Ray level (builds 2xxx-3xxx), через ogf-конвертацию (parse_lev) или через object-конвертацию (xray_re converter)
   - Orion engine v1 MSH - Stalin Subway, Red Veil, Метро-2, Метро-2:Смерть вождя
   - Autodesk 3DStudio MAX 3DS
   - DS2 Engine *.ds2md - You Are Empty, только статика
   - 4A Games Engine *.model, *.mesh - Metro 2033, Metro Last Light
   - DirectDraw surface *.dds - картинка на плоскость 2x2 метра.

   Форматы для экспорта:

   - Wavefront Object (*.OBJ)
   - Valve Software HalfLife (*.SMD)
   - Ascii Scene Export (*.ASE)
   - Autodesk 3dsMax (*.3DS)
   - LightWave 3D (*.LWO) - в разработке
   - StereoLitho (*.STL)
   - Collada XML (*.DAE)
   - MilkShape3D (*.MS3D)
   - X-Ray SDK OGF (*.OGF)

   Конвертация:

   - parse_lev: level+level.geom+level.cform -> ogf
   - ogfviewer(gui), meshconv(console): ogf, object, msh, 3ds, ds2md, model, mesh -> obj, ase, smd, 3ds, stl, ms3d, ogf (без анимаций)
   - ogf2smda: ogf,ogf+omf -> smd(reference), smd(reference+separate animations)
   - obj2ogf: obj -> ogf
   - ogf2obj: ogf -> obj

   Обратите внимание, что в OGFViewer-е подразумевается что все координаты моделей заданы в метрах. Для моделей Orion engine v1 используется масштабирование, т.к. они сделаны в сантиметрах.

3. Комплектация пакета Microsoft Windows, IBM OS/2, DOS32:

   - MESHTOOL\WIN32\GL_MS - Версии для Microsoft OpenGL, x86
   - MESHTOOL\WIN32\GL_SGI - Версии для SGI/MMX OpenGL, x86
   - MESHTOOL\WIN32\SNAP - Версии для Windows SNAPGL, x86
   - MESHTOOL\WIN64\GL_MS - Версии для Microsoft OpenGL, x64
   - MESHTOOL\IA64\GL_MS - Версии для Microsoft OpenGL, ia64
   - MESHTOOL\OS2\GL10 - Версии для IBM OpenGL 1.0, OS/2
   - MESHTOOL\OS2\GL11 - Версии для IBM OpenGL 1.1 beta, OS/2
   - MESHTOOL\OS2\WMGL - Версии для WarpMesaGL 1.4, OS/2
   - MESHTOOL\OS2\SNAP - Версии для SnapGL 1.5, OS/2
     1. OGFViewer.exe - Базовая GUI версия (для моделей).
     2. OGFViewerA.exe - Альтернативная GUI версия (для уровней).
     3. OGFFscr.exe - Базовая wgl полноэкранная версия (для моделей) *.
     4. OGFFscrA.exe - Альтернативная wgl полноэкранная версия (для уровней) *.
     5. OGF_GLUT.exe - Базовая GLUT версия (для моделей) *.
     6. OGF_GLUTA.exe - Альтернативная GLUT версия (для уровней) *.
     7. ogf_tk.exe - Базовая LIBTK версия (для моделей) *.
     8. ogf_tka.exe - Альтернативная LIBTK версия (для уровней) *.
     9. ogf_os2.exe - Базовая pgl версия (для моделей) *.
     10. ogf_os2a.exe - Альтернативная pgl версия (для уровней) *.
     11. ogf_cons.exe - Базовая LIBAUX версия (для моделей) *.
     12. ogf_consa.exe - Альтернативная LIBAUX версия (для уровней) *.
     13. ogf_snap.exe - Базовая LIBAUX версия (для моделей) *.
     14. ogf_snapa.exe - Альтернативная LIBAUX версия (для уровней) *.
   - MESHTOOL\WIN32\DX8_MS - Версии для Microsoft DirectX8, x86
   - MESHTOOL\WIN32\DX9_MS - Версии для Microsoft DirectX9, x86
   - MESHTOOL\WIN64\DX9_MS - Версии для Microsoft DirectX9, x64
     1. OGFViewer_DX.exe - Базовая GUI версия (для моделей).
     2. OGFViewerr_DXA.exe - Альтернативная GUI версия (для уровней).
     3. OGF_DXA.exe - Альтернативная полноэкранная версия (для уровней) *.
     4. OGF_DXBA.exe - Альтернативная BUMP полноэкранная версия (для уровней) *.
     5. OGF_DXSA.exe - Альтернативная SM полноэкранная версия (для уровней) *.
   - MESHTOOL\WIN32\ALLEGRO - Версии для allegro library, x86 *
     1. OGFConsA.exe - Базовая версия (для моделей).
     2. OGFConsAW.exe - Базовая версия (для моделей).
     3. OGFConsAF.exe - Базовая FIXEDMATH версия (для моделей).
     4. OGFConsAFW.exe - Базовая FIXEDMATH версия (для моделей).
   - MESHTOOL\DOS32 - Версии для allegro, x86, DOS32 *
   - MESHTOOL\WIN32\CONSOLE - Консольные утилиты, x86 *
     1. dx7capsG.exe - табло памяти DirectX.
     2. descale.exe - пропорционально уменьшает текстуры.
     3. glxinfo.exe - системная информация, MS OpenGL версия.
     4. glxinfo_sgi.exe - системная информация, SGI/MMX OpenGL версия.
     5. Make_box.exe - создает "коробочный" ландшафт для бенчмарков.
     6. Make_box2.exe - создает "коробочный" ландшафт для occlusion, dot3 bump тестов.
     7. Make_Ogf.exe - создает псевдослучайную OGF-модель.
     8. MeshConv.exe - конвертер моделей в 3DS формат.
     9. OBJ2OGF.exe - конвертер WAVEFRONT OBJ-моделей в Xray OGF формат.
     10. OGF2OBJ.exe - конвертер Xray OGF-моделей в WAVEFRONT OBJ формат.
     11. OGF2SMDa.exe - конвертер Xray OGF-моделей/анимаций в SMD формат.
     12. Parse_203.exe - конвертер 4A Engine уровней в OGF формат.
     13. Parse_Lev.exe - конвертер Xray уровней в OGF формат.
     14. Parse_Or1.exe - парсер orion engine v1 моделей.
     15. Parse_Obj.exe - парсер Xray object-моделей.
     16. Parse_Ogf.exe - парсер Xray ogf-моделей.
     17. suntest.exe - расчет освещения.
   - MESHTOOL\WIN32\PLUGINS - Импорт плагины для Autodesk 3DS MAX, x86
   - MESHTOOL\WIN64\PLUGINS - Импорт плагины для Autodesk 3DS MAX, x64

   * Запуск из командной строки, Far Manager, File Commander.

       MESHTOOL\REF\ORIONV1.TXT - Orion engine v1 MSH format datasheet
       MESHTOOL\REF\OGF3.H - xray ogf v.3 datasheet
       MESHTOOL\REF\OGF4.H - xray ogf v.4 datasheet
       MESHTOOL\REF\OBJECT.H - xray object datasheet
       MESHTOOL\SAMPLES - каталог с примерами
       MESHTOOL\REG\ - ветки реестра для ассоциаций (Windows)
       MESHTOOL\SKY\ - текстуры неба для ALT-версии (текстуры sky?.dds положить в gamedata\textures\sky)
       MESHTOOL\soft_gl.7z - Mesa3D OpenGL 2.1 library v6.5.2, v7.3 (software OpenGL emulation)
       MESHTOOL\soft_dx.7z - Microsoft Software DirectX rasterizer library v8.x (software DirectX emulation)
       MESHTOOL\READMEOS2.HTM - FAQ & README for OS/2 (HTML)
       MESHTOOL\FAQ.HTM - FAQ & README (HTML)

4. Отличия, особенности версий ogfviewer

   1. Для всех версий:

      Существует ограничение на количество индексов вершин до 65535 включительно т.к. они хранятся в unsigned short формате.

      Существует визуальные проблемы с работой программы при включенном Windows Aero (desktop composition). Варианты решения - временно переключиться в классическую схему оформления или остановить службу Темы (c правами администратора):

      - для английской версии: net stop Themes
      - для русской версии: net stop Темы

   2. Базовая:

      Вращается и двигается модель относительно центра координат. Вариант для просмотра отдельных моделей. Умеет VBO (OpenGL). Включен мипмэппинг и фильтрация текстур. Использование буфера VBO (OpenGL) имеет "обратную сторону" - при его переполнении эффективность от VBO пропадает.

   3. Альтернативная:

      Вращается и двигается свободная камера. Вариант для просмотра уровней и крупных объектов. Вместо скайбоксов используется туман. Включена DXT-компрессия (OpenGL), фильтрация текстур.

   4. На движке SGI OpenGL (Windows x86):

      OpenGL движок, программная его часть оптимизирована под инструкции MMX (Pentium и старше). Немного быстрее, чем движок MS OpenGL.

   5. Программный режим (OpenGL):

      MS OpenGL (Windows): Если при запуске идут сообщения об ошибках - положите в каталог программы opengl32.dll из soft_gl.7z.

      SGI OpenGL (Windows): Если при запуске идут сообщения об ошибках - отключите видеоакселерацию в панели управления.

      или впишите, импортируйте эту строчку в реестр, значение = 00000001:

          REGEDIT4
          [HKEY_LOCAL_MACHINE\SOFTWARE\Silicon Graphics\OpenGL]
          ;"OverrideDispatch"=dword:00000000 ; default (use OpenGL for Windows unless hardware accelerated)
          "OverrideDispatch"=dword:00000001 ; force use of OpenGL for Windows
          ;"OverrideDispatch"=dword:00000002 ; force use of Microsoft's OpenGL Implementation

   6. Программный режим (DirectX):

      Если при запуске программы она показывает пустой черный экран - положите в каталог WINDOWS\SYSTEM32

      - DirectX 8 - d3dref8.dll из soft_dx.7z (или DirectX 8.x SDK).
      - DirectX 9 (XP/2003) - d3dref9.dll, rgb9rast_1.dll, rgb9rast_2.dll из soft_dx.7z (или DirectX 9.x SDK).
      - DirectX 9 (Vista/2008/7/8/2012) - rgb9rast.dll - поставляется в комплекте, обновление не требуется.

      Если при запуске программы программы она тормозит или глючит - положите в каталог программы d3d8.dll и d3d9.dll из SwiftShader. На вопрос "Use software renderer?" ответить "No".

5. Управление клавиатурой, мышью

   Общие

   - Y, < * > на цифровой клавиатуре меняет цвет фона
   - < / > на цифровой клавиатуре меняет гамма-коррекцию
   - TAB, SPACE = режим просмотра wireframe / color / texture
   - N = отсечение объектов в радиусе обзора в(ы)кл
   - F1, G - сетка, небо, оси в(ы)кл
   - F4, L = свет, фары, лампы в(ы)кл
   - F5, F = меняет FOV (field of view) +5
   - F7, 7 = шаг движения * 4
   - F8, 8 = шаг движения / 4
   - F9 = режим фильтрации текстур
   - F11 = полный экран в(ы)кл
   - I = информация о 3D-рендерере
   - Z = листание в начало
   - X = листание вперед
   - C = листание назад
   - V = листание в конец
   - 3, 7, < - > на цифровой клавиатуре = время - 1 час
   - 4, 8, < + > на цифровой клавиатуре = время + 1 час
   - 5 = уменьшает aspect ratio
   - 6 = увеличивает aspect ratio
   - 9 = сброс времени 06:00 <-> 18:00
   - 0 = сброс времени на 12:00

   Базовая GUI-версия (ogfviewer*.exe)

   - INSERT, DELETE, A, D = смещение по оси X
   - HOME, END, W, S = смещение по оси Z
   - PGUP, PGDOWN = смещение по оси Y
   - стрелки = вращение по осям X/Y на 1 градус
   - SHIFT, CONTROL = вращение по оси Z на 1 градус
   - < + >, < - > на цифровой клавиатуре = zoom in/out
   - BACKSPACE = сброс координат
   - M = выгрузка статистики в object.log
   - Ctrl+N = очистить все
   - F2, Ctrl+S = сохранить как
   - F3, Ctrl+O = открыть
   - F12 = центрирует модель
   - движение с нажатой левой кнопкой = вращение по осям X/Y
   - движение вверх/вниз с нажатой правой кнопкой = zoom in/out
   - движение с нажатой cредней кнопкой (колесиком) = смещение по осям X/Y
   - вращение колесика = zoom in/out

   Альтернативная GUI-версия (ogfviewer*.exe,ogffscr.exe)

   - HOME = поворот камеры вверх на 5 градусов
   - END = поворот камеры вниз на 5 градусов
   - DELETE = движение камеры влево
   - PGDOWN = движение камеры вправо
   - стрелка влево, A = поворот камеры влево на 5 градусов
   - стрелка вправо, D = поворот камеры вправо на 5 градусов
   - стрелка вверх, W = движение камеры вперед
   - стрелка вниз, S = движение камеры назад
   - SHIFT = движение камеры вверх
   - CONTROL = движение камеры вниз
   - BACKSPACE = сброс координат
   - M = выгрузка статистики в object.log
   - Ctrl+N = очистить все
   - F2, Ctrl+S = сохранить как
   - F3, Ctrl+O = открыть
   - F6 = "качество" картинки draft/release
   - F12 = помещает камеру в центр модели
   - движение с нажатой левой кнопкой = поворот камеры влево/вправо, вверх/вниз
   - движение вверх/вниз с нажатой правой кнопкой = движение камеры вперед/назад
   - движение с нажатой cредней кнопкой (колесиком) = движение камеры вперед/назад, влево/вправо
   - вращение колесика = движение камеры вперед/назад

   Базовая Console-версия (ogf_glut.exe)

   - A, D = смещение по оси X
   - HOME, END, W, S = смещение по оси Z
   - PGUP, PGDOWN = смещение по оси Y
   - стрелки = вращение по осям X/Y на 1 градус
   - Z, X = вращение по оси Z на 1 градус
   - < + >, < - >, C, V на цифровой клавиатуре = zoom in/out
   - BACKSPACE, E, F10 = сброс координат
   - G - сетка, небо, оси в(ы)кл
   - F1, 1 = "качество" картинки draft
   - F2, 2 = "качество" картинки release
   - F9, M = режим фильтрации текстур
   - F12 = центрирует модель
   - I = информация о 3D-рендерере на экран (в OS/2 - пишет в gldump.log)
   - T = выгрузка статистики в object.log
   - движение с нажатой левой кнопкой = вращение по осям X/Y
   - движение вверх/вниз с нажатой правой кнопкой = zoom in/out
   - движение с нажатой cредней кнопкой (колесиком) = смещение по осям X/Y
   - вращение колесика = zoom in/out
   - Q = выход

   Альтернативная Console-версия (ogf_gluta?.exe)

   - HOME, C = поворот камеры вверх на 5 градусов
   - END, V = поворот камеры вниз на 5 градусов
   - Z = движение камеры влево
   - X = движение камеры вправо
   - стрелка влево, A = поворот камеры влево на 5 градусов
   - стрелка вправо, D = поворот камеры вправо на 5 градусов
   - стрелка вверх, W = движение камеры вперед
   - стрелка вниз, S = движение камеры назад
   - PGUP, O = движение камеры вверх
   - PGDOWN, P = движение камеры вниз
   - < * >, Y = меняет цвет фона
   - BACKSPACE, E, F10 = сброс координат
   - F1, 1 = "качество" картинки draft
   - F2, 2 = "качество" картинки release
   - F5, F = меняет FOV (field of view)
   - F12 = помещает камеру в центр модели
   - I = информация о 3D-рендерере на экран (в OS/2 - пишет в gldump.log)
   - T = выгрузка статистики в object.log
   - движение с нажатой левой кнопкой = поворот камеры влево/вправо, вверх/вниз
   - движение вверх/вниз с нажатой cредней кнопкой = движение камеры вперед/назад
   - движение с нажатой правой кнопкой (колесиком) = движение камеры вперед/назад, влево/вправо
   - вращение колесика = движение камеры вперед/назад
   - Q = выход

   Базовая OGF_DX-версия (ogf_dx?.exe)

   - стрелки и мышь = движение
   - F2 - меняет видеорежим, рендерер и проч.
   - O, P, K - меняет сглаживание
   - Y = "погода": типовой, нейтральный, красный, оранжевый или "лунный" свет
   - < + > на цифровой клавиатуре = время + 15 мин
   - < - > на цифровой клавиатуре = время - 15 мин
   - < * > на цифровой клавиатуре = меняет скайбокс (sky_hdr_test_cube, sky_?_cube (? = 0..25), ...)
   - F11 = помещает камеру в 0.0.0
   - F12 = центрирует модель

   Альтернативная OGF_DX-версия (ogf_dx?a.exe)

   - стрелки, PGUP, PGDOWN, Q, W, E, A, S, D и мышь = движение
   - HOME = сброс камеры
   - F2 - меняет видеорежим, рендерер и проч.
   - O, P, K - меняет сглаживание
   - Y = "погода": типовой, нейтральный, красный, оранжевый или "лунный" свет
   - T = свет от фонарика в(ы)кл.
   - R = Обычный(FFP) -> dot3bump mul -> dot3bump add render.
   - < + > на цифровой клавиатуре = время + 15 мин
   - < - > на цифровой клавиатуре = время - 15 мин
   - < * > на цифровой клавиатуре = меняет скайбокс (sky_hdr_test_cube, sky_?_cube (? = 0..25), ...)
   - F11 = помещает камеру в 0.0.0
   - F12 = помещает камеру в центр модели

6. Предварительные действия

   Распаковываем ресурсы игры:

   Используя converter.exe из xray_re_tools (xray.codeplex.com):

       converter.exe -unpack -2215 gamedata.db0
       converter.exe -unpack -2945 gamedata.db0
       converter.exe -unpack -2947ru gamedata.db0
       converter.exe -unpack -2947ww gamedata.db0
       converter.exe -unpack -xdb gamedata.xdb

   Ключи после -unpack позволяют указать тип архива с игровым контентом.

   В результате имеем:

   - модели gamedata\meshes
   - уровни gamedata\levels
   - текстуры gamedata\textures

   Если просмотр моделей с текстурами нам необходим, в ogfviewer.cfg записывем путь к текстурам. Если игра лежит у нас в C:\GSC\STALKER, то в в ogfviewer.cfg пишем:

       C:\GSC\STALKER\gamedata\textures\

   Возможен запуск нескольких копий ogfviewer одновременно.

7. Какие форматы текстур умеем

   - Windows OpenGL: BMP/DIB, DDS, JPG, PNG, PPM, TGA, TIF
   - OS/2, DOS OpenGL: BMP/DIB, DDS, PPM, TGA
   - Microsoft DirectX: BMP/DIB, DDS, JPG, PNG, PPM, TGA
   - allegro: BMP/DIB, LBM, PCX, TGA

8. Как (где) ищется конфигурация ogfviewer.cfg

   1. В каталоге откуда запустили
   2. В каталоге где лежит ogfviewer.exe

9. Как ищутся текстуры

   - При отсутствии ogfviewer.cfg - gamedata\textures
   - Если есть ogfviewer.cfg - пути по тексту, разделенные \0

   Размер ogfviewer.cfg - 255 символов максимум.
   OpenGL: Если размер текстуры для объекта превышает допустимый, то он масштабируется до максимально допустимого размера.
   Если в итоге указанная текстура для объекта не находится, то в drawmode #2 объект с данной текстурой не отображается.

10. Как ассоциировать файлы с ogfviewer?

    Требуются права администратора!

    редактировать REG\instreg.txt, исправить там путь к файлу.

    затем:

        regedit instreg.txt

11. Как убрать ассоциацию c ogfviewer?

    Требуются права администратора!

    затем:

        regedit delreg.txt

12. Как смотреть уровни

    Предположим, что имя нашего уровня - testers_mp_railroad

    - Первый вариант - через ogf-экспорт:

      Для конвертации используем parse_lev.exe.

      Из gamedata\levels\testers_mp_railroad запустить:

          parse_lev 0 testers_mp_railroad.ogf

      Скопировать террейны:

          gamedata\levels\testers_mp_railroad\terrain\*.dds -> gamedata\textures\terrain\

      Полученный файл testers_mp_railroad.ogf открывать любой т.н. альтернативной версией, например:

          WIN\GUI\ALT\ogfviewer.exe
          WIN\GUI\ALT\ogfviewer_sgi.exe
          WIN\GUI\ALT\ogfviewer_dx.exe

    - Второй вариант - через object-экспорт:

      Для конвертации используем converter.exe из xray_re_tools (xray.codeplex.com).

      При данном виде конвертации - деревья, кусты, техника, некоторые прочие объекты - не переносятся.

      Cкопировать террейны:

          gamedata\levels\name\terrain\*.dds -> gamedata\textures\terrain\

      Редактировать converter.ini, прописать там пути к папкам с распакованными ресурсами игры.

      В той же папке где лежит gamedata\ создать rawdata\objects\levels

      Запускаем из папки, где лежат converter.exe, converter.ini:

          converter.exe -level testers_mp_railroad -out testers_mp_railroad -mode maya

      Полученный файл testers_mp_railroad.object открывать любой т.н. альтернативной версией, например:

          WIN\GUI\ALT\ogfviewer.exe
          WIN\GUI\ALT\ogfviewer_sgi.exe
          WIN\GUI\ALT\ogfviewer_dx.exe

    Для открытия крупных уровней вроде marsh_bench, pripyat - необходимо много оперативной памяти! Рекомендуется при этом закрыть ВСЕ прочие запущенные программы.

13. Как конвертировать ogf и omf-анимации в smd

    Предположим, что имя нашей модели - сat.ogf

    Если к ней есть анимация cat_animation.omf, объединяем их:

        copy /b cat.ogf + cat_animation.omf cat_full.ogf
        ogf2smda.exe cat_full.ogf

    Иначе - пропускаем этот шаг и делаем:

        ogf2smda.exe cat.ogf

    В итоге имеем каталог SMD, там:

    SMD\reference.smd - базовая, остальные - отдельные анимации.

    Далее, используя плагин SMDImporter.mzp к Autodesk 3DStudio MAX, можно импортировать полученные SMD файлы.

14. Методичка по консольным утилитам.

    Утилита: dx7capsG
    Запуск: dx7capsG
    Результат: статистка памяти directx на экране

    Утилита: glxinfo
    Запуск: glxinfo.exe [ > parse.log ]
    Результат: показывает microsoft opengl info на экран, при указании parse.log пишется в файл

    Утилита: glxinfo_sgi
    Запуск: glxinfo_sgi.exe [ > parse.log ]
    Результат: показывает sgi opengl info на экран, при указании parse.log пишется в файл

    Утилита: meshconv
    Запуск: meshconv имя_модели.ext
    имя_модели.ext: xray ogf, object или orion msh
    Результат: конверсия в файл 'export.3ds' (3DStdio MAX 3ds файл)

    Утилита: obj2ogf
    Запуск: ogf2obj имя_модели.obj [ имя_модели.object ] [ > parse.log ]
    если имя_модели.obj опущено - показывает структурированный дамп содержимого модели на экран, при указании parse.log пишется в файл, иначе конверсия в имя_модели.ogf ( xray ogf формат )

    Утилита: ogf2obj
    Запуск: ogf2obj имя_модели.ogf [ имя_модели.obj ] [ > parse.log ]
    если имя_модели.obj опущено - показывает структурированный дамп содержимого модели на экран, при указании parse.log пишется в файл, иначе конверсия в имя_модели.obj ( wavefront obj формат )

    Утилита: ogf2smda
    Запуск: ogf2smd имя_модели.ext
    имя_модели.ext: xray ogf v4 ( составная модель, склеивается так: copy /b cat.ogf + cat_animation.omf )
    Результат: конверсия в каталог /smd анимаций (smd формат), reference.smd - базовая модель

    Утилита: parse_lev
    Запуск: parse_lev < режим > [ имя_уровня.ogf ] [ > parse.log ]
    Результат: конверсия уровня xray в имя_уровня.ogf ( xray ogf формат ).
    режим 0/1: с оптимизацией вертексов? - нет/да (включать не рекомендуется!)
    режим 0/2: пропускать lod-,prop_fake-объекты? - нет/да (включать не рекомендуется!)
    режим 0/4: пропускать лайтмапы? - да/нет (включать не рекомендуется!)
    режим 0/8: не конвертировать, только дамп? - нет/да
    режимы складываются.
    при указании parse.log пишется в файл.

    Утилита: parse_msh, parse_ogf, parse_obj
    Запуск: parse_msh (или parse_ogf, parse_obj) имя_модели.ext [ > parse.log ]
    Результат: показывает структурированный дамп содержимого модели на экран, при указании parse.log пишется в файл

    Утилита: make_ogf
    Запуск: make_ogf < к-во вертексов > < к-во индексов > < имя_модели.оgf >
    вертексы: от 3 до 2^32 (отсекается до кратного 3)
    индексы: от 3 до 65535 (отсекается до кратного 3)
    имя_модели.оgf: имя файла - приёмника
    Результат: создание "мусорной" псевдослучайной модели 2 x 2 метра для тестирования нагрузки на движок и видеокарту.

    Утилита: parse_203
    Запуск: parse_lev < режим > [ имя_уровня.ogf ] [ > parse.log ]
    Результат: конверсия уровня 4A Engine Metro 2033 в имя_уровня.ogf ( xray ogf формат ).
    режим 0/1: с оптимизацией вертексов? - нет/да (включать не рекомендуется!)
    режим 0/2: пропускать lod-,prop_fake-объекты? - нет/да (включать не рекомендуется!)
    режим 0/4: пропускать лайтмапы? - да/нет (включать не рекомендуется!)
    режим 0/8: не конвертировать, только дамп? - нет/да
    режимы складываются.
    при указании parse.log пишется в файл.

    Утилита: lzhuf
    Запуск: lzhuf
    Результат: распаковывает уровни 22xx, 19xx из level в level.unp

    Утилита: make_box
    Запуск: make_box < к-во кубов в стороне > < имя_модели.оgf >
    Результат: создает "коробочный ландшафт" x * x * x для окклюжен тестирования, бенчмарков

    Утилита: parse_203
    Запуск: parse_lev < режим > [ имя_уровня.ogf ] [ > parse.log ]
    Результат: конверсия уровня 4A Engine Metro 2033 в имя_уровня.ogf ( xray ogf формат ).
    режим 0/1: с оптимизацией вертексов? - нет/да (включать не рекомендуется!)
    режим 0/2: пропускать lod-,prop_fake-объекты? - нет/да (включать не рекомендуется!)
    режим 0/4: пропускать лайтмапы? - да/нет (включать не рекомендуется!)
    режим 0/8: не конвертировать, только дамп? - нет/да
    режимы складываются.
    при указании parse.log пишется в файл.

    Утилита: make_box2
    Запуск: make_box2 < к-во кубов > < имя_модели.оgf > (к-во кубов <=7!!!)
    Результат: создает "коробочный ландшафт" для dot3, light тестирования

    Утилита: descale
    Запуск: descale
    Результат: пропорционально уменьшает dds-текстуры, лежащие в папке с descale.exe

    Утилита: suntest
    Запуск: suntest
    Результат: рассчитывает компненты освещения

    Утилита: surfconv
    Запуск: surfconf < srcfile.ext > [ destfile.ext ] [-flag1] [-flag2]
    Результат: конвертирует изображение средствами DirectX, с возможным преобразованием.
    srcfile.ext: исходный файл изображения
    destfile.ext: конечный файл изображения
    flag1: режимы конвертации, если опущено то сохраняется как есть
    -invrgb : ивертирует цветовые каналы (RGBA <-> BGRA)
    -invnrm : ивертирует порядок нормалей (RGBA <-> ABGR, Nxyzw <-> Nwzyx)
    flag2:
    -v : verbose - подробный вывод на экран.

    Все консольные утилиты удобнее запускать из Far Manager, File Commander (или cmd.exe) :)

15. История изменений

        Изменения (19.02.2010) :

        OGFViewer: Масштабирование не вызывает геометрических искажений
        OGFViewer: Оси x/y/z yвеличены до 5 единиц
        OGFViewer: Поддержка колесика мыши
        OGFViewer: Исправлена поддержка вложенных (CHILDREN) моделей (напр. wpn_gauss.ogf)
        OGFViewer: Сохранение в *.object
        OGFViewer: Исправлена совместимость с MESA3D OpenGL
        OGFViewer: Исправлены "косяки" с ориентацией тесктур (из-за nv_dds.obj)
        OGFViewer: Снято ограничение DXT-compressed DDS - поддержка ARB_texture_compression не актуальна
        OGF2obj: новая версия

        Изменения (21.02.2010) :

        OGFViewer: Исправлено падение программы при отмене открытия OGF-файла
        OGFViewer: Исправлена точность вращения по левой кнопке мыши
        OGFViewer: Исправлен глюк с "мерцающими" цветами осей и путей DDS
        OGFViewer: режим просмотра wireframe (сетка) / normal по ср.кн.м. (или колесику)

        Изменения (28.02.2010) :

        OGFViewer: Исправлено 8-bit/4-bit OpenGL render
        OGFViewer: Исправлена точность вращения
        OGFViewer: Добавлено управление с клавиатуры
        OGFViewer: Исправлена ошибка: не создавался ogfmodel.mtl
        OGFViewer: Шрифт для DDS: Lucida Console (Normal)
        OGFViewer: Коррекная конвертация "многотекстурных" моделей
        OGF2obj: Коррекная конвертация "многотекстурных" моделей

        Изменения (06.03.2010) :

        OGFViewer: Оптимизация ( удаление невидимых граней, glVertex3fv(), glDrawElements() )
        OGFViewer: Показываем "вменяемую" ошибку glTexImage2D()
        OGFViewer: Ограничение вращений -360.0 ... +360.0
        OGFViewer: Имя файла и версия программы в заголовке окна
        OGFViewer: Цветные подписи ( FPS, dds[?] )
        OGFViewer: Исправлена утечка памяти при загрузке текстур
        OGFViewer: 3 режима фигуры - wireframe, colored, textured
        OGFViewer: Поддержка командной строки, фикс на относительные пути
        OGFViewer: Файл реестра для ассоциации моделей с программой
        OGFViewer: Выбор пути к текстурам по клавише F5
        OGFViewer: При отсутствии OGFViewer.cfg путь по умолчанию - "textures\"
        OGFViewer: "Горячие" клавиши F3 - открыть, F2 - сохранить.

        Изменения (14.03.2010) :

        OGFViewer: Cетка 20x20 метров (как в X-Ray SDK ActorEditor), F1 - в(ы)кл
        OGFViewer: Новое освещение для colored-режима
        OGFViewer: Чтение моделей X-Ray object (частично)
        OGFViewer: Чтение моделей XRay ogf #0x0112 (экспорт-модель из X-Ray SDK)
        OGFViewer: Поддержка до 1000 материалов в модели (veh\niva, veh\mi-26)
        OGFViewer: Исправление управляющих клавиш и движения камеры (см. выше).
        OGFViewer: Поддержка текстур TGA (Targa)
        OGF2obj: Чтение моделей XRay ogf #0x0112 (экспорт-модель из X-Ray SDK)
        OGF2obj: Поддержка до 1000! материалов в модели (veh\niva, veh\mi-26)

        Изменения (21.03.2010) :

        OGFViewer: Свет F9 on/off, шаг движения F7 (*10), F8 (/10), F11 - OpenGL info
        OGFViewer: Считывание bounding box-ов (окр. прямоугольника)
        OGFViewer: Стандартизация форматов 3d векторов, небольшая оптимизация скорости загрузки (для уровней в *.object)
        OGFViewer: Увеличение materialcount до 100000 (для уровней в *.object)
        OGFViewer: Поддержка текстур RGB24 = 8/8/8
        OGFViewer: Поддержка прозрачных текстур (стёкла, фары и т.п., veh\niva)
        OGFViewer: Экспорт в Autodesk ASE, 3DS (только геометрия)
        OGFViewer: Исправлено - утечка при незакрытии файла
        OGFViewer: Импорт Orion engine v1 MSH (1 материал)
        OGFViewer: Исправлено - падение при экспорте object в obj,ase
        OGFViewer: ogfcons3 - тестовая console версия OGFViewer

        Изменения (28.03.2010) :

        OGFViewer: Экспорт в ASE теперь с текстурами
        OGFViewer: Microsoft Directx рендерер (рендерит быстрее GL :), но модели отражаются зеркально :( )
        OGFViewer: SGI GL рендерер (+ opengl.dll, glu.dll), немного быстрее MS GL :)
        OGFViewer: F12 центрирует модель по bounding box
        OGFViewer: в OGF моделях одинаковые текстуры не загружаются повторно

        Изменения (11.04.2010) :

        OGFViewer: Не работаем в 1/4/8-бит цвете (DirectX)
        OGFViewer: Выбор аппаратной/программной отрисовки (DirectX)
        OGFViewer: Теперь все модели ориентированы правильно (DirectX)
        OGFViewer: F4 - режим прозрачности
        OGFViewer: Уточнены коррдинатные системы (dx:x/y/z,gl:x/-y/z)
        OGFViewer: Msh модели теперь ориентированы правильно
        OGFViewer: Загрузка и сохранение в 3DS формат
        OGFViewer: Исправлены ошибки при загрузки 'огромных' объектов (уровни в object)
        OGFViewer: Рендерер на базе allegro gaming library (DOS32/WIN32)

        Изменения (23.04.2010) :

        OGFViewer: Сделано альтернативное управление (в OpenGL - с туманом)
        OGFViewer: Fov = 46.0f (как в S.T.A.L.K.E.R.)
        OGFViewer: Ускорение FPS в wireframe-режиме
        OGFViewer: Исправлены фиктивные ошибки загрузки текстур (OpenGL, MS/SGI)
        OGFViewer: Исправлен СNT-счётчик
        OGFViewer: "Правильное" освещение и "радуга" в colored-режиме (OpenGL)
        OGFViewer: Расчёт нормалей для 3DS/object
        OGFViewer: Оптимизация рендеринга - без задержек (glFlush/glFinish), VBO (OpenGL)
        OGFViewer: Многопроцессорность в рендерере (DirectX)
        OGFViewer: Исправлен перебор текстур в object-моделях (DirectX)
        OGFViewer: Не вылетаем с ошибкой при выходе из проги :) (DirectX)
        OGFViewer: Текущая версия требует наличия расширения GL_ARB_vertex_buffer_object (OpenGL)
        OGFViewer: Исправлено обработка сообщений палитры в 8-bpp (OpenGL, MS)
        OGFViewer: Приложена новая библиотека Mesa3D 7.3 (стандарт OpenGL 2.1)
        OGFViewer: Шрифт сообщений - "Verdana"

        Изменения (10.05.2010) :

        MeshConv: Исправлен экспорт моделей
        OGFViewer: CNT-cчетчик форматируется корректно (000xxx.00)
        OGFViewer: Исправлен расчёт нормалей, при отключенном свете они не нужны
        OGFViewer: Изменения состояний и свет считаем один раз
        OGFViewer: [ * ] на цифровой клавиатуре меняет цвет фона
        OGFViewer: [ / ] на цифровой клавиатуре меняет гамма-коррекцию
        OGFViewer: Дальность обзора - 300 метров
        OGFViewer: Туман - 100...300 метров (OpenGL)
        OGFViewer: Не запускаем glGetError() без необходимости (OpenGL)
        OGFViewer: Неточность при запуске glNewList() (OpenGL)
        OGFViewer: Поддержка света (DirectX)
        OGFViewer: Исправлен выбор пути для текстур
        OGFViewer: Исправлен расчёт текстурных координат для object
        OGFViewer: Корректный выход из программы при открытии "битых" object-файлов
        OGFViewer: Теперь умеем читать object-модели с костями (spesnaz_run.object)
        OGFViewer: Ускорена загрузка текстур у object моделей
        OGFViewer: Существенно ускорена загрузка текстур у Orion engine v1 моделей
        OGFViewer: Теперь умеем читать Orion engine v1 модели без привязанных текстур
        OGFViewer: Отключаем сглаживание (blending) для terrain-текстур
        OGFViewer: Для ускорения вращения/движения сцены сбрасываем настройки качества на минимум
        OGFViewer: Исправлено форматирование в выходном файле экспорта (ASE-формат)
        OGFViewer: В обычной версии временно включена поддержка VBO + mipmap-сглаживание (OpenGL)
        OGFViewer: В ALT-версии временно включено mipmap-сглаживание (OpenGL)

        Изменения (26.05.2010) :

        OGFViewer: Моделей с "встроенными" анимациями (cat.ogf) считываются без лишней геометрии
        OGFViewer: Экспорт в HalfLife SMD (cтатика + текстуры)
        OGFViewer: Корректно считываем блоки 0x1008, 0x1012 (object)
        OGFViewer: Скорректированы трансформации и вращение (DirectX)
        OGFViewer: Исправлено незакрытие ogf-файлов
        OGFViewer: Унифицировано управление (OpenGL <-> DirectX)
        OGFViewer: Новая документация (каталог \REF)
        OGFViewer: Cчитаем что везде красная ось - X, зеленая ось - Y, синяя ось - Z
        OGFСons: Убраны буквы осей X,Y,Z
        parse_lev: Новая утилита, анализирующая геометрию уровней
        parse_obj, parse_ogf, parse_msh: Утилиты, анализирующая структуру моделей
        OGF2SMDa: "воскрешен" экспорт OGF,OMF анимаций в HalfLife SMD (на базе OGF2SMD SRC 2.03)
        OGF2SMDa: Читаем все модели OGFv4 (2215, ТЧ, ЧН, ЗП)
        OGF2SMDa: Читаем OMF ('copy /b man.ogf + man_animation.omf man_full.ogf', затем 'OGF2SMDa man_full.ogf')
        OGF2SMDa: Для "беспозвоночных" моделей формируются фейковые кости
        OGF2SMDa: Модели и текстуры ориентированы правильно

        Изменения (25.07.2010) :

        OGFViewer: убраны лишние вызовы RenderScene(), txload()
        OGFViewer: Cоздаем координаты p,n,t однократно
        OGFViewer: Общая оптимизация утилитой Мicrosoft Prefast
        OGFViewer: Работает статусная строка
        OGFViewer: Балансировка альт. версии - работает DXT, но отключен мипмэппинг
        OGFViewer: Для скорости удаление невидимых линий включено, может вызывать глюки на уровнях
        OGFViewer: Опция использовать программный рендерер (OpenGL)
        OGFViewer: Инфо панель (F11) показывыет тип акселерации (OpenGL)
        OGFViewer: Более темный цвет материала, может ухудшаться освещение в colored-режиме (DirectX)
        OGFViewer: Текстуре воды (water*) не нужен блендинг (карта limansk)
        OGFViewer: Aвтомасштабирования текстур "вниз" для поддержки старых видеокарт (3Dfx, ATI Rage, Trident, S3)
        OGFViewer: Исправлены ошибки в программном редеринге 16bpp (MS OpenGL)
        OGFViewer: Не перерисовываем экран при нажатии < KPad / > "Гамма"
        OGFViewer: FOV меняется 45-60-75-90 (шаг 15), < KPad 5 >
        OGFViewer: Глубина обзора - 0.2/500.0 метров - базовая, 1.0/500.0 метров - альтернативная
        OGFViewer: Туман 100 - 500 метров (OpenGL)
        OGFViewer: Альфасмешивание в альт. версии (OpenGL)
        OGFViewer: Новые директивы компиляции USE_ANISO, NO_3DS, USE_GL10
        glxinfo: новая информационная утилита для OpenGL
        glxinfo: испралены глюки glxinfo на картах nVidiа
        parse_lev: исправленная версия, в перспективе войдет в состав парсера OGFViewer

        Изменения (15.08.2010) :

        parse_lev: Cчитывание level-ов (билды 2xxx, 3xxx), и конвертация их в ogf
        OGFViewer: Клавиша FOV - < F5 >
        OGFViewer: Глубина обзора - 0.2/500.0 метров - базовая, 0.2/1500.0 метров - альтернативная
        OGFViewer: В некоторых текстурах просвечивает фон заднего плана :(
        OGFViewer: Разбор шейдеров, материалов
        OGFViewer: Текстуры грузятся отдельно от модели, пригодится для анимаций
        OGFViewer: Текстурирование работает в OpenGL 1.0
        OGFViewer: Несколько путей до текстур в ogfviewer.cfg
        OGFViewer: Поддержка текстур PNG, BMP
        OGFViewer: Туман (DirectX, alt)
        OGFViewer: Клавиша < F9 > в colored-режиме в(ы)ключает освещение.
        OGFViewer: Клавиша < F9 > в textured-режиме в(ы)ключает фары, светильники, и проч.
        OGFViewer: Очередная бета DOS32-версии OGFViewer :)
        OGFViewer: Исправлены глюки с alphablend (DirectX)
        OGFViewer: Клавиша < F1 > показывает список материалов и шейдеров, в командной строке - статистика
        OGFViewer: В ALT-версия рисуется небо (текстуры sky?.dds положить в textures\sky)
        OGFViewer: ALT-версия значится в заголовке как 1.0.5@ (базовая без @)

        Изменения (27.08.2010) :

        OGFViewer: Правильная ориентация граней в cubemap-е неба, промо-версия (GL)
        OGFViewer: Клавиши < W >< A >< S >< D > - управление с клавиатуры
        OGFViewer: Ogfview.cfg - сначала ищем в каталоге программы, затем в каталоге запуска
        OGFViewer: Cетка перемещается вместе с моделью
        OGFViewer: Новый механизм удаления невидимых объектов в альт. версии (видимы только объекты перед наблюдателем на дистанции 150m)
        OGFViewer: Альфасмешивание включено всегда
        OGFViewer: Не переключаем мипмэппинг при движении сцены
        OGFViewer: Клавиша < F4 > теперь управляет освещением/фарами
        OGFViewer: Клавиша < F9 > переключает фильтрацию текстур
        OGFViewer: Рассчитываем bounding box и bounding sphere, radius для ogf, object
        OGFViewer: Не рисуем сцену после < F7 >, < F8 >, < F11 >
        OGFViewer: Автонормализация векторов в mode #1
        OGFViewer: Количество материалов ограничено до максимум 500
        OGFViewer: Количество объектов в модели ограничено до максимум 15000

        Изменения (13.11.2010) :

        OGFViewer: Skybox cubemap (DirectX, alt, Promo)
        OGFViewer: Корректное отсечение невидимых объектов на 150м (alt)
        OGFViewer: Исправлена медленная загрузка программы при отсутствии текстур
        OGFViewer: Сжатие/оптимизация линий в drawmode#0 быстрее
        OGFViewer: Не используем OpenGL glCallList() в OpenGL 1.0 (GL)
        OGFViewer: Отключаем drawmode#2 если disable_texturing=1 (DirectX)
        OGFViewer: Выложен подробный FAQ / README по OGFVIEWER
        OGFViewer: Исправлено падение на выходе (Allegro)
        OGFViewer: Новая версия библиотеки DevIL (OpenIL) 1.7.8, поддержка новых форматов (GL)
        OGFViewer: Общая оптимизация переменных
        OGFViewer: Корректное перемещение свободной камеры (alt)
        OGFViewer: Клавиша "N" отключает отсечение невидимых объектов на 150м (alt)
        OGFViewer: Увеличен радиус вращения с 1 до 5 углов (alt)
        OGFViewer: Клавиша "L" управляет светом, фарами
        OGFViewer: Клавиша "I" - информация о рендерере
        OGFViewer: Клавиша "F11" - полный экран
        OGFViewer: Клавиша "F6" - "качество" картинки
        OGFViewer: Расчет радиуса для ogfv3, object
        OGFViewer: Корректное отсечение прозрачных объектов в object-уровнях (alt)
        OGFViewer: Считываем всех IFF-секций (на потом)

        Изменения (26.12.2010) :

        [New features]
        OGFViewer: Единственный источник света в ALT-версии (drawmode #1)
        OGFViewer: Новое меню, кнопки (отдельно base/alt), MFC-иконка теперь видна
        OGFViewer: Не используется отсечение невидимых граней для прозрачных объектов
        OGFViewer: Опциональная поддержка single-buffering (GL)
        OGFViewer: Поддержка ogfv3 тип 0x00000112, формат AE/LE 1xxx
        OGFViewer: Начальная позиция камеры 0,-3(или 3),-10 - согласно GSC AE/LE (alt)
        OGFViewer: Дистанция отсечения base/alt ~150 м
        OGFViewer: Дистанция отсечения (alt+fog) alt версии 200 м
        OGFViewer: Дистанция отсечения (alt+sky) promo версии 1500 м
        OGFViewer: Поддержка 32,24 bpp ZBuffer (DirectX, alt)
        OGFViewer: ZBuffer info по клавише "I" (GL)
        OGFViewer: Клавиша "M" - дамп статистики в object.log
        OGFViewer: Переделан счетчик FPS/ms
        meshconv: Новая утилита для конвертации
        make_ogf: Новая утилита для создания тестовых бенчмарк OGF моделей из "мусора"
        ogfdos16: Поддержка OpenWatcom compiler

        [Fixed bugs]
        OGFViewer: В диалоге открытия файла показываются по маске все поддерживаемые форматы
        OGFViewer: При экспорте в wavefront obj одинаковое имя для obj- и mtl- файлов
        OGFViewer: В режиме VBO работает отключение vsync (GL)
        OGFViewer: Новый порядок отрисовки drawmode #2 - сначала "обычные" меши, затем меши с alphablend
        OGFViewer: Корректная отрисовка water, wallmarks, down skybox в drawmode #2
        OGFViewer: Блокируется F12 если модель не загружена (base)
        OGFViewer: ilShutdown() на выходе (GL)
        OGFViewer: Баги GL 1.0 (single-(multi-)texture, mipmap, visible[], proxy, txload() err chk)
        OGFViewer: Не отсекались невидимые грани в drawmode #2 - GL_CULL_FACE (GL)
        OGFViewer: Карты nVidia требуют glFinish() перед выводом в GDI (GL)
        OGFViewer: Предустановка света только для drawmode #1
        parse_lev: Корректный экспорт в OGF без "мусора" (учёт swidata, swicntr)

        [Optimizations]
        OGFViewer: Вызываем SetTexture(NULL) один раз (DirectX)
        OGFViewer: Не грузить текстуры повторно если у них один растр, а шейдеры разные
        OGFViewer: Исправлена ошибка в классах MFC - OnXXX (palettes, m/wheel)
        OGFViewer: Не используем Lstr... функции (Lstr... -> str...)
        OGFCons: Не линкуем MFCxx.LIB
        OGFViewer: Не используем нормали в drawmode #2 (GL)
        OGFViewer: Опция USE_ZTRICK для ATIRage, Permedia, 3Dfx (GL)
        OGFViewer: Отдельная функция для выгрузки иодели
        OGFViewer: Начата поддержка экспорта в LWO формат

        Изменения (11.02.2011) :

        [New features]
        OGFFSCR: Новая версия для MS OpenGL, "отвязанная" от MFC
        DX7ALT/DX7BASE: Новая версия для MS DirectX7
        OGF_GLUT: Новая версия на базе GLUT.DLL (Windows, OS/2)
        OGF_TK: Новая версия на базе LIBTK.DLL (OS/2)
        OGFCons: Новая версия на базе LIBAUX.DLL (OS/2)
        OGFViewer: F12 центрирует модель (ALL)
        OGFViewer: F12 смещает камеру в центр модели (ALL,alt-версия)
        OGF2OBJ: показывает LOD-объекты
        OGFFSCR: отлажен для mesafx 6.2, techland, altogl
        OGFFSCR,OGF_GLUT,OGF_TK: "M" ("T" для OS/2) - дамп материалов в object.log
        OBJ2OGF: Новая утилита для конверсии wavefront obj в xray ogf v4
        MAKE_OGF: Новая утилита для создания псевдослучайных моделей xray ogf v4
        OS2: Портирован DevIL 1.7.8 на платформу OS/2 (devil.dll, ilu.dll), умеем только DDS!
        OGFViewer: опция DM2_LIGHT

        [Fixed bugs]
        OGFViewer: контроль переполнения maxmesh/maxmat
        OGFViewer: maxmesh увеличен до 17000 (levels\aver)
        OGFViewer: пересчитываем FOV для widescreen (?)
        OGFViewer: в предыдущей версии поддержка Orion v1 MSH была сломана - починили
        OGFConsA: Имя cfg-файла в формате 8:3 (ogfview.cfg), алгоритм так же как и в Win32-версии
        OGFViewer, Parse_Obj: считываем все известные разновидности object-формата
        OGFViewer: нет внутреннего бордюра (WS_EX_CLIENTEDGE) в GUI-версии
        OGFViewer: свет на 0.25m выше камеры (ALL,alt-версия)
        DX7: Поддержка VertexBuffers, правильный aspect ratio
        Parse_Lev: Точные вычисление нормалей (в уровнях они сжаты с потерями :()
        OGFViewer: во всех версиях - 8 типов фона
        OGFConsA: задержка после "TAB", "F1"

        [Optimizations]
        OGFViewer: Только один fseek() в ogf_readchunk()
        OGFViewer: Пропускаем ненужные секции (ogf/object)
        OGFViewer: Генерируем массивы индексов отдельно, после считывания модели (DirectX)
        OGFViewer: GL1.0: при смене miplevel - вызываемl glTex...() 1 раз (OpenGL)
        OGFViewer: отключаем IsList(), убираем кисть - RegisterClass(...,HBRUSH = null,...)
        OGFViewer: новый механизм разбора шейдеров m_Flags, различаем 'terrain', 'model', 'models/model'

        [Notes]
        ALTOGL: работает только с опцией LIMIT_DDS или без текстурирования, полный экран (ogffscr)
        TechLand Software(3dfx,s3,d3d): работает только в drawmode #1/#2, полный экран (ogffscr)

        Изменения (11.06.2011) :

        [New features]
        Поддержка экспорта в stl/ascii (на тестировании...)
        Новая модель освещения в drawmode#1
        DX7: поддержка drawmode#0, drawmode#1 (без освещения)
        Экспериментальные версии: ogf_dx9 (DX9SDK), ogf_irr (irrlicht engine)
        Поддержка считывания моделей YouAreEmpty(DS2 engine) и Metro2033 (статика)
        Теперь можем читать уровни build1935 экспортированные xray_re converter.exe

        [Fixed bugs]
        Корректное создание нормалей для *.3ds, *.object
        Правильный расчет bounding box для object, ogfv3
        DX: Проверка всех функций на D3D_OK, напр. Create...Buffer()
        DX: Показывает оставшуюся текстурную память ("I" клавиша)
        PARSE_LEV: Можем конвертировать уровни build1935 и нек-рых build22xx

        [Optimizations]
        OS2: улучшена поддержка, ogf_snap умеет VBO, DevIL.DLL читает не только DDS формат
        OS2: Версия написанная на OpenWatcom умеет 3DS модели (требует LIB3DS.DLL)
        ALL: ускорение обработки 'terrain', 'water' мешей
        OGFLoader: Ускорение загрузки мешей (DX, object)
        OGFLoader: Совмещены секции 0x1011, 0x1012 (object)
        OGFModel: Rendering optimization (OpenGL, non-VBO)
        ALL: Режим drawmode#2 с освещением переписан (на тестировании...)
        ALL: Для корректной работы мипмэппинга коэфф. ALPHAREF = 50% для LOD-ов (деревьев и пр.)
        ALL: Максимум мешей поднят до 30000 (для object)
        ALL: Опция COMPACT_OBJECT, теперь вертексы в object-ах сжимаются

        [Notes]
        Отключение Aero (desktop composition) решает проблемы с пропадением текста в окне программы

        Изменения (17.07.2011) :

        [New features]
        ALL: режим листания (клавиши "Z","X","C","V")
        ALL: новая схема освещения ( drawmode #1, #2 )
        ALL: поддержка моделей Orion engine v1 с заголовком 0x00000102
        NEW: новый парсер parse_2033 для уровней Metro2033
        DX: расширено окно информации (клавиша "I")
        DX7: поддержка фильтрации текстур, референс рендер

        [Fixed bugs]
        PARSE_LEV: учитываем поправочные коэффициенты для U, V в текстурах
        ALL: FOV считается по Y, начало с 67.5 (FovX = 90) до 100 с шагом 5 потом сброс на 47.5
        ALL: убраны несуществущие комбинации фильтраций текстур и мипмапов
        ALL: скайбокс теперь 3000x1500x3000 метров, дистанция ~= 2500 метров
        OGF_DX?: не освещаем небо, сетка и base/alt режимы
        OGFViewer: выбор model/ds2md в диалоге, выкинут D3DRS_COLORVERTEX (OGFViewer_DX)
        DX7: включен клиппинг, исправления в работе с VB, корректный minimize окна
        DX7: быстрый однотекстурный режим (активен когда нет OGFViewer.cfg)
        ALLE: z-дистанция = -10 ( было -20 )
        OGFLoader: 0x1008 блок - теперь допуcтимо max=10 vmrefs (было max=4)
        OGFViewer_DX: Улучшена совместимость с DX8.0A+Win95, выкинут PURE device
        OGFViewer_DX: нет мусора на окне в dm#1 после "G", "I", "F5"

        [Optimizations]
        ALL: "умное" ремасштабирование, не вызваем D3DXCreateTextureFromFileEx() повторно (для версий без мипмапов)
        DX: скайбокс создается однократно

        [Notes]
        Это миниверсия пакета, так что некоторые дополнительные экзешники выкинуты :)

        Изменения (22.08.2011) :

        [New features]
        OGF_DX7: Новая версия для DX7 на 7-м DXUT-е
        OGF_DX?T: "Однобуферная" версия ogf_dx? (на современных видеокартах рендерит быстрее)
        MAKE_BOX: лепит модель из x*x*x кубов для бенчмарка, x задаётся

        [Fixed bugs]
        OGF_DX?: DXUT код - улучшена совместимость с DX80A/Win95
        OS2: исправлены мелкие неточности, вызывавшие ошибки при компиляции
        DX7: убрано SPECULAR освещение
        OGFFSCR: 16 BPP буфер глубины вместо базовой версии - включался на альтернативной, исправлено
        OGFFSCR, OGFViewer: полностью переписан детект акселерации для OpenGL (ICD/MCD/Software)
        OGFLoader: Исправлен результат LimScale() (DX)
        DX7, ALLE: Здесь Right-hand система координат (документация DirectX7 врёт?)
        OGF_DX?: Исправлено движение камеры в базовой версии
        OGF_DX?: Листание моделей вызывает (Z,X,C,V) серъезную утечку памяти, исправлено
        PARSE_203: В картах 4A Engine cуществует материал #0, авторасчет bounding box
        DX7, OGFViewer_DX: Уточнена фильтрация текстур, SetTextureStage() (DX)
        OGFViewer: Уточнена фильтрация текстур, GL_TEXTURE_ENV_MODE (GL)
        DX7: F6 переключает VB-noVB
        DX7, OGFLoader: Проверка на лимит размеров текстур

        [Optimizations]
        OGFLoader: исправление неточности в загрузке моделей ds2md, metro2033 (найдено prefast)
        DX: код установки тумана переписан
        OGF_DX?: убран SetPixelshader() из DXUT
        OGF_DX?: Листание моделей убрано из альтернативной версии, опция COMPACT_NVTS
        OGF_DX?: При смене видеорежима не слетает настройка фильтрации текстур
        OGF_DX?, OGFViewer_DX: возвращена поддержка pure_device (DX)
        ALL: Убрана "автонормализация" (DX, GL)
        DX: Применено обновление библиотек DirectX8
        OGF_DX?: Для USE_SUBST вызываем SetTexture() один раз
        OGF_DX?: Новая модель освещения по погоде S.T.A.L.K.E.R. ТЧ (ambient по 0.7, sun по 1.0)

        [Notes]
        Отключение Aero (desktop composition) решает проблемы с пропадением текста в окне программы
        Некоторые карты декларируют поддержку DXT-текстур но не умеет её (Rage128,Voodoo3)
        Это полная версия пакета!

        Изменения (31.01.2012) :

        [New features]
        CONSOLE: новые утилиты - suntest make_box2 descale ltest
        ALL: Скайбокс "аутентичный" игровому (10 плоскостей)
        OGF_DX?: обновление версии на движке DirectX SDK, умеет dot3 bumpmapping, шейдеры, свет от фонарика, "погодное" освежение.
        ALL: базовая дистанция сокращена до 400,200,400 + 350 м., как в конфигах игры (опция HI_DIST иx возвращает 3000,1500,3000 + 2600)
        ALL: новая схема освещения в drawmode#2, как в OGF_DX?, время меняет угол света к горизонту
        OGFVIEWER: поддержка тем Windows XP/Vista/7
        ALL: Умеем Widescreen - 16:9 и пр. (клавиши "5","6") и меню
        OGFVIEWER: угол света к горизонту и время менем клавишами 7,8,9,0,< + >,< - > (drawmode#2)
        ALL: Опция для SGI glut.dll (GL)

        [Fixed bugs]
        ALL: На источники света не должно действовать фоновое освещение, check_model_end(lightflag,...)
        OGFLOADER,OGF_DX?: тип model\selflightl = "обычный" объект
        OGFLOADER: при загрузке 3DS моделей проверяем лимиты по материалам и мешам
        OGFMODELl: убран лишний glEnd() в drawmode#2 (GL10)
        OGFLOADER: для OGF_DX? выворачивались нормали -> исправлено ( !DX_REND стало USE_YXLAT )
        OS2: полноэкранный режим (PM_PM) кроме ogfcons, убран printf(),WinMessageBox()
        OGF_GLUT: WarpMesaGL инвертирует ось Y

        [Optimizations]
        OGFCONSA: отключен zbuffer в drawmode#0, версия с fixed-math (ogfconsaF), оптимизация (ALLEGRO)
        OGFLOADER: переписана загрузка DDS текстур, поддержка FXT1 - для Intel-ов (GL)
        PARSE_LEV: возможна загрузка нормалей из уровней (обратный порядок - zyx), а не их расчет, опция USE_NZYX
        MAKE_BOX: make_box для бенчмарка кубами, make_box2 для occlusion теста, dot3 bump
        OGF2OBJ, OGFLOADER, STDAFX: переписна загрузка OGFv3 чанков для анимаций 0x0D, 0x10, 0x17, 0x19, 0x1C
        OGFLOADER: восстановление bind pose из костей для OGFv3 моделей (на тестировании)
        OGF_DX?: убраны FVF коды из структуры D3DVERTEX

        [Notes]
        Отключение Aero (desktop composition) решает проблемы с пропадением текста в окне программы.
        Это мини версия пакета!

        Изменения (01.04.2012) :

        [New features]
        OGFLOADER: Экспорт в Collada XML (*.DAE).
        OGFLOADER: Экспорт в AutoDesk DXF, меши по слоям.
        OGFLOADER: "Чтение" DDS-файлов, наложение на плоскость 2x2 метра.
        OGFLOADER: Экспорт в StereoLitho (*.STL), MilkShape3D (*.MS3D), X-Ray SDK (*.OGF).
        OGFDOS16: Свой ANM-формат для хранения анимаций - на 1 меш.
        SURFCONV: Конвертер текстур на базе DX8/DX9 SDK- в разработке.
        SURFCONV: D3DX_DEFAULT_NONPOW2 - произвольные размеры текстур в DX9, "ручное" сохранение в TGA.

        [Fixed bugs]
        OGF_DX9(SM20): Формат тангента float[4], исправлена потеря контекста шейдером, радиус света = 20 (был 10).
        OGF_DX9(SM20): Считываем бампы orion m1
        OGFLOADER: Читаем "многоблочные" *.DS2MD (You Are Empty).
        OGFLOADER: В *.SMD, *.ASE материалы назначались некорректно - исправлено.
        OGFLOADER: В *.SMD исправлен "офигический" 100x масштаб.
        OGFLOADER: Экспорт obj приведен в соответствие с методикой X-Ray ActorEditor (всё в 1 файл).
        OGFLOADER/OGFMODEL: BoundingBox отрисовывался отражённым по оси Y (OpenGL).

        [Optimizations]
        OGFDOS16: Нормали, код переписан, 2D-"анимации" (OGFPLY16), FastGraph engine.
        OGFVIEWER: Поддержка DX9 SDK, SW рендерер, задел на будущее?
        ALLE: Модели загружаются быстрее, свет сверху вниз, статистику (totvert/totind) берём из модели.
        ALL: Затенение по Фонгу должно быть недоступно в DirectX 7/8/9 (DirectX).
        MESHCONV: Лог расширен.

        [Notes]
        Отключение Aero (desktop composition) решает проблемы с пропадением текста в окне программы.
        Это мини версия пакета!

        Изменения (31.07.2012) :

        [New features]
        OGFVIEWER: Подсказки к кнопкам (floating tooltips).
        OGFVIEWER: Поддержка тем XP/2003/Vista/7/...
        OGFVIEWER: Новая сокращенная панель кнопок, свойства модели в виде "дерева" (TreeView/ListView).
        PARSE_SPW: новый инструмент для разбора GSC spawn
        ALL: 22 варианта цветов для неба skycolors.png  - DaySkyColorReference (frostbo.devianart.com)
        OGFVIEWER: Версия для 64-бит процессоров (WIP).
        ALL(GL): Все версии теперь умеют два вида направленного освещения - от наблюдателя и "солнечное".

        [Fixed bugs]
        OGF_DX9: исправлена утечка памяти (лишний new OGFModel[])
        OGFLOADER: "Потерянная" поддержка multi-mesh ds2md вернулась. :)
        OGF_DX9(SM_20): Многочисленные исправления - коэффициенты specular (0.5 -> 0.75), "дырки" в скайбоксе.
        OGF_DX9(SM_20): SetTechnique вызываем один раз.
        OGF_DX9(SM_20): Исправления в  changeskybox().
        OGF_DX7: Многочисленные исправления
        ALL (BASE): LOCALVIEWER render-state, рефлексы теперь выглядят "грамотнее".
        OGF_GLUT, OGF_TK: OnMouseMove() - убраны дублированные x,y переменные.
        OGFLOADER: Исправлена ориентация faces в коде экспорта ms3d.

        [Optimizations]
        ALL: шаг движения cокращен F7 (*4), F8 (/4)
        metro2033 support: check for dup-ed materials
        OGFVIEWER: Относительный путь в ogfviewer.cfg (типа \gamedata\textures\) временно не работает
        - используйте полный путь R:\games\stk\gamedata\textures\ .
        OGFVIEWER: Последний каталог для открытия и сохранения моделей запоминается отдельно.
        OGFVIEWER: 3DLook для Windows NT 3.51. :)
        OGFLOADER: Убрано ограничение на количество мешей, материалов в исходном файле.
        OGFLOADER: В моделях metro2033 проверяем дублированные материалы.
        NEW_REND, OGFSCENE: Попытка переписать движок OGFVIEWER (WIP).
        PARSE_YAE: Теперь разбираем модели (ds2md) и геометрию (ds2, WIP).

        Изменения (31.10.2012) :

        [New features]
        PARSE_YAE: Теперь разбираем двоичные модели (ds2md) версий 0.6, 0.9, 1.0
        ALL: Поддержка двоичных ds2md (YaE) моделей версии 0.9 (beriya.ds2md, ship.ds2md)
        ALL: Поддержка двоичных ds2md (YaE) моделей версии 0.6 (krovat.ds2md medscen1.ds2md medscen2.ds2md toilet.ds2md trash_box.ds2md)
        ALL: Autodesk 3dsmax plugin (x86, версии 5.1,6,7,8,9,2008,2009,2010,2011,2012) на движке MeshTool
        ALL(DX, GL): В альтернативных версиях отсечение увеличено до 3 км = 3000 м (было 400 м), для этого есть клавиша "N".

        [Fixed bugs]
        OGFLOADER: Исправление для ds2md (YaE) моделей, с неполными путями до текстур.
        ALL(GL): Не вызываем glBegin(GL_LINES) для сетки дважды.
        ALL: Правильное масштабирование ds2md моделей (в 100 раз) и считывание bounding box (ds2md 1.0)

        [Optimizations]
        OGFMODEL: Классы движка конфликтовали с "Максом" - исправлено (Mesh -> mtMesh ...).
        ALL: Повсеместно убраны _try {} except (1)
        OGF_DX9(B, SM): Клавиша "4" даёт результат ValidateDevice().
        OGF_DX9(B, SM): Клавиши "7","8" в(ы)кл учёт D3DRS_SPECULARENABLE в FFP.

        [Notes]
        ALL: Установка 3dsmax плагина: xrMtMax*.dlt и OGFViewer.cfg переписать в папку 3dsmax\plugins.
        ALL: Убраны все 64-битные версии "до выяснения" проблем с ними.
        ALL: "VIA Tech VT8361/VT8601 Graphics Controller (aka KPLE133)" не умеет рисовать линии в "hardware".
        OGF_DX9(SM_20): Карты Intel не умеют порядок координат p,u/v,n,t для FFP.
        OGFLOADER: Размер ms3d модели при экспорте ограничен 65535 индексами, вертексами ("железное" ограничение формата!).
        Отключение Aero (desktop composition) решает проблемы с пропадением текста в окне программы.
        Это мини версия пакета!

        Изменения (29.12.2012) :

        [New features]
        ALL: Возвращены 64-битные версии. :)
        PARSE_BKP: Новая утилита для восстановления xray-level source backups
        MBENCH: new bench tool with tri, ply, nmb? model support, also ltest tool refresh
        ALL,DX,GL: полностью реализована aнизотропная фильтрация
        ALL,DX: Макс. aнизотропная фильтрация включена по умолчанию
        ALL,DX,ALT: добавлен второй sun-like режим освещения, как для GL
        PARSE_LEV: Опция 4 корректно конвертирует лайтмапы отдельно от базовой геометрии

        [Fixed bugs]
        PARSE_LEV: Исправление при удалении несуществующего массива ( delete [] swiblk )
        OGFLOADER: Обрезаем vtx block до 65535 для БОЛЬШИХ объектов
        OS2: Исправлен плавающий таймер - теперь используем DosTmrQueryFreq/Time, "отвязались" от tcpip.lib
        OS2: IBM CPP требует откл. оптимзаций (-O+) или замены на (-Oc+) чтобы отсечение по bbox работало правильно
        OGFLOADERZ: Импорт моделей не завит от "pragma pack #1" ( /Zp1 ), сделано для MAX плагина
        OGFLOADER: Исправлено считывание секции 0x0E S_BONE_NAMES

        [Optimizations]
        ALL: v_far_dist, HI_DIST теперь везде (не только в ogf_dx?)
        OGFLOADER: Считываем object блок 0x1005 целиком, вне зависимости от USE_XLAT
        MESHCONV: Определяем USE_DX9 для отключения бессмысленной опции USE_XLAT
        OGFLOADER: Заменяем memcpy() где возможно на присваивание,  напр. *(int*)
        OGFLOADER: Рассчитывем нормали, bbox для object, m2033 один раз в конце, bs_radius для *.ds2md
        PARSE_LEV: Теперь удаляем дублированыые вертексы при конвертации (10% экономии для "финалок", 30-40% для "билдов")
        OS2: Безопасно использовать -onatx (т.е. OPT=1) в Watcom-е
        IL_WRAP: Пишем лог только при USE_LOG, умеем MIPMAP
        ALL,GL,OGFLOADER: aнизотропная фильтрация  - это float константа
        ALL: Оптимизация 'F9' MIPMAP кода
        ALL,GL: Расширение glCompressedTeximage2D добавлено везде кроме "pure" OS/2

        [Notes]
        ALL,GLUT,MS: Миним. полноэкранное разрешение для Microsoft glut32 - 400x300 но оно патчится.
        Это полная версия пакета!

        Изменения (30.06.2013) :

        [New features]
        MESHCONV: поддержка масштабирования в процессе конвертации
        OGFLOADER: Теперь умеем все виды моделей 4A Engine (Metro 2033, Metro Last Light) - *.model, *.mesh

        [Fixed bugs]
        CHILDVIEW: При декларации DISABLE_TEXTURING программа не собиралась.

        [Optimizations]
        OGFLOADER: Внутренний код формата 4A Engine изменен с 0x2033 на 0x4AE0
        ALL,GL: Показываем версию GLSL
        PARSE_203: Теперь удаляем дублированыые вертексы при конвертации (см. PARSE_LEV выше)

        [Notes]
        ALL,GLUT,MS: Миним. полноэкранное разрешение для Microsoft glut32 - 400x300 но оно патчится.
        Это полная версия пакета!

16. Планы

        Чтение анимаций (ogf,omf), секций S_BONE_NAMES, S_IKDATA, S_MOTIONS
        Чтение анимаций (object,skl,bones)
        Чтение particles
        Чтение level из билдов 1xxx (XRLC формат 0x0C и ранее)
        Импорт/экспорт *.lwo (LightWave3D)
        Экспорт плагин для 3DSMax
        Импорт/экспорт плагин для Maya
        Экспорт в *.object (XRay SDK), *.ma (Maya ASCII)
        Чтение level DS2 Engine 'You are empty', Orion engine v1 'Метро-2'
        Чтение моделей уровней Cryostasis, Singularity, Unreal Engine 3 (Dishonored, etc.)
        Реализация FSAA, lightmap generation, guardband clipping, deferred render.
        Поддержка UNICODE.
        Полностью программный рендерер.
        Рендерер на базе irrlicht, ogre.
        Ini-фaйл для OGFViewer (meshtool.ini?)
        Нативные версии для Windows (alpha, mips, ppc, WinCE, arm)
        Мультитекстурирование, расчет лайтмапов, улучш. освещение (шейдеры, FFP)

17. Использованные материалы и благодарности

        batya: исходники OGFViewer 1.0.2 (26 Nov 2006)
        batya: исходники LevelEditor 0.0.2 (07 Apr 2007)
        bardak: исходники X-RAY RE-Tools-SRC (10 Sep 2008)
        kasper, haron: исходники OGF2SMD SRC 2.03
        iOrange: исходники конвертеров для Metro 2033 (Apr 2010)
        Stalkerin wiki: http://stalkerin.gameru.net/wiki/index.php/Категория:Форматы_файлов
        Wavefront obj format: http://en.wikipedia.org/wiki/Obj
        Wavefront mtl format: http://en.wikipedia.org/wiki/Material_Template_Library
        DevIL, OpenIL: http://openil.sourceforge.net/, DDS,TGA reading support
        lib3ds: http://lib3ds.sourceforge.net, 3DS import, export
        Mesa3D: http://www.mesa3d.org/, software OpenGL
        SGI OpenGL 1.1.1/MMX (ver 2.0): opengl2.exe
        TransGaming SwiftShader (ver 2.01): http://www.transgaming.com/business/swiftshader/technology/
        Realtech OpenGL Extensions Viewer: http://www.realtech-vr.com/glview/
        Realtech VR DXGL Wrapper: http://www.realtech-vr.com/directx/
        ATI Radeon 9700 OpenGL SDK: http://developer.amd.com/downloads/Gl_sdk.zip
        GL_ARB_vertex_buffer_object: http://www.nvidia.com/dev_content/nvopenglspecs/GL_ARB_vertex_buffer_object.txt
        GL_EXT_compiled_vertex_array: http://www.opengl.org/registry/specs/EXT/compiled_vertex_array.txt
        GL_ARB_texture_compression: http://www.opengl.org/registry/specs/ARB/texture_compression.txt
        GL_SGIS_generate_mipmap: http://www.opengl.org/registry/specs/SGIS/generate_mipmap.txt
        GL_EXT_cull_vertex: http://www.opengl.org/registry/specs/EXT/cull_vertex.txt
        Graphic Remedy gDEBugger version 4.5: http://www.gremedy.com/
        GMax 1.2, free game modeling tool (3DSMax compatible): http://www.turbosquid.com/gmax/
        Blender 3D cross platform suite: http://www.blender.org/
        NVIDIA DDS plug-in: http://www.nvidia.com/object/photoshop_dds_plugins.html
        NvTriStrip Library: http://developer.nvidia.com/object/nvtristrip_library.html
        Allegro - A game programming library: http://alleg.sourceforge.net/
        UniLink: ftp://ftp.styx.cabel.net/pub/UniLink (by Юрий Харон)
        level format: http://haperpage.narod.ru/format/
        level format: http://www.gamedev.ru/community/gde/articles/
        camera: http://pmg.org.ru/nehe/nehe_camera.htm
        culling: http://www.flipcode.com/archives/Frustum_Culling.shtml
        lwo format: http://www.sandbox.de/osg/lightwave.htm
        soft. raster.: http://pmg.org.ru/basic3d/index.html
        VBO whitepaper: http://www.spec.org/gwpg/gpc.static/vbo_whitepaper.html
        "Batch": http://developer.nvidia.com/docs/io/8230/batchbatchbatch.pdf
        SGI OpenGL: http://www.gameprog.it/pub/oldtuts/GuideOGLwin/releasenotes.html#hwconfig
        Techland MiniGL driver: http://www.techlandsoft.com/english/minigl.htm
        GLIntercept v0.5: http://glintercept.nutty.org/
        OpenGL on OS/2: http://www.edm2.com/common/authors/pnewhook.html
        demo.design 3D programming FAQ: http://www.enlight.ru/faq3d/content.htm
        good directx faq: http://www.toymaker.info/Games/html/directx_9_0c.html
        Lection #32. R.E.N.D.E.R.: http://www.gamedev.ru/community/gamedev_lecture/articles/r_e_n_de_r
        GSC Game World. S.T.A.L.K.E.R. Oblivion Lost. http://www.gamedev.ru/industry/articles/?id=4308
        OGRE engine S.T.A.L.K.E.R. level loader http://www.gamedev.ru/users/?id=2251&lasttop
        http://www.gamedev.ru/code/articles/ShadowMapGLSL
        http://www.gamedev.ru/code/articles/Software_occlusion
        http://www.gamedev.ru/code/articles/OpenGL_Shaders
        http://www.gamedev.ru/code/articles/Cg
        OGRE engine: http://www.ogre3d.org/
        Irrlicht engine: http://irrlicht.sourceforge.net/
        yae-tools: http://code.google.com/p/yae-tools/
        xray-extensions: http://code.google.com/p/xray-extensions/
        metro2033-tools: http://code.google.com/p/metro2033-tools/
        directx collection: http://www.falconfly.de/directx.htm
        Direct3D (DirectX 9.0) Code Samples http://www.codesampler.com/dx9src.htm
        Direct3D (DirectX 8.1) Code Samples http://www.codesampler.com/dx8src.htm
        OpenGL (1.2 - 2.0) Code Samples http://www.codesampler.com/oglsrc.htm
        Guard Band Clipping in Direct3D: http://developer.download.nvidia.com/assets/gamedev/docs/Guard_Band_Clipping.pdf
        MyTips_DeadlyLight.doc http://software.intel.com/file/9889/
        Deferred Shading Tutorial Deferred_Shading_Tutorial_SBGAMES2005.pdf
        GeForce_Optimization2.pdf
        ARB_occl_query.pdf
        10.1.1.93.8402.pdf
        bittner-eg04-chcull.pdf
        GPU_Programming_Guide.pdf
        bavoil_trimeshes_2005.pdf
        KRI 2006-OpenGL optimizations.pdf
        ARB_texture_compression.pdf
        Dot_Product_Texture_Blending.pdf
        gdc2002_d3d_performance.pdf
        gf2_overview.pdf
        Introduction_DX8_Pixel_Shaders.pdf
        Nsr.pdf
        premier-press-beginning-direct3d-game-programming.pdf
        DUMPCAPS: http://d3dcaps.chris.dragan.name/
        http://code.google.com/p/cut-x-ray-project/
        https://bitbucket.org/stalker/xray_re-tools/
        https://bitbucket.org/stalker/weather_cycle_adjuster/
        http://xray-engine.org/
        ODE: www.ode.org/
        bugtrap.dll: http://www.codeproject.com/Articles/14618/Catch-All-Bugs-with-BugTrap

    2013.06.xx