HALF-LIFE PORTAL
Your Gate To Valve's Games www.hlportal.de
PORTAL
TEAM FORTRESS 2
MISC
PARTNER

TF2 Crafting

Special Artworks by
Hayungs

Link us:
HL PORTAL

Support us:


HLPortal
auf Facebook

›› Willkommen!   ›› 96.289.584 Visits   ›› 18.316 registrierte User   ›› 25 Besucher online (0 auf dieser Seite)
    NEWS 

Editing

Modder baut Ingame-Shader-Editor

19.07.2011 | 00:01 Uhr | von Trineas
10.964 Hits
23 Kommentare
1 viewing
Regelmäßige Half-Life Portal-Leser können sich vielleicht noch an ein Video erinnern, das wir euch Ende letzten Jahres präsentieren konnten, das unter anderem einen dynamischen Tag- / Nachtwechsel in einer Source-Mod zeigte. Vom selben Hobby-Entwickler stammt ein soeben veröffentlichtes Tool, das schlicht mit dem Namen Source Shader Editor bezeichnet wird. Es ist ein Werkzeug, das anderen Mod-Erstellern die Möglichkeit bietet selbst eigene Shader zu kreieren. Das Präsentationsvideo dürfte für Laien deshalb wohl nicht so spektakulär anzusehen sein wie sein letztes, es zeigt allerdings, wie ein Shader im Spiel und in Echtzeit zusammengebaut werden kann.

Doch was ist das eigentlich? Shader sind kleine Programme die von der Grafikkarte ausgeführt werden und damit die Berechnung des Bildes beeinflussen. Einer der bekanntesten Shader im Computerspielen ist etwa Bumpmapping, der einer Oberfläche zusätzliche Struktur verleihen kann. Diese Shader müssen von Programmierern geschrieben und optimiert werden, mit dem nun vorgestellten Editor können sie, entsprechendes Hintergrundwissen vorausgesetzt, "einfach" zusammengeklickt werden. Nach jeder Veränderung werden diese in Echtzeit kompiliert und können direkt im Spiel verwendet und angesehen werden, wie die zweite Hälfte des Videos zeigt:


Kommentare (23)
Kommentar schreiben | Erweiterten Kommentar schreiben | Kommentare im Forum Seiten (2):  « 1 [2]


# 21
darkinsanity
ON
Zitat:
Original von ultio

Zitat:
Original von darkinsanity

Das ist aber vermutlich eher ein Material-Editor, denn dieser Verzerrungseffekt geht nicht allein nur mit Shadern, da braucht man "Input" von der CPU.


Wenn du dir das Teil mal herunterlädst, wirst du sehen, dass es sich dabei nicht um einen Material-Editor handelt. Der Editor erlaubt direktes Editieren von HLSL-Shadern, er erzeugt HLSL-Quellcode und kompiliert diesen anschließend. Außerdem kann man Shader ohne "CPU-Input", wie du ihn nennst, überhaupt gar nicht anwenden, der "Verzerrungseffekt" ist da keine Besonderheit oder Ausnahme, ich weiß gar nicht, wie du darauf kommst.


Wie ich darauf komme? Ich weiß es. Dafür hat man VBOs eingeführt. Wenn du nämlich jeden Vertex einzeln über den Systembus schicken würdest hättest du keine so hohen Framerates.
Das man trotzdem quasi "Steuerbefehle" braucht steht außer Frage.

Was ich meinte war, dass dieser Shader wohl eine Art Zeit-Input braucht, damit das ganze auch gleichmäßig aussieht. Und wenn der Editor eben die Möglichkeit hätte, so etwas bereitzustellen, wäre es auch sinnvoll, das speichern zu können, und damit ginge es über einen reinen Shader-Editor hinaus.
Post 24.07.2011, 13:17 Uhr
# 22
biohazard_90
ON
Zitat:
Original von darkinsanity

Wie ich darauf komme? Ich weiß es. Dafür hat man VBOs eingeführt. Wenn du nämlich jeden Vertex einzeln über den Systembus schicken würdest hättest du keine so hohen Framerates.
Das man trotzdem quasi "Steuerbefehle" braucht steht außer Frage.


Du weisst gar nichts, anscheinend ist dir nicht mal klar, dass es sich hier um Directx handelt.

Zitat:
Original von darkinsanity

Was ich meinte war, dass dieser Shader wohl eine Art Zeit-Input braucht, damit das ganze auch gleichmäßig aussieht. Und wenn der Editor eben die Möglichkeit hätte, so etwas bereitzustellen, wäre es auch sinnvoll, das speichern zu können, und damit ginge es über einen reinen Shader-Editor hinaus.


Selbstverständlicherweise muss man die 'Zeit' manuell zum Shader über Registers schicken, wie stellst du dir das denn sonst vor? Das hat rein gar nichts mit einem Material Editor zu tun, so etwas gibt es schon seit Valves Ingame-Tools eingeführt wurden, sieh ihn dir an.

Der Editor kompiliert Shader und erstellt eine Runtime-Implementation, vmts werden davon nicht berührt, du liegst also falsch. Und was bitte meinst du mit 'speichern'? Etwa welches HLSL-Register die Zeitinformation erwartet etc? Das ist normalerweise hardcoded in einer Shader DLL von Source, hat auch nichts mit Materials zu tun.
Post 24.07.2011, 17:43 Uhr
# 23
darkinsanity
ON
-.-
Selbstverständlich ist mir klar, dass es sich bei der WIndows-Version der Source Engine um DirectX handelt. Ich habe nie etwas gegenteiliges behauptet.
Aber auch Direct3D hat ein entsprechendes Äquivalent zu Vertex Buffer Objects, da du ohne sie eben keine entsprechende Performance bekommst. Die Renderperformance durch unnötige System Bus Zugriffe zu beschränken, wäre absolut bescheuert und würde die GPU unnötig ausbremsen.
Aktuelle Spiele (Crysis usw.) schicken nämlich ganz sicher nicht alle Vertices pro frame über den System Bus. Das würde nämlich nicht nur andere Hardware ausbremsen (da der System Bus eben die Schnittstelle zwischen Hardware und CPU ist), sondern auch den VRAM unnütz machen (bzw. auf Texturdaten und Shader beschränken).

Die Zeit über "Register" "schicken"? Du erzählst Unsinn, zwischen CPU <-> System Bus <-> GraKa läuft nichts über Register. Unten mehr dazu.

Da du offenbar nicht im Geringsten verstehst, wovon ich rede, werde ich es dir nochmal erklären:
Wenn du einen Shader hast, der eine entsprechende Timing-Variable erwartet, muss er die darin erwarteten Daten auch irgendwie erhalten. Du musst also irgendwie speichern, dass er diese Daten in dieser Variable erwartet. Die Angabe, welche Dinge ein Shader erwartet (auch welche Texturen usw.), ist allgemein ein Teil einer Material-Definition.
Ob und wie die Source-Engine das ablegt weiß ich nicht - ich habe auch nie behauptet, dass eine VMT davon angetastet werden würde. Möglicherweise definiert sie vorab die Schnittstellen - ich habe mich nicht mit der Engine beschäftigt, daher kann ich das nicht beurteilen.

Noch einige Anmerkungen:
"Runtime-Implementation" - Bist du sicher, dass du weißt, was du da sagst? Shader können vorab zu Bytecode kompiliert werden, der dann vom Treiber nochmals an die GraKa angepasst wird, da die unterschiedlichen GPUs nicht die gleichen Opcodes haben. Mit "Runtime" hat das nix zu tun.
"HLSL-Register" - So bezeichnet MS in D3D das, was unter OpenGL uniforms sind. Das sind keine echten Register - der Begriff bezeichnet einfach nur eine Variable, die von "außen" mit Daten gefüllt wird. Und "über" Register "geschickt" wird schonmal gar nichts. Die Daten werden schlussendlich nur hineingelegt.

Vielleicht solltest du erst einmal die Posts anderer lesen und verstehen bevor du solche Kommentare schreibst.

"Du weisst gar nichts" - q.e.d.
Post 03.09.2011, 20:48 Uhr


Seiten (2):  « 1 [2]


Du musst dich einloggen, um Kommentare schreiben zu können

Du hast nicht die erforderlichen Rechte einen Kommentar zu schreiben.
Solltest du eine Account-Strafe haben, findest du nähere Informationen in deinem Profil unter Verwarnungen.


FB | Tw | YT | SC
LOGIN
User oder E-mail:


Passwort:


oder
Registrieren
Passwort vergessen?
OpenID-Login
UMFRAGE
Half-Life: Alyx in VR - was hälst du davon?
   
   
NEWSLETTER
   
E-Mail Adresse:
   

    USER ONLINE 
Insgesamt sind 25 Benutzer online. Davon sind 0 registriert:
    SITE OPTIONS 
- Zu Favoriten hinzufügen
- Als Startseite festlegen (IE only)
- Fehler auf dieser Seite?