Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

BlazeX

Alter Hase

  • »BlazeX« ist der Autor dieses Themas

Beiträge: 478

Wohnort: DD

Beruf: Maschinenbau-Student

  • Private Nachricht senden

1

25.10.2008, 21:57

Instancing mit mehreren Materialien?

Hi Leute!
Ich hab mal den msdn-Artikel über Instancing überflogen.

Beim Instancing wird doch für jedes einzelne Mesh ein Vertex in einem 2. Stream benutzt um die World Matrix zu speichern.
Hinzu kommt im msdn-Beispiel die diffuse Farbe.

Wenn jedes Objekt eine andere Farbe hat geht das.
Aber was ist wenn noch Glanzeigenschaften, etc. dazukommen. Eben die typischen Material-Eigenschaften.

Bekomme ich ein ganzes Material in einem Vertex unter? Muss ich quetschen?
Oder gibt es da mitlerweile modernere Methoden für sowas?

2

25.10.2008, 22:23

Imo kannst du quasi beliebiges Zeug rein packen. Ich kenne ein Beispiel, in dem ein paar Tausend animeirte Zwerge per Instancing gerendert werden, dabei wurde die Animation in einer Textur gespeichert.
Das ist ja das schöne bei Shadern, es heißt vielleicht noch Vertex, oder Textur, aber wie die Daten dadrin interpretiert werden ist ganz alleine deine Sache.
Lieber dumm fragen, als dumm bleiben!

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

3

25.10.2008, 22:43

du kannst in den zweiten stream beliebige daten neben der position rein tun, so mache ich das zum beispiel auch in meiner engine. der zweite stream hat dann position, farben, glanzeigenschafte usw... drin.

so sieht das ganze dann so ungefähr aus(älterer version)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
struct HawkModelInstanceStreamData
{
    // Variables

    hawk::math::HVec3Float      scaling;
    hawk::math::HVec4Float      rotationFirstColumnPositionX;
    hawk::math::HVec4Float      rotationSecondColumnPositionY;
    hawk::math::HVec4Float      rotationThirdColumnPositionZ;
    hawk::math::HVec4Float      ambientMaterial;
    hawk::math::HVec4Float      diffuseMaterial;
    hawk::math::HVec4Float      specularMaterial;
    long                        instanceID;

    // Constructor

    HawkModelInstanceStreamData()
    {
        instanceID              = 0;
    }
};

BlazeX

Alter Hase

  • »BlazeX« ist der Autor dieses Themas

Beiträge: 478

Wohnort: DD

Beruf: Maschinenbau-Student

  • Private Nachricht senden

4

26.10.2008, 13:54

Danke euch 2en!

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

5

26.10.2008, 14:08

wir stehen bei weiteren frage/problemen gerne zu verfügung ;)

Werbeanzeige