Terrain Tutorial


  • Mod

    spong3bob schrieb:

    ich werds wahrscheinlich mit mega-texturen machen, und im editor dann statt tiles sowas wie pinsel machen, die dann die textur bepinseln...

    ich wollte dich nicht ueberreden das zu machen, war nur ein vorschlag wie man es machen _kann_ ;).

    also ich schaffs jetzt eine große textur auf mein terrain zu laden, aber was is dann der nächste schritt? noch schaut das ganze recht kacke aus..

    definiere 'kacke', kacke hat viele aromen ;).

    an deiner stelle wuerde ich mir als erstes sehr genau durchlesen was megatexturing ist.

    http://www.vterrain.org/LOD/Papers/
    da hast du einiges zur auswahl 😉

    Ein verwandtes verfahren ist "Clipmaps", hier sehr detailiert beschrieben:
    http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter02.html



  • So.. ich bin jetzt denk ich auf dem punkt angekommen, wo die Shader kommen..
    Ich hab jetzt schon ewig im internet herumgesurft, aber noch immer nicht herausgefunden wie ich diese Shader in meinem projekt verwenden kann...

    HLSL is ja glaub ich das was ich brauch, aber ich hab kA, wie ich das jetzt einbind (wenn ich das überhaupt muss) bzw wie ich irgendwas damit mach

    gibts da irgendwelche tollen tutorials dafür oder so (am besten mit source-code)



  • HLWL, kenne ich nicht!

    Menst du vieleicht HLSL oder GLSL? Benutzt du DX oder OGL?



  • habs eh schon ausgebessert... was HLSL (Rechtschreibfehler :-/)

    ich verwend DX (wie du dir jetzt vll denken kannst..)



  • Ich hatte eine ganze liste von guten Tutorials, habe aber leider formatC gemacht, jetzt sind die weg, aber spontan finde ich grad:

    http://www.riemers.net/eng/Tutorials/DirectX/Csharp/series3.php
    http://www.neatware.com/lbstudio/web/hlsl.html
    http://blogs.microsoft.co.il/blogs/tamir/archive/2008/06/17/hlsl-pixel-shader-effects-tutorial.aspx

    Die 3 Tuts waren bei Google schon auf der ersten Seite...

    Um dir den Anfang en wenig zu vereinfachen:

    Um Texturen über HLSL zu mappen, musst du Vertex und Pixel Shader verwenden! Beide kannst du zusammenverwenden als währe es eine programiersprache (was es ja auch ist). Vertexshader braucht man um dem Shader, bzw der Grafikkarte zu sagen wo er /sie eigentlich zeichnen soll, wie sie es verzerren muss etc, das ganze macht dann auch die Graa so gut wie von alleine, also keine bange. Pixelshader sind wie der name schon sagt, um mit Pixeln zu hantieren. Das brauchst du zum beispiel um eine Textur auf den Quad zu zeichnen, den ein Quad wo du zeichnest besteht widerum ja auch aus Pixeln auf dem Bildschirm.

    Um eine Textur zu mappen, musst du wissen wie man bei Shadern mit Texturen, und Positionen umgeht, mehr nicht! Ich habe mir ein Multytexturing Shader mal geschrieben, das waren vieleicht 50 zeilen Code! Eine einfache textur zu mappen werden vieleicht maximal 30 zeilen Code!

    Ansonsten:

    Du bst nicht gezwungen um ine Textur zu zeichnen hader zu verwenden, du kannst doch die standart funktionen von DX benutzen:

    http://www.directxtutorial.com/Tutorial9/B-Direct3DBasics/dx9B8.aspx


  • Mod

    spong3bob schrieb:

    So.. ich bin jetzt denk ich auf dem punkt angekommen, wo die Shader kommen..
    Ich hab jetzt schon ewig im internet herumgesurft, aber noch immer nicht herausgefunden wie ich diese Shader in meinem projekt verwenden kann...

    HLSL is ja glaub ich das was ich brauch, aber ich hab kA, wie ich das jetzt einbind (wenn ich das überhaupt muss) bzw wie ich irgendwas damit mach

    gibts da irgendwelche tollen tutorials dafür oder so (am besten mit source-code)

    im dx sdk sind minimal-samples dazu die das auf sehr einfache weise zeigen. in der doku ist wohl auch ne schritt fuer schritt anleitung die sehr einfach zu verstehen ist.



  • ok, ich hab einfache shader schon geschrieben, aber ich weiß jetzt nicht, wie ich mir die Normal ausrechne... da müsst ich doch die vertices rundherum anschaun, wie hoch die sind und dann ausrechnen wie die Normale stehen muss, oder?


  • Mod

    spong3bob schrieb:

    ok, ich hab einfache shader schon geschrieben, aber ich weiß jetzt nicht, wie ich mir die Normal ausrechne... da müsst ich doch die vertices rundherum anschaun, wie hoch die sind und dann ausrechnen wie die Normale stehen muss, oder?

    im prinzip:ja
    aaaber, es gibt viele viele tutorials dafuer udn selbst die forensuche hier sollte dir alle antworten liefern, ich bin mir sicher wir hatten die frage recht oft 😉



  • also ich bin grad am versuch das zu verstehen:

    http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter02.html

    hat das irgendwer schon eingebaut, weil ich weiß ned so recht, wie ich das machen soll...

    so wie ich das versteh brauch ich:

    1 Vertex/Index Buffer für die grauen mxm felder
    1 Vertex/Index Buffer für die grünen felder
    4 Vertex, 1 Index Buffer für das L (blau) (warum da auf einmal 4 buffer und nicht auch nur 1, den man dann dreht??)
    für die "outer degenerate Triangles" wie sie die nennen werd ich dann auch noch mind einen buffer brauchen denk ich??



  • ich bin schonwieder weiter...

    neue frage: kann man die höhendaten aus einer heightmap direkt im shader auslesen (sozusagen als textur)


Anmelden zum Antworten