ZFX
ZFX Neu
Home
Community
Neueste Posts
Chat
FAQ
IOTW
Tutorials
Bücher
zfxCON
ZFXCE
Mathlib
ASSIMP
NES
Wir über uns
Impressum
Regeln
Suchen
Mitgliederliste
Membername:
Passwort:
Besucher:
4442160
Jetzt (Chat):
14 (0)
Mitglieder:
5239
Themen:
24223
Nachrichten:
234554
Neuestes Mitglied:
-insane-

ZFX
Coding-Foren
Algorithmen und Datenstrukturen
"Pretransformed Verts" @ v.s.1.1 - vs - Untransformed Vertices @ soft.v.s.
Normal
AutorThema
Richard Schubert Offline
DX-Berater


Registriert seit:
05.12.2002

Berlin
85557876 rs@directx9.de
"Pretransformed Verts" @ v.s.1.1 - vs - Untransformed Vertices @ soft.v.s.Nach oben.

jo das is auch schon die frage... was ist schneller?

für eine spriteengine könnte man ja eben pretransformed vertices nehmen und die dann in nen schnellen statischen VB packen und dann mit dem vs im bild bewegen. also muss man noch ne matrix, Color und Texturcoords zum vertexshader rüberschicken.

jetzt ist die frage ob das mit nem dynamischen vb in dem ich vorher direkt alles verändere schneller wäre, da ich ja keine matrizen und zeugs mehr zum vertexshader schicken muss?
04.07.2003, 09:57:42 Uhr
DirectX 10
DarkAngel Offline
ZFX'ler


Registriert seit:
12.05.2002

Deutschland
91217570
Re: "Pretransformed Verts" @ v.s.1.1 - vs - Untransformed Vertices @ soft.v.s.Nach oben.
Wenn du dafür einen extra Vertexshader-Wechsel sparen kannst, könnte das mit dem dynamischen VB durchaus schneller sein. Immer dran denken, ein VS-Change ist am teuersten, besonders bei langen Shadern.
04.07.2003, 12:03:23 Uhr
Richard Schubert Offline
DX-Berater


Registriert seit:
05.12.2002

Berlin
85557876 rs@directx9.de
Re: "Pretransformed Verts" @ v.s.1.1 - vs - Untransformed Vertices @ soft.v.s.Nach oben.

aber wenn ich den shader wechsle, dann isses doch egal ob es nen hardware oder software shader ist.
oder sind softwareshaderwechsel etwa schneller?
04.07.2003, 13:37:46 Uhr
DirectX 10
DarkAngel Offline
ZFX'ler


Registriert seit:
12.05.2002

Deutschland
91217570
Re: "Pretransformed Verts" @ v.s.1.1 - vs - Untransformed Vertices @ soft.v.s.Nach oben.
Musst du nicht für Softwareshader auch SW_VERTEXPROCESSING aktivieren?
04.07.2003, 16:44:54 Uhr
Richard Schubert Offline
DX-Berater


Registriert seit:
05.12.2002

Berlin
85557876 rs@directx9.de
Re: "Pretransformed Verts" @ v.s.1.1 - vs - Untransformed Vertices @ soft.v.s.Nach oben.

ne ich meine wenn ich den shader ändere, entweder mit Hardwareshader :

(DX9) D3DDevice->SetVertexShader(bla und muh)

oder eben SoftwareShader:

(DX9) D3DDevice->SetFVF(bla und muh)

(DX9) D3DDevice->SetTextureStage(bla und muh); //nur das ganze x4 oder sonstwieoft

und das ist im grunde das ähnlich lahm oder?
04.07.2003, 16:57:27 Uhr
DirectX 10
CAAhab Offline
ZFX'ler


Registriert seit:
25.02.2002

Bayern
Re: "Pretransformed Verts" @ v.s.1.1 - vs - Untransformed Vertices @ soft.v.s.Nach oben.
Hmm, interessante Frage.

Generell sollte man sich überlegen ob die eingesparten Operationen im HardwareShader, für das Bewegen, im SoftwareModus dann von der CPU dementsprechend schneller sind oder nicht.
Ich denke mal das gerade diese Vektormultiplikationen von der GPU deutlich schneller bearbeitet werden können und da das ganze ja auf Vertexebene ist und nicht im Pixelbereich sollte das ja nicht so schlim sein.

Gruß,
CAAhab
04.07.2003, 21:31:55 Uhr
Richard Schubert Offline
DX-Berater


Registriert seit:
05.12.2002

Berlin
85557876 rs@directx9.de
Re: "Pretransformed Verts" @ v.s.1.1 - vs - Untransformed Vertices @ soft.v.s.Nach oben.

sicherlich ist diese multiplikationin der GPU schneller, aber man muss diese matrix ja auch erstmal erstellen. und dafür geht schon nen bisserl arbeit drauf, die vorher von der CPU geleistet wird.

so ist eher die frage wenn ich die XYZRHW vertices nehme, dann macht alles TnL für mich in HW, aber ich müsste den VB locken, was ich mit HW Shadern wieder nicht müsste. da kann ich direkt die matrix und colorwerte an den shader schicken und der macht ja sowie so das was er muss.

mhh.. ich glaub damit hab ich ja schon meine frage selbst beantwortet.... *vortrefflich*

das hochladen von Constant-Registern zum shader is ja affenschnell, also kann ich das ruhig so machen.
04.07.2003, 22:19:06 Uhr
DirectX 10
DarkAngel Offline
ZFX'ler


Registriert seit:
12.05.2002

Deutschland
91217570
Re: "Pretransformed Verts" @ v.s.1.1 - vs - Untransformed Vertices @ soft.v.s.Nach oben.
Aso, du solltest das aber nicht Software Shader nennen. Sag lieber Fixed Function Pipeline.

Nochmal zum Problem: ich habe mir einen Shader geschrieben, der TL-Sprites verschiebt und rotiert. Nützlich für einen Tacho (zeiger rotation...). Das ganze passiert mit drei Instructions und drei Constant Registern. Ich gebe keine Matrix an, nur rotation und Verschiebung.
05.07.2003, 12:51:03 Uhr
Richard Schubert Offline
DX-Berater


Registriert seit:
05.12.2002

Berlin
85557876 rs@directx9.de
Re: "Pretransformed Verts" @ v.s.1.1 - vs - Untransformed Vertices @ soft.v.s.Nach oben.

jo so ungefähr hab ich das jetzt auch nur das ich noch ne komplette matrix rüberschicke.
aber wie machsten das? der vs1.1. hat doch noch karkein cos oder sin, wie berechnest du denn dann die rotation?
05.07.2003, 13:15:48 Uhr
DirectX 10
DarkAngel Offline
ZFX'ler


Registriert seit:
12.05.2002

Deutschland
91217570
Re: "Pretransformed Verts" @ v.s.1.1 - vs - Untransformed Vertices @ soft.v.s.Nach oben.
Den Sinus/Cosinus berechne ich vorher auf der CPU einmal statt für jeden Vertex im Shader.
05.07.2003, 13:54:44 Uhr
Richard Schubert Offline
DX-Berater


Registriert seit:
05.12.2002

Berlin
85557876 rs@directx9.de
Re: "Pretransformed Verts" @ v.s.1.1 - vs - Untransformed Vertices @ soft.v.s.Nach oben.

mh... das funzt aber nur bedingt gut oder?
wenn ich alle vertices um nen 2dpunkt rotieren lasse, dann funz das so aber net oder?

ich machs mit ner ganzen 4x4matrix und des funzt ziemlich gut...
05.07.2003, 15:03:11 Uhr
DirectX 10
unknown Offline
ZFX'ler


Registriert seit:
01.04.2003

Baden-Württemberg
Re: "Pretransformed Verts" @ v.s.1.1 - vs - Untransformed Vertices @ soft.v.s.Nach oben.
Welche Art man wählt hängt von den Anforderungen ab!
Wenn du ein *richtiges* Spiel schreiben willst, musst du viele Dinge berücksichtigen, wie Collision Detecting, Physik, KI, Skripting System, etc. Diese Dinge werden ausschliesslich von der CPU behandelt. Deshalb wäre es ratsam, die CPU zu entlasten, und möglichst viel der GPU zu überlassen.
Wenn du aber nur eine billige Grafikdemo schreiben willst, wo man einfach nur mit einer läppischen Kamera über ein Terrain fliegen kann, ist es nahezu egal.
Generell gilt: Jeder Chip ob GPU, SPU, CPU etc ist spezialisiert für die jeweilige Tätigkeit. Wenn du optimale Performance haben willst, solltest du alle möglichst ohne Stalls parallel laufen lassen und jeden Chip dahingehen auslasten, wofür er gedacht ist!
Also überlass das Transformieren, Rendern, Lighting, etc. der GPU. Überlasse das Soundmixen, etc der SPU und benutze die CPU für alle anderen Dinge wie KI,Skripting,etc.
05.07.2003, 15:50:51 Uhr
DarkAngel Offline
ZFX'ler


Registriert seit:
12.05.2002

Deutschland
91217570
Re: "Pretransformed Verts" @ v.s.1.1 - vs - Untransformed Vertices @ soft.v.s.Nach oben.
Zitat:

mh... das funzt aber nur bedingt gut oder?
wenn ich alle vertices um nen 2dpunkt rotieren lasse, dann funz das so aber net oder?

ich machs mit ner ganzen 4x4matrix und des funzt ziemlich gut...


Also, ich habe nur bedingt transformierte Vertices wenn man so will. Die bilden meinetwegen ein Quad, allerdings noch nicht in Screencoordinaten. Die Vertices befinden sich im lokalen Coord-System. Über den Shader werden sie rotiert (um den 2d-Mittelpunkt) und dann an die gewünschte Stelle verschoben.
05.07.2003, 16:49:44 Uhr
Richard Schubert Offline
DX-Berater


Registriert seit:
05.12.2002

Berlin
85557876 rs@directx9.de
Re: "Pretransformed Verts" @ v.s.1.1 - vs - Untransformed Vertices @ soft.v.s.Nach oben.

Jokay, ich bastels jetz mal mit Zerbis Tut für DX9 um
07.07.2003, 20:22:10 Uhr
DirectX 10
Normal


ZFX Community Software, Version 0.9.1
Copyright 2002-2003 by Steffen Engel