Ich habe auch in den UDK-Foren danach gefragt , hatte aber nicht viel Glück, Antworten zu erhalten. Grundsätzlich habe ich einige Erfahrungen mit UT3-Modding, aber ich fange gerade erst mit dem UDK an und habe ein paar Fragen zum Grad der Kontrolle über das Rendering, das Sie haben.
- Ich stelle fest, dass es trotz des Vorhandenseins mehrerer HLSL-Shader-Dateien in der UDK-Distribution (mit der Erweiterung .usf) keine Möglichkeit gibt, eigene Shader außerhalb des Material-Editors zu implementieren. ist das richtig? (Ich kenne den benutzerdefinierten Knoten im Materialeditor, aber er ist sehr begrenzt und für alle außer der einfachsten Logik unhandlich.)
- Ich verstehe, dass UE3 verzögertes Rendern verwendet. Ich weiß, dass Sie in einem Nachprozess auf die Farbe und Tiefe des aktuellen Pixels zugreifen können. Gibt es jedoch eine Möglichkeit, allgemeiner auf diese oder andere G-Puffer-Attribute zuzugreifen? (Normalen, Position, Werte an benachbarten Pixeln ...)
- Werden Renderziele allgemein unterstützt? Wäre es aus Gründen der Argumentation möglich, eine Kamera so einzurichten, dass die Tiefe aus einem alternativen POV gerendert wird, und dann beim Rendern der Hauptansicht Tiefenvergleiche im Stil einer Schattenkarte durchzuführen?
- Ist es möglich, alle Materialien auf dem Client (en masse) zu überschreiben, z. B. diejenigen, die in der aktuellen Ebene für das Gelände oder die BSP-Geometrie verwendet werden? (Zur Implementierung alternativer Bildverarbeitungsmodi und ähnlicher Dinge.)
Die mit dem UDK gelieferten Tools sind natürlich sehr ausgefeilt, und es ist schwer, Free Scaleform und SpeedTree zu übertreffen, aber ich fange an zu denken, dass die Plattform für jeden, der über Drag & Drop hinausgehen möchte, schrecklich geeignet ist Materialbearbeitung in Bezug auf Grafiken. Ich habe das Gefühl, dass ich zum Beispiel viel mehr Kontrolle über das Rendern in einem Source Engine Mod habe.
Antworten:
Ich sehe ernsthaft nicht viel, was mit MaterialEditor nicht möglich wäre. Sie können fast alles tun, was Sie brauchen. Man könnte argumentieren, dass der Material-Editor keinen optimalen Shader-Code generiert, aber der Shader-Compiler leistet hier hervorragende Arbeit bei der Optimierung des automatisch generierten Codes. Also probieren Sie es einfach aus. Viele AAA-Spiele wurden mit dieser Toolchain entwickelt und viele davon funktionierten nur vollständig mit Materialien, die mit diesem Editor erstellt wurden. Aber um Ihre Frage zu beantworten: Nein, das ist mit dem einfachen UDK nicht möglich.
UE3 verwendet kein verzögertes Rendern. Das Shadowing-System verwendet eine Art verzögerte Technik über dem Forward-Renderer. Die Renderpipeline wird jedoch überhaupt nicht zurückgestellt, sodass kein G-Buffer oder ähnliches verfügbar ist. Weitere Informationen hierzu: http://www.unrealtechnology.com/Downloads/Slides/xfest-gfx.ppt Leider konnte ich mit einer schnellen Suche keine andere öffentlich verfügbare Dokumentation der Interna von UE3 finden, daher hoffe ich auf diese Präsentation gibt Ihnen einen guten Überblick. Der Zugriff auf benachbarte Pixel ist sofort möglich. Schauen Sie sich den DOF- oder Bloom-Posteffekt an. Ich bin nicht sicher, ob dies im Code oder über den Material-Editor implementiert ist, aber wenn es im MaterialEditor ist, sollten Sie in der Lage sein, ein funktionierendes Beispiel dafür zu finden.
Sie sollten sich die SceneCaptureActors ansehen. Diese können für das Rendern von Texturen verwendet werden, aber ich bin mir nicht sicher, wie viele Optimierungsmöglichkeiten Sie für die sofort einsatzbereiten UDK-Schauspieler haben. Sie können diese gerenderte Textur dann in einem Material verwenden. Leider wird Ihr spezieller Fall (Rendern der Tiefe) im UDK nicht sofort unterstützt.
Nein, dies ist nicht möglich, aber Sie können eine Problemumgehung durchführen, indem Sie Materialparameter verwenden, die im Material behandelt werden (ein Material würde also den Shader für beide Modi enthalten). Sie können dann die Materialparameter über Kismet ändern, sodass Sie genau das tun können, was Sie benötigen.
Meiner Meinung nach gibt es nicht viel, was man mit dem UE3-Rendering nicht machen kann. Die Drag-and-Drop-Materialbearbeitung und das Level-Editor-zentrierte Design sind möglicherweise nicht das, was ein Programmierer erwartet, aber genau das, was Content-Leute brauchen. Dies hat sich am Ende des Tages als wirklich gute Lösung erwiesen. Dies setzt natürlich voraus, dass die Inhaltsersteller das System und seine Einschränkungen kennen.
Probieren Sie es einfach aus und versuchen Sie, mit den von der UDK bereitgestellten Tools das zu erstellen, was Sie benötigen. Ich bin sehr sicher, dass Sie bekommen können, was Sie wollen.
quelle
Mir wurde klar, dass ich dies wahrscheinlich aktualisieren sollte, falls jemand, der dies liest, es versäumt hat, sich durch den Thread in den UDK-Foren zu klicken. Ein Moderator sagte mir, dass alles, was ich tun möchte, ohne Modifikationen des Motors nicht möglich ist.
Zitat: http://forums.epicgames.com/showthread.php?p=27609556#post27609556
quelle
Für das, was Sie fragen, würde ich die UDK nicht vorschlagen. Sie haben keinen nativen Zugriff.
Selbst wenn UDK Ihnen Skriptzugriff auf das bietet, wonach Sie fragen, wäre dies wahnsinnig träge, da UnrealScript nicht die schnellste Sprache ist.
Unreal verwendet kein verzögertes Rendern. Wo hast du das gehört? Einige Lizenznehmer haben das verzögerte Rendern implementiert. aber nativ wird es nicht mitgeliefert.
Davon abgesehen bin ich kein Grafiker :)
quelle