Entity nach Partikel-Effekt Rendern

Posted By: Tempelbauer

Entity nach Partikel-Effekt Rendern - 11/14/10 16:00

hey

helft mir mal bitte schnell auf die sprünge: ich will ne entity nach partikel-effekten rendern lassen (also dass sie nicht von den effekten verdeckt wird). wie ging denn das?
ich bin als auf dieser CSS-Schiene und will den zindex setzen, aber die entity-eigenschaft gibts ja bei gamestudio nicht grin

danke
Posted By: HeelX

Re: Entity nach Partikel-Effekt Rendern - 11/15/10 07:45

Das ist schwierig, da die Partikeleffekte nach dem Rendern der Szene eingesetzt werden. Aber es geht!

Also zunächst einmal renderst du die ganze Szene inkl. Partikel im ersten View (camera) und dann in einem angehängten View renderst du die Entity in die Szene hinein, wobei der Z-Buffer des ersten erhalten bleiben muss, damit deine Entity verdeckt werden kann. Dazu bedarf es einiger Tricks.

Zunächst musst du einen zweiten View (nennen wir ihn mal camera2) einrichten, den du an die camera hängst (via stage). Dann gibst du camera2 die Flags PROCESS_SCREEN | CHILD | NOSKY | NOPARTICLES, da du ja 1.) den zweiten synchron mit dem ersten halten willst (CHILD), zweitens keine Partikel nochmal rendern willst (NOPARTICLES) und du willst den alten ZBuffer verwenden (NOSKY) sowie einfach nur in den alten Bildschirminhalt reinrendern (PROCESS_SCREEN).

Jetzt musst du deine Entities und die Map in beide Views verteilen. Also entweder du verteilst jede Entity über ihre client_id (wird dann direkt an den View gebunden und wird nur da gerendert) oder klammerst die Entity in camera über NOFLAG1 aus, wobei du dann in camera2 ein View-Material verteilen könntest, dass bei gesetztem ENABLE_TREE das Flag1 auswertet und dann eben 0 oder 1 zurückgibt, um alle anderen Entities eben in camera2 auszuklammern.

Die map ist leider nicht ausklammerbar, da würde ich für camera2 über das View-material dann einen kleinen Shader zuweisen, der die Map einfach nicht anzeigt (ich glaube aber, dass sie dennoch prozessiert wird - zu sehen ist sie aber nicht). Du kannst einfach im Pixelshader schreiben

Code:
clip(-1);
return(0);



Das reicht dann schon.

JCL hat angekündigt weitere Flags einzuführen, u.A. für die Map, ich hoffe das passiert sehr bald, weil ich genau selber sowas ähnliches mache, wie du jetzt auch machen willst smile

Viel Erfolg,
-Christian
Posted By: Tempelbauer

Re: Entity nach Partikel-Effekt Rendern - 11/15/10 19:39

hm, sowas wie
Code:
entity.render_queue = AFTER_MAP | AFTER_PARTICLE;

wär ja auch zu einfach grin

trotzdem hätt ichs mir leichter vorgestellt. ich weiß nicht mehr wo das war (wars opengl?) da gings verhältnismäßig einfach die objekte im z-buffer zu sortieren. vielleicht verwechsel ichs auch mit ner 2D-engine...

jedenfalls vielen dank für deinen lösungshinweis. von allein wär ich sicher nicht drauf gekommen.
ich werds demnächst mal ausprobieren. wenns zu viel aufwand macht, werd ichs vielleicht auch weglassen. es ist für das projekt nicht priorität 1. aber schön wärs allemal
Posted By: HeelX

Re: Entity nach Partikel-Effekt Rendern - 11/15/10 20:26

Ja dann mach doch mal nen Minimalbeispiel, probiers und wenns nicht klappt, lads hoch und ich guck mal drüber... sollte nicht so schwer sein.

Raum, Partikeleffekt, Entity mit Partikel darüber oder so und ne Entity, die ÜBER den Partikeln gerendert werden..
© 2024 lite-C Forums