Zusätzliche Daten an Vertex Shader übergeben (keine Konstanten)



  • Nein, ich will keine Konstanten setzen!

    Ich möchte zusätzliche Daten _pro_ Vertex!!



  • Hmm sry mein Fehler...
    nach langem suchen muss ich mutmaßen das es keine standard Lösung gibt. 😞



  • lassen sich da nich einfach welche zweckentfremden, wenn es schon keine generellen attribute gibt? wenn du sowieso die daten im shader selbst verarbeitest ist es doch eigentlich egal, ob du die dinger als 10. vertexfarbe oder was immer angibst?



  • Das prob ist die Register sind recht begrenzt und daher ist es schon bläd wenn man dann einen opfern muss. Also ich würde es mit einem 2. Stream machen.....



  • Nox schrieb:

    Das prob ist die Register sind recht begrenzt und daher ist es schon bläd wenn man dann einen opfern muss. Also ich würde es mit einem 2. Stream machen.....

    Die Sache mit dem 2. Stream hat den Nachteil des Performanceverlustes (siehe
    Thread vor ein paar Tagen in diesem Board), da die Grafikkarte dann wohl im
    Speicher die ganze Zeit die Position wechseln muss.

    Ich werde wohl erst einmal die zusätzlichen Daten in TEXCOORD reinschmeißen,
    denn ich hab in der DX SDK Doku noch dieses hier gefunden:

    The TEXCOORDS semantic can be used for user-defined fields (which don't have an existing semantic defined by Microsoft Direct3D®).

    Sollte trotzdem noch jemand einen Vorschlag haben: Immer her damit 😉

    Auf jeden Fall erst mal Danke für die Antworten.

    MfG,

    EnERgYzEr



  • also ich bin mir ziemlich sicher, dass es außer übers vertexformat und die konstanten keine weiteren möglichkeiten gibt, daten an den vertexshader zu übergeben...

    was genau willst du denn übergeben, vielleicht finden wir da eine lösung!?


  • Mod

    EnERgYzEr schrieb:

    Ich bin mir nicht sicher, ob es gut ist Usage-Typen für andere Zwecke zu
    "missbrauchen".

    genau so macht man das, auf ati karten sollen 256byte und auf manchen nvidia karten 1024byte pro vertex möglich sein.

    rapso->greets();



  • dot schrieb:

    also ich bin mir ziemlich sicher, dass es außer übers vertexformat und die konstanten keine weiteren möglichkeiten gibt, daten an den vertexshader zu übergeben...

    was genau willst du denn übergeben, vielleicht finden wir da eine lösung!?

    Es geht darum, dass ich ein LOD-Terrain habe. Jetzt möchte ich aber, dass
    zwischen den Detailstufen sauber gemorpht wird (hab das irgendwo gesehen
    also will ich das auch 😉 ).

    Den Algorithmus selbst habe ich fertig und wird wohl funktionieren. Allerdings
    brauch der Vertex Shader dazu zusätzlich zwei Angaben:

    1.) Zu welcher Detailsstufe gehört der Vertex
    2.) Was ist seine minimalste Position, wo der Vertex also fast mit dem übrigen
    Terrain verschmilzt und kurz davor ist vom LOD Algorithmus entfernt zu werden

    // Edit: hab rapsos Beitrag erst eben gelesen: Danke!



  • @rapso:

    Kann ich dann auch D3DDECLTYPE_FLOAT4 problemlos mit D3DDECLUSAGE_TEXCOORD
    verbinden? Oder geht das nur mit FLOAT2?



  • hmm da man ja im shader diese Daten in einen v Register läd dürfte das gehen...


  • Mod

    sollte gehen. aber es wäre vielleicht günstiger wenn du versuchst die daten zu "packen". also z.b. normalen nur in D3DCOLOR zu speichern usw. weil es zwar möglich ist riesige vertices zu haben, aber das heißt ja noch lange nicht dass es schnell ist 😉

    rapso->greets();


Anmelden zum Antworten