################################################################################
####                                                                        ####
####                               Mesh Processor                           ####
####                                                                        ####
################################################################################
Mesh Processor - wersja 1.1 - 22 marca 2007
Autor: Adam Sawicki, http://regedit.gamedev.pl, regedit@regedit.gamedev.pl


Wstp
================================================================================

MeshProcessor to konsolowy program do przetwarzania siatek modeli 3D.

Minimalne wymagania:

- Komputer PC
- System Windows
- Biblioteka DirectX 9.0c

Waciwoci:

- Intuicyjny i elastyczny jzyk skryptowy ze zmiennymi i dynamicznymi typami
- Obsuga siatek w formatach: X, OBJ
- Proste przeksztacenia siatki, m.in. skalowanie i zmiana ukadu wsprzdnych
- Funkcje przetwarzajce siatk z D3DX
- Przeliczanie wektorw normalnych i stycznych dla tangent space z uyciem
  NVMeshMender
- Generowanie mapy wysokoci (terenu, ang. heightmap) na podstawie tekstury lub
  pliku RAW
- Wsppraca z zewntrznymi programami


Uruchamianie programu
================================================================================

Program mona uruchomi:

1. W trybie interaktywnym, aby wydawa bezporednio polecenia na konsoli.
   Bd podczas przetwarzania zostanie wywietlony, ale program bdzie dziaa
   dalej.

     MeshProcessor.exe /i [Parametry]

2. W trybie wsadowym, z uyciem pliku skryptu z zapisanymi w kolejnych wierszach
   poleceniami. Wwczas kady bd przerywa wykonywanie skryptu.

     MeshProcessor.exe <PlikSkryptu> [Parametry]

   Przykady:

     MeshProcessor.exe MojSkrypt1.txt
     MeshProcessor.exe MojSkrypt2.txt 123 124 "ble ble ble"


Skadnia skryptw
================================================================================

Skrypty to pliki tekstowe w kodowaniu Windows-1250, z kocami wiersza CR+LF i
z zalecanym rozszerzeniem "txt".

Podstawy skadni:
- Komentarze jednowierszowe jak w C/C++ - od "//" do koca wiersza
- Komentarze wielowierszowe jak w C/C++ - od "/*" do "*/"
- Kontynuacja tej samej linii w nastnej linii poprzez zakoczenie poprzedniej
  znakiem '\'

Poza komentarzami i liniami pustymi kada linia to osobne polecenie. Oglna
skadnia polecenia:

  <z1> <z2> ... = <f> <pd> <p1>=<w1> <p2>=<w2> ...

Gdzie:

z1, z2, ... - zmienne, do ktrych zostan przypisane wyniki wykonania funkcji
f - nazwa funkcji
pd - warto parametru domylnego
p1, p2, ... - nazwy parametrw
w1, s2, ... - wartoci parametrw

Elementy skadni:

- Nazwy zmiennych i funkcji: jak identyfikatory w C/C++, np.:
    Funkcja, abc2, x123
  Wielko liter w identyfikatorach nie jest rozrniana.
- Liczby cakowite (integer):
    0, 12, -123
- Liczby rzeczywiste (float):
    0, 12.5, -10.3-e3
- Warto wyliczeniowa (enum) - tak jak identyfikator, np.:
    Text, Binary, Compressed
- acuchy znakw:
    "abc" "C:\\Temp\\Plik.txt"
  Sekwencje ucieczki s jak w C/C++ ('\\', '\"' itd.).

W zalenoci od funkcji jest okrelona liczba wartoci zwracanych, obowizkowa
lub opcjonalna obecno parametru domylnego oraz innych parametrw. W miejscu
kadego parametru mona poda nazw zmiennej lub, jeli oczekiwany jest typ
prosty, sta dosown danego typu wg skadni opisanej wyej. Przykad:

  s1 = Set 123
  Print s1
  Print 123

Wartoci zwracanych moe nie by, wwczas polecenie przyjmuje posta:

  Funkcja ParametrDomylny Parametr1=Warto1 Parametr2=Warto2 ...

Midzy parametrami nie ma adnych przecinkw, nawiasw, nie ma te rednika
na kocu polecenia!

Typy zmiennych:
- Typy proste (nastpuje automatyczna konwersja midzy nimi):
  - string
  - integer
  - float
  - enum
- Typy zoone:
  - mesh (siatka)
  - texture (tekstura)


Polecenia
================================================================================

Exit
Koniec skryptu.

Print <co> Desc=<Desc>
Wypisuje tre lub informacje na temat podanego obiektu.
Parametry:
  Co : dowolny typ
    Staa dosowna lub zmienna dowolnego typu do wypisania.
  Desc : string [opcjonalny]
    Opis umieszczany w tej samej linii przed informacj.
Przykady:
  Print "Hello World!"
  Print Arg0
  Print Siatka1

<zmienna> = Read Question=<tekst>
Pyta uytkownika na konsoli o wprowadzenie tekstu.
Parametry:
  tekst : string [opcjonalny]
    Tekst pytania.
Zwracane:
  zmienna : string
    Warto wczytana od uytkownika. Zadziaa take jako liczba, warto
    logiczna, enum i innego rodzaju wartoci o ile ma poprawny format.

<zmienna> = Set <warto>
Ustawia warto zmiennej na podan sta dosown.
Parametry:
  warto : dowolna staa dosowna
    Staa dosowna z wartoci do przypisania
Zwracane:
  zmienna : takiego typu jak warto

<zmienna2> = Copy <zmienna1>
Wykonuje kopi zmiennej, jakiegokolwiek ona jest typu.
Parametry:
  zmienna1 : dowolny typ
    Zmienna do skopiowania.
Zwracane:
  zmienna2 : takiego typu jak zmienna1

<str2> = Format <str1>
Formuuje acuch znakw na podstawie tzw. acucha formatujcego (patrz niej).
Parametry:
  str1 : string [acuch formatujcy]
    acuch formatujcy
Zwracane:
  str2 : string
    Sformuowany acuch wyjciowy.

<zmienna> = Question <pytanie>
Pokazuje okno dialogowe MessageBox z pytaniem i opcjami: Tak, Nie, Anuluj
Anuluj przerywa skrypt. Inna odpowied staje si wartoci logiczn wpisywan
do zmiennej.
Parametry:
  pytanie : string
    Tre pytania.
Zwracane:
  zmienna : boolean

Message <komunikat>
Wywietla okno dialogowe MessageBox z komunikatem i przyciskami OK i Anuluj.
Anuluj przerywa skrypt.
Parametry:
  komunikat : string
    Tre komunikatu.

<zmienna> = OpenDialog Ext=<rozszerzenie> Title=<tytu>
<zmienna> = SaveDialog Ext=<rozszerzenie> Title=<tytu>
Pokazuje okno dialogowe wyboru pliku do otwarcia/zapisania.
Parametry:
  rozszerzenie : string [opcjonalny]
    Akceptowane rozszerzenia dla plikw wymienione po redniku.
  tytu : string [opcjonalny]
    Tytu okna.
Zwracane:
  zmienna : string
Przykad:
  SrcFileName = OpenDialog Ext="*.bmp;*.jpg"
  SrcFileName = OpenDialog
  DestFileName = SaveDialog Ext="*.x" Title="Zapis siatk"

<zmienna> = LoadMesh FileName=<nazwa-pliku> IndexFormat=<index-format>
Wczytuje siatk. Obsugiwane formaty (format rozpoznawany jest po rozszerzeniu):
- X - dowolny format wierzchoka
  Nie wspiera animacji szkieletowej - jeli plik zawiera wiele siatek, ich
  przeksztacenia zostan wprowadzone i stan si jedn siatk.
- OBJ - w obecnej wersji musi posiada normalne i wsprzdne tekstury.
  Siatka po wczytaniu z X jest bardzo nieoptymalna.
Parametry:
  nazwa-pliku : string
    Nazwa pliku siatki.
  index-format : integer [opcjonalny]
    Format indeksw w bitach - 16 (domylny) lub 32.
Zwracane:
  zmienna : mesh
    Wczytana siatka

SaveMesh <siatka> FileName=<nazwa-pliku> Format=<format>
Zapisuje siatk do pliku. Obsugiwane formaty (format jest rozpoznawany po
rozszerzeniu):
- X - pene wsparcie dla dowolnego FVF, ale brak wsparcia dla animacji
  szkieletowej.
- OBJ - w biecej wersji eby zapisa do OBJ, wierzchoek musi by w formacie
  FVF "XN2", a indeksy w formacie 16-bitowym.
Parametry:
  siatka : mesh
    Siatka do zapisania
  nazwa-pliku : string
    Nazwa dla pliku siatki X
  format : enum [opcjonalny]
    Format pliku X. Moliwoci:
      text [domylny]
      binary
      compressed
Przykad:
  SaveMesh Mesh1 FileName="Siatka.x" Format=binary

<siatka2> = ConvertFVF <siatka1> NewFVF=<FVF> Swizzle=<swizzle>
Konwertuje siatk do innego formatu wierzchoka.
Parametry:
  siatka1 : mesh
    Siatka do skonwertowania.
  FVF : string
    acuch opisujcy nowy format wierzchoka (opisany niej)
  Swizzle : string [opcjonalny]
    acuch opisujcy mapowanie starych do nowych komponentw wierzchoka.
    Na przykad "01-22-", gdzie komponenty (niezalenie od rozmiaru i iloci
    skadowych, np. DIFFUSE ma jedn liczb a NORMAL trzy) wierzchoka rdowego
    s numerowane od 0, a '-' oznacza wypenienie komponentu docelowego zerami.
    Jeli nie podany, program sam zamapuje odpowiadajce sobie komponenty
    wypeniajc pozostae zerami.
Zwracane:
  siatka2 : mesh
    Nowa siatka. Nowopowstaa siatka nie bdzie miaa Adjacency.

<siatka2> = ConvertIndexFormat <siatka1> NewFormat=<format>
Konwertuje indeksy siatki na podany format.
Parametry:
  siatka1 : mesh
    Siatka do skonwertowania.
  format : integer
    Nowy format indeksw dla siatki w bitach - 16 lub 32.
Zwracane:
  siatka2 : mesh
    Nowa siatka. Nowopowstaa siatka bdzie miaa Adjacency.

<siatka2> = NVMeshMender <siatka1>
  NewFVF=<NewFVF>
  SrcMapping=<SrcMapping>
  DstMapping=<DstMapping>
  MinCreaseAngle=<MinCreaseAngle>
  WeightNormalsByArea=<WeightNormalsByArea>
  CalcNormals=<CalcNormals>
  RespectExistingSplits=<RespectExistingSplits>
  FixCylindricalWrapping=<FixCylindricalWrapping>
Odpala NVMeshMender celem policzenia dla siatki wektorw tangent, binormal i
opcjonalnie normal na podstawie jej geometrii i z podanymi ustawieniami.
Parametry:
  NewFVF : string [opcjonalny]
    Definicja nowego formatu wierzchoka dla siatki wyjciowej.
  SrcMapping : string [opcjonalny]
    Mapowanie semantyki pl wierzchokw siatki wejciowej. Patrz niej.
  DstMapping : string [opcjonalny]
    Mapowanie semantyki pl wierzchokw siatki wyjciowej. Patrz niej.
  MinCreaseAngle : float [stopnie]
    Maksymalny kt midzy normalnymi dla ktrego ma nastpowa wygadzanie.
    (Pisze Min bo z niego jest liczony minimalny cosinus tego kta.)
  WeightNormalsByArea : float [0..1] [opcjonalny]
    - 1 = normalne s waone przez powierzchnie trjktw
    - 0 = normalne s po prostu uredniane
    - Dopuszczalne s te wartoci porednie.
    - Ta opcja zdaje si nie dziaa - wyliczane normalne s bdne jeli jest
      rna od 1.
    Domylnie: 1
  CalcNormals : boolean [opcjonaly]
    Czy oblicza normalne. Jeli nie, przepisane zostan normalne siatki
    wejciowej. Siatka wejciowa musi wwczas posiada normalne i mie
    zamapowan dla nich semantyk w SrcMapping.
    Domylnie: true
  RespectExistingSplits : boolean [opcjonalny]
    Czy respektowa krawdzie reprezentowane przez dwa osobne wierzchoki
    w danym miejscu. Jeli nie, krawd bdzie moga by wygadzona nawet jeli
    w siatce wejciowej bya reprezentowana przez dwa osobne wierzchoki.
    Domylnie: false
  FixCylindricalWrapping : boolean [opcjonalny]
    Czy naprawia znieksztacenia. Wcza tylko kiedy naprawd potrzebne.
    Domylnie: false
Zwracane:
  siatka2 : mesh
    Nowa przeliczona siatka.
    - Ma tyle samo trjktw co stara.
    - Moe mie inn liczb wierzchokw ni stara.
    - Ma taki sam format indeksw jak stara.
    - Moe mie i zazwyczaj ma inny format wierzchoka ni stara.
    - Nie ma Adjacency.
SrcMapping, DstMapping:
  To acuch, ktry dla kadego komponentu formatu wierzchoka siatki wejciowej
  lub wyjciowej przyporzdkowuje semantyk (znaczenie) dla NVMeshMender.
  Dopuszczalne wartoci:
  x - pozycja (XYZ : float3)
  n - normalna (NORMAL : float3)
  c - wsprzdne tekstury (TEXCOORDSIZE2 : float2)
  t - tangent (TEXCOORDSIZE3 : float3) [tylko dla DstMapping]
  b - binormal (TEXCOORDSIZE3 : float3) [tylko dla DstMapping]
  - - komponent bez semantyki
  0..9 - przepisywanie skadowej z wybranego komponentu siatki wejciowej
    [tylko dla DstMapping]
  Jeli SrcMapping lub DstMapping jest niepodany, zostanie wygenerowany
  automatycznie.
Przykady:
- m2 = NVMeshMender m1 NewFVF="XN2" MinCreaseAngle=30
- m2 = NVMeshMender m1 \
    NewFVF="XNDS223334" \
    MinCreaseAngle=30 \
    CalcNormals=true \
    RespectExistingSplits=false
- m2 = NVMeshMender m1 \
    NewFVF="XNDS223334" \
    SrcMapping="xnc" \
    DstMapping="xn--c-tb--" \
    MinCreaseAngle=30

GenerateAdjacency <Mesh> Epsilon=<Epsilon> Replace=<Replace>
Generuje informacje Adjacency wewntrz danej siatki.
Parametry:
  Mesh : mesh
    Siatka
  Epsilon : float
    Maksymalna odlego midzy wierzchokami uznawanymi za jeden i ten sam.
  Replace : boolean [opcjonalny]
    Czy zastpi istniejce informacje.
    - false - jeli s, to nie generowa nowych.
    - true - jeli s, to porzuci je i wygenerowa na nowo.
    Domylnie: true.

<Mesh2> = Simplify <Mesh1> NumVertices=<Num> NumFaces=<Num>
Upraszcza siatk do mniej wicej podanej liczby wierzchokw lub trjktw.
Parametry:
  Mesh1 : mesh
    Siatka wejciowa.
  Num : integer
    Liczba wierzchokw lub trjktw, do jakich uproci. Musi by tylko jeden
    z tych parametrw.
Zwracane:
  Mesh2 : mesh
    Siatka wyjciowa.
Uwaga:
  Chocia funkcja D3DX jest wywoywana poprawnie to wyglda na to e nie dziaa.
  Generuje siatk wyjciow zawsze tak sam jak wejciowa.

Optimize <Mesh1> What=<What>
Optymalizuje siatk przestawiajc wierzchoki, indeksy itd.
Parametry:
  Mesh1 : mesh
    Siatka do optymalizacji w miejscu.
  What : enum
    Co zrobi:
    - StripReorder - Reorders faces to maximize length of adjacent triangles.
    - VertexCache - Reorders faces to increase the cache hit rate of vertex caches.
    - Compact - Reorders faces to remove unused vertices and faces.

Translate <Mesh1> x=<x> y=<y> z=<z>
Przesuwa wsprzdne pozycji wszystkich wierzchokw o podane wartoci.
Parametry:
  Mesh1 : mesh
    Siatka do zmodyfikowania.
  x, y, z : float [opcjonalne]
    O ile przesun w danej osi.
    Domylnie: 0

Scale <Mesh1> x=<x> y=<y> z=<z>
Scale <Mesh1> Factor=<f>
Mnoy wsprzdne pozycji wszystkich wierzchokw przez podane wartoci.
Odpowiednio przeksztaca te normalne, natomiast nie dokonuje odwracania
kierunku trjktw - w przypadku odbijania trzeba samemu zrobi FlipFaces.
Parametry:
  Mesh1 : mesh
    Siatka do zmodyfikowania.
  x, y, z : float [opcjonalne]
    Przez ile pomnoy dan wsprzdn.
    Domylnie: 1
  f : float
    Przez ile pomnoy wszystkie wsprzdne.

CalcBoundingBox <Mesh1>
Oblicza i wypisuje na ekranie wsprzdne prostopadocianu otaczajcego podan
siatk.

Rotate <Mesh1> Axis=<Axis> Angle=<Angle>
Obraca wsprzdne siatki o podany kt wzdu podanej osi.
Parametry:
  Mesh1 : mesh
    Siatka do przeksztacenia
  Axis : enum
    O, wok ktrej obraca wg kierunku jak w ukadzie lewoskrtnym.
    Dopuszczalne wartoci: X, Y, Z
  Angle : float
    Kt, o jaki obrci w stopniach.

FlipNormals <Mesh1>
Odwraca w podanej siatce wektory normalne na przeciwn stron.

FlipFaces <Mesh1>
Odwraca w podanej siatce trjkty na przeciwn stron, tak e przednia strona
stanie si tyln, a tylna przedni. Nie zmienia normalnych.

TransformCoord <Mesh1> Swizzle=<Swizzle>
Przeksztaca ukad wsprzdnych podanej siatki - jej wsprzdne, ale take
normalne. Nie dokonuje odwracania kierunku trjktw - w przypadku odbijania
trzeba samemu zrobi FlipFaces.
Parametry:
  Mesh1 : mesh
    Siatka do przeksztacenia.
  Swizzle : string
    acuch 6 znakw oznaczajcy sposb przeksztacenia ukadu, w postaci na
    przykad "-y+x+z", co oznacza zamian: (x,y,z) ma (x',y',z') w taki sposb:
      x' = -y
      y' =  x
      z' =  z

<Path> = TempFile [Ext]
Generuje i zwraca unikatow nazw dla pliku tymczasowego. Mona jej uy jako
nazwy dla pliku wykorzystywanego w skrypcie. Pliki tymczasowe s kasowane po
zakoczeniu skryptu.
Parametry:
  Ext : string [opcjonalny]
    dane rozszerzenie dla nazwy pliku.
Zwracane:
  Path : string
    Zwrcona nazwa dla pliku tymczasowego wraz z pen ciek.

Exec <FileName> Parameters=<Parameters> Directory=<Directory>
Uruchamia zewntrzny program, udostpnia mu swoj konsol i czeka na jego
zakoczenie. Polecenie przydatne do uruchamiania zewntrznych narzdzi
konsolowych.
Parametry:
  FileName : string
    Nazwa pliku wykonywalnego EXE do uruchomienia. Moe by ze ciek
    bezwzgldn, wzgldn albo bez cieki.
  Parameters : string [acuch formatujcy] [opcjonalny]
    Parametry do przekazania dla wiersza polece uruchamianego programu.
  Directory : string [opcjonalny]
    Katalog roboczy dla uruchamianego programu. Jeli nie podany, uyty zostanie
    katalog biecy MeshProcessor.

ScaleTexCoords <Mesh1> Mapping=<Mapping> x=<x> y=<y> z=<z> w=<w>
ScaleTexCoords <Mesh1> Mapping=<Mapping> Factor=<f>
Mnoy wsprzdne tekstury wszystkich wierzchokw przez podane wartoci.
Parametry:
  Mesh1 : mesh
    Siatka do zmodyfikowania.
  Mapping : string
    Semantyka formatu wierzchoka wskazujca za pomoc liter 'c' (jednej lub
    wicej) wsprzdne, ktre naley pomnoy. Na przykad jeli wierzchoki
    s w formacie "XN22", aby pomnoy tylko drug wsprzdn wpisz jako
    Mapping "---c", a aby pomnoy obie - "--cc".
  x, y, z : float [opcjonalne]
    Przez ile pomnoy dan wsprzdn.
    Domylnie: 1
  f : float
    Przez ile pomnoy wszystkie wsprzdne.
Przykady:
  ScaleTexCoords m1 Mapping="-c" Factor=2
  ScaleTexCoords m1 Mapping="--c--" x=0.5 y=0.75

<t1> = LoadTexture FileName=<FileName>
Wczytuje tekstur z pliku. Format jest rozpoznawany po rozszerzeniu. Wspierane
formaty: BMP, JPG, TGA, PNG, DDS, PPM, DIB, HDR, PDM.
Parametry:
  FileName : string
    Nazwa pliku do wczytania. Moe by ze ciek.
Zwracane:
  t1 : texture
    Wczytana tekstura.

SaveTexture <t1> FileName=<FileName>
Zapisuje tekstur do pliku. Format jest rozpoznawany po rozszerzeniu. Wspierane
formaty: BMP, JPG, TGA, PNG, DDS, PPM, DIB, HDR, PDM.
Parametry:
  t1 : texture
    Tekstura do zapisania.
  FileName : string
    Nazwa dla pliku. Moe by ze ciek.

<t1> = LoadRaw
  FileName=<FileName>
  Width=<Width>
  Height=<Height>
  Bits=<Bits>
  Header=<Header>
  Stride=<Stride>
Wczytuje plik binarny jako tekstur. Powstaa tekstura bdzie w formacie
X8R8G8B8 i w odcieniach szaroci. Wczytywany jest tylko jeden kana na piksel.
Parametry:
  FileName : string
    Nazwa pliku do wczytania. Rozszerzenie jest obojtne.
  Width, Height : integer
    Szeroko i wysoko obrazka
  Bits : integer
    Rozmiar danych piksela w bajtach. Dopuszczalne wartoci: 8, 16, 32.
  Header : integer [opcjonalny]
    Liczba bajtw do pominicia na pocztku pliku.
    Domylnie: 0
  Stride : integer [opcjonalny]
    Rozmiar pisela w bajtach. Moe by wikszy ni Bits - wwczas pozostae
    bajty kadego piksela zostaj pominite.
    Domylnie rwny Bits.

<m1> = GenHeightmap <h1>
Generuje siatk z map wysokoci (terenu, ang. heightmap) na podstawie podanej
tekstury.
Parametry:
  t1 : texture
    Teksura wejciowa
Zwracane:
  m1 : mesh
    Siatka wyjciowa
Opis:
- Tekstura wejciowa musi by w formacie X8R8G8B8 lub A8R8G8B8.
- Jako wysoko pobierana jest warto koloru czerwonego.
- Siatka wyjciowa bdzie miaa indeksy w formacie 16-bitowym, a wierzchoki
  w formacie "XN2".
- Wsprzdne bd leay w przedziale:
  X = 0 .. szeroko tekstury
  Z = 0 .. wysoko tekstury
  Y = 0 .. 1
- Wsprzdne tekstury bd rwne wsprzdnym X i Z.


Predefiniowane zmienne
================================================================================

Zmienne odpowiadajce dodatkowym parametrom przekazanym do programu to kolejno:

  Arg0, Arg1, ...


Format wierzchoka FVF
================================================================================

To acuch opisujcy pola, z jakich skada si kady wierzchoek siatki.
Znaczenie poszczeglnych znakw:

X - XYZ
W - XYZW
R - XYZRHW
a - XYZB1
b - XYZB2
c - XYZB3
d - XYZB4
e - XYZB5
N - NORMAL
P - PSIZE
D - DIFFUSE
S - SPECULAR
1 - TEXCOORDSIZE1(n)
2 - TEXCOORDSIZE2(n)
3 - TEXCOORDSIZE3(n)
4 - TEXCOORDSIZE4(n)
u - LASTBETA_UBYTE4
l - LASTBETA_D3DCOLOR

Na przykad typowy format wyglda tak: "XN2". Format z wektorami tangent i
binormal moe wyglda tak: "XN233".


acuch formatujcy
================================================================================

To acuch do ktrego w wybrane miejsca wstawione zostaj wartoci zmiennych.
Moe wystpowa tylko tam, gdzie oczekiwany jest acuch formatujcy - nie
dziaa w kadym acuchu! Przykadowy skrypt:

  v1 = Set "ala"
  v2 = Set False
  v3 = Set 12
  v = Format "zmienna1={v1} zmienna2={v2} zmienna3={v3}"
  Print v

Wypisze na wyjciu:

  zmienna1=ala zmienna2=false zmienna3=12

Jako acucha formatujcego mona uywa dowolnego acucha znakw i tylko
midzy nawiasami klamrowymi musz si znajdowa poprawne nazwy zmiennych. Podane
zmienna musz istnie i by typu prostego (liczba, acuch itp.).


Uyte zostay
================================================================================

- Microsoft Visual Studio 2005
- Microsoft DirectX SDK (August 2006)
- nVidia NVMeshMender

Ten program zawiera kod dostarczony przez firm NVIDIA.
This software contains source code provided by NVIDIA Corporation.
