2016-07-07 11 views
0

Ich versuche, ein Bild über eine Reihe von Bildern mit HLSL und einem UV-Render-Durchlauf neu zu texturieren, aber die resultierenden Bilder haben eine Reihe von Artefakten (insgesamt verpixelten Bild, Aliasing Artefakte innerhalb des Bildes).HLSL Re-Texturing

Der Hintergrund und der UV-Pass kann in einem Album here

resultierendes Bild zu finden:

Ich vermute, dass das Problem mit den MIP Ebenen und dass ich sie irgendwie habe zu berechnen für jeden Frame, und meine Frage ist einfach, wie würde man das machen, kann das im Pixelshader gemacht werden?

Hier ist ein kurzer Überblick über das, was ich tue:

float4 UVPass = UVSRV.Sample(SamplerWrap, input.Tex); 
float4 Background = backgroundSRV.Sample(SamplerWrap, input.Tex); 
float4 Composit = compositImageSRV.Sample(SamplerWrap, saturate(UVPass)); 

dann die Alpha des UVPass als Maske verwendet wird, entscheide ich, wenn ich Composit oder den Hintergrund zurückkehren.

Mein Sampler verwendet D3D11_FILTER_MIN_MAG_MIP_LINEAR.

+0

Welche Artefakte meinst du? Warum nicht das Standard-Alpha-Blending verwenden, anstatt eine der Ebenen auszuwählen? –

+0

Das zusammengesetzte Bild ist im Vergleich zum Ausgangsbild stark pixelig und aliasiert. Offensichtlich würden die Kanten besser aussehen, wenn eine Art von Alpha-Blending implementiert wird, um sie zu glätten, aber ich konzentriere mich auf das Aliasing, das zum Beispiel auf dem Visier und in seinem Bart zu sehen ist. – Konglobemeralt

+0

Können Sie überprüfen, ob die Textur in der richtigen Größe hochgeladen wurde und Mipmaps erstellt wurden? Was passiert, wenn Sie das Bild auf traditionelle Weise rendern? –

Antwort

0

Gelöst es. Das Problem wurde nicht durch den Code verursacht, sondern dadurch, dass Maya den UV-Durchlauf, der die Artefakte verursachte, neu erzeugte. Der Code selbst funktioniert.

Verwandte Themen