Kann man einen Shader auf eine Textur/Texturtarget anwenden?

  • Eigentlich sagt es die Überschrift ja schon.


    Bei mir ergeben sich da zweierlei Probleme.


    Folgendes Szenario. Ich habe eine Minimap, diese beruht auf einer Kamera, die über dem Player Charakter schwebt und auf ein Texturetarget projiziert. Das Ganze wird natürlich wie üblich in einem Widget im HUD dargestellt. Also nichts wirklich unübliches.


    Nur, mir ist die Minimap zu "natürlich" oder detailgetreu. Deswegen wollte ich einen Toonschader drüber setzen damit das Ganze etwas gezeichneter aussieht. Das Problem ist nur, bisher kenne ich nur Methoden, um den Schader als Material im Post Process einzufügen, jedoch nicht auf ein Texturetarget anzuwenden, und schon gar nicht in einem Widget.


    Allerdings kenne ich mit Sicherheit noch nicht alle Nodes und Funktionen usw.


    Gibt es da eine Möglichkeit das Ganze eben halt so anzuwenden wie ich es mir vorstelle?

  • Hmmm, müsste ich mir mal anschauen. Hab jetzt als erstes gedacht das ganze über ne Render Target zu baken, dann könnte man das gaze doch schön verunstalten...



    OK mal kurz gegoogelt und es gibt schon echt krasse Tutorials für minimaps...


    Schau doch mal ob sowas nicht vielleicht hinkommt (Hat 3 teile)


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

  • Das Problem bei den Tutorials ist halt, dass quasi ein Screenshot von der Map gemacht wird, bzw. diese exportiert wird, und im Nachhinein mit Photoshop oder ähnlichem bearbeitet wird, um das Ergebnis wieder zu importieren. Das ist bei mir aber nicht möglich, denn meine Map ist komplett dynamisch.


    Deswegen schrieb ich ja schon das ich eine Kamera über dem Spieler schweben habe und ein Rendertarget, das dann in der Minimap dargestellt wird. Und das wollte ich dann halt automatisch mit einem Shader etwas, ja wie soll ich sagen... Comikartiger oder auch gezeichneter aussehen lassen. Weil, wenn es nur wie ein Bild von oben aussieht, das sieht dann irgendwie doof aus.

  • Achso, ja wenn die map random ist dann kannst du nix schönes malen. Aber ein Rendertarget kannst du ja auch über blueprints bemalen, brauchst ja nur die ref von dem Rendertarget, dann kannst du damit viel Unsinn anstellen.


    Hier mal ein Tutorial, da malt einer echtzeit darin rum mit einem Affengesicht als Brush. In deinem Fall würde ich da vielleicht ne halbtransparente dirtmap drüberlegen oder sowas. Klar könnte man da die dollsten Funktionen draufschmeissen und selber blur filter oder sowas schreiben aber ich bin ja eher für schnelle und einfache Sachen zu haben.


    https://sudonull.com/post/12579

    • Offizieller Beitrag

    Also wenn du alles abfilmst hast du natürlich auch alles auf deiner Minimap ob nun eine Animation oder Bäume die sich im Wind bewegen alles müsste auf die Minimap übertragen werden.


    Wäre es nicht gut, wenn du selber bestimmen könntest was die Minimap Kamera aufzeichnen soll ?


    Mehr dazu:

    https://docs.unrealengine.com/…ibilityCulling/index.html

  • Nein, ich will ja alles drauf haben. Bzw. sogar noch mehr, in Form von POIs. Das ist aber alles kein Problem, wenn ich halt nur meinen Shader da drauf kriegen würde.


    Und da fehlt mir irgendwie das Verbindungsglied. Normalerweise packst du Shader ja in das Post Process Volumen. Dies ist aber halt für die Spieldarstellung da, nicht aber für Widgets und/oder einzelne Texturen. Wobei man Shader auch an einzelne 3D-Modelle heften kann, aber das trifft ja beim Widget auch wieder nicht zu.


    Ich könnte es zwar so machen wie in meinem Tutorial, wo es darum geht, wie man eine 3D-Figur im Widget anzeigt. Nur anstelle der Spielerfigur dann halt ein Cube mit dem Rendertarget, darauf der Postprozess und das dann wieder abfilmen und in der Minimap darstellen. Aber noch mehr Rechenpower könnte man glaube ich gar nicht verschwenden, um eine Minimap darzustellen :D .