Terrain
Modu terenu
Wersja 1.0 skoczona 21.09.2007
The Final Quest, Adam Sawicki


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

Modu tworz pliki Terrain.hpp i Terrain.cpp.
Klasa Terrain jest rodzajem zasobu Direct3D.

Skadnia tekstowa definicji zasobu:

Terrain "NAZWA" [STAN]
	CX=UINT CZ=UINT VertexDistance=FLOAT MinY=FLOAT MaxY=FLOAT,
	HeightmapFileName="NAZWA_PLIKU"
	FormDescFileName="NAZWA_PLIKU"
	FormMapFileName="NAZWA_PLIKU"
	CacheFileName="NAZWA_PLIKU"

Gdzie:
- CX, CZ - rozmiar terenu w quadach.
  Nie musi by potg dwjki.
  Wierzchokw bdzie w kad stron o jeden wicej.
- VertexDistance - odlego midzy wierzchokami, w przestrzeni wiata.
- MinY, MaxY - zakres wysokoci we wsprzdnych wiata

- HeightmapFileName - nazwa pliku z map wysokoci
Obsugiwane formaty:
> Wszystkie graficzne obsugiwane przez D3DX, ale tylko w formacie 24 lub 32
  bpp. Brany pod uwag jest kolor R. Rozmiar moe mie dowolny, mniejszy lub
  wikszy ni zadeklarowane CX i CZ, chocia zalecane jest (CX+1) x (CZ+1).
  Reszta jest wypeniana zerami.
> Format RAW, bez nagwka, 8 bpp
  Musi mie rozmiar (CX+1) x (CZ+1).

- FormDescFileName
Plik tekstowy z definicj form terenu. Patrz niej.

- FormMapFileName - nazwa pliku z map form terenu
Tekstura o wymiarach dowolnych (ale zalecane (CX+1) x (CZ+1)), w dowolnym
formacie graficznym. Kolory pikseli wyznaczaj formy terenu w miejscu danego
wierzchoka. Kolory nie musz by dokadnie takie jak w zdefiniowane w
FormDescFileName, mog by przyblione, ale jeli bd dokadne to szybciej si
wczytuje. Ponadto formy terenu s rozmywane.

- CacheFileName
Nazwa pliku tymczasowego na teren. Bdzie wygenerowany przy pierwszym uyciu i
pniej wczytywany aby przyspieszy adowanie danego zasobu terenu. Zmiany w
plikach Heightmap, FormMap, FormDesc automatycznie go uniwaniaj (sprawdzana
jest data modyfikacji pliku), ale zmiany w kodzie lub w parametrach z jakimi
zdefiniowany jest zasb nie, wic wtedy trzeba go skasowa.


Format pliku z opisem form terenu - *.DAT
================================================================================

TerrainForms 1      to jest nagwek
0xFFFFFF simple {   kolor biay to pojedyncza tekstura
  "Snow"            nazwa zasobu tekstury (wymagana)
  Tag=1025          dodatkowa, wasna liczba skojarzona z terenem (opcjonalna)
  TexScale=0.5      skalowanie tekstury (opcjonalne, typu float)
}
0xFF0000 complex {  kolor czerwony to forma zoona
  0 {               forma terenu dla wysokoci wikszej lub rwnej 0 i mniejszej od nastpnej (pierwsza musi wynosi 0)
   "Grass"          dane jak wyej
    Tag=0
  }
  64 {               forma terenu dla wysokoci wikszej lub rwnej 64
   "Sand"
  }
}


Format pliku binarnego z cache terenu
================================================================================

TFQ_TERRAIN_10 (14 znakw) - nagwek
Dla kolejnych patchw po Z, X:
- uint TerrainForm[TERRAIN_FORMS_PER_PATCH]
  Indeksy form terenu uywanych w tym patchu.
- VERTEX Vertices[PATCH_VERTEX_COUNT]
  Wierzchoki.

VERTEX:
- float3 Pos - pozycja
- float3 Normal - normalna
- uint Diffuse - wagi form terenu (z wyjtkiem piewszej) zapisane jako skadowe A,R,G
  Skadowa B=0


Zajto pamici
================================================================================

Rozmiar wierzchoka: 28 B
Rozmiar heightmapy    Przybliony rozmiar w pamici (niedoszacowany)
   32                   28 KB
   64                  112 KB
  128                  448 KB
  256                  1.7 MB
  512                    7 MB
 1024                   28 MB
 2048                  112 MB
