Jump to content

Video-PostProcessing und Shader


CiNcH

Recommended Posts

Ich wollte hier mal einen Thread öffnen, in dem wir diverse Bildverbesserer diskutieren. Es soll zwar primär um die Möglichkeiten über die Shader gehen, dennoch sind auch generelle Diskussionen über Video-PostProcessing erwünscht. Evtl. sind ja ein paar AviSynth-Experten anwesend?

 

 

YV12 Chroma Upsampling

 

Viele wirklich sinnvolle Shader gibt es ja noch nicht. Einen möchte ich aber definitiv nicht mehr missen.. den 'YV12 Chroma Upsampling' Shader. Dieser löst das Problem der schlechten YUV-RGB-Konvertierung durch den Renderer oder die GPU.

 

Hier der direkte Vergleich:

without_yv12_chroma_upsampler.jpg

with_yv12_chroma_upsampler.jpg

 

Man muss das Bild nicht krass hochskalieren um das Problem sichtbar zu machen. Obige Screenshots wurden nicht weiter vergrößert bzw. entsprechen dem durch die Grafikkarte auf die native Auflösung des TFT (1680x1050) hochskalierten Bild.

 

Dieser Shader lässt sich auch im DVBViewer einbinden (obige Screenshots stammen aus selbigem).

 

 

Sharpen Complex 2

 

Diesen Shader habe ich in MPC getestet. Aktuell kann dieser nicht mit der öffentlichen Beta des DVBViewer benutzt werden, da dieser aktuell nur Shader Model/Profil ps_2_0 unterstützt (Sharpen Complex 2 nutzt bereits Model/Profil ps_2_a). Außerdem wollte ich den Effekt 'schärfen vor und nach der Skalierung' testen, was in MPC mit den da genannten 'Screen Space Shaders' möglich ist. Im DVBViewer werden die Shader prinzipiell vor der Skalierung angewendet.

 

Den 'Sharpen Complex 2' Filter (bzw. Schärfefilter generell) vor dem Skalieren/Resizen anzuwenden ist von der Theorie her schon eine eher schlechte Idee, da durch die Schärfung erzeugte Artefakte ebenfalls skaliert werden und das Bild evtl. noch mehr verfälschen. In MPC vor der Skalierung angewendet wirkt das Bild stark überschärft. Ringing ist sehr deutlich sichtbar. Über die Parameter 'CoefFlou' und 'Sharpen_val0' kann man die Schärfung generell bzw. an Kanten etwas zurückfahren.

Unbedingt sollte man vorher den 'YV12 Chroma Upsampling' Shader anwenden (MPC unterstützt das Verketten von Shadern), sonst werden die Artefakte durch die schlechte YUV-RGB-Konvertierung sehr stöhrend verstärkt.

 

Wendet man den Filter auf das hochskalierte Bild an, ist die GPU-Auslastung wesentlich höher, weil natürlich sehr viel mehr Pixel vom Filter angefasst werden müssen und es wird eine durchaus potente GPU benötigt.

Mit den Default-Parametern ist der Effekt des Filters sehr viel dezenter als wenn man ihn vor der Skalierung anwendet. Fiese Artefakte sind mir dabei nicht aufgefallen. Auch hier könnte man mit den Parametern spielen, aber in diesem Fall könnte man den Schärfeeffekt versuchen zu verstärken.

 

Ich werde noch etwas damit spielen und hier evtl. einen detaillierteren Vergleich mit Screenshots posten.

 

 

Spatial vs. Temporal

 

Der Shader-Ansatz in MPC ist natürlich sehr interessant und es ist schön, dass das auch im DVBViewer angedacht ist, wenngleich man im Moment noch nicht so viel machen kann wie mit MPC. Aber auch in MPC könnte man das Konzept noch erweitern. Momentan kann man Shader nur auf ein Einzelbild ansetzen. Shader können also nur spatial und nicht temporal arbeiten. Ob theoretisch mehr möglich wäre, kann ich nicht beurteilen. Dann müsste der Renderer wohl mehr Bilder zwischenspeichern, was dann z.B. Algorithmen wie Motion Estimation ermöglichen könnte. Damit könnte man dann Sachen anstellen wie hochwertiges Deinterlacing, das auch temporal arbeitet oder Zwischenbildberechnung.

Edited by CiNcH
Link to comment
  • Replies 118
  • Created
  • Last Reply

Top Posters In This Topic

  • CiNcH

    37

  • nuts

    26

  • vonMengen

    15

  • Tüftler

    12

Top Posters In This Topic

Posted Images

Wie bereits festgestellt ist es bei den verschiedenen Filtern wichtig an welcher Stelle sie einsetzen.

Das Upsampling, Denoise vor dem Scaling, Schärfen anschließend.

 

Künstlich bedeutet, das eine Texture mehrmals umgeformt wird, bevor sie in der (Darstellungs)Renderpipline landet. Sowas kann eine sehr spezialisierte App wie MPC machen, aber sobald man noch mehr vorhat, als nur eine datei wiederzugeben und ein bisserl text anzuzeigen, ist sowas schon aus resourcen gründen nicht möglich...

Also nochmal zum besseren Verständnis:

MPC-HC geht schon mit der Zielauflösung in die Renderpipline?

Das Postprocessing kommt vor dem Scaling (MPC-HC intern) und die "gewöhnlichen" Shader (wie im DVBViewer) werden zu beginn der Renderpipline abgearbeitet (es sei denn der Pixelshader gibt selbst die Position vor).

Vielleicht könnten wir das nochmal kurz klären.

MPC-HC Scaliert praktisch auch über Shader? Weil dann könnten wir diese ja einfach in den DVBViewer einbinden und gehen auch mit der Zielauflösung in den Renderer.

 

P.S. Was für einen Syntax verwenden eigentlich die Shader?

Link to comment

Was Lars da mit künstlich genau meint, ist mir auch nach seiner Erklärung nicht klar. Im MPC-Code sieht das für mich (als kompletter DirectX und Custom Presenter Laie wohlgemerkt :) ) recht sauber aus. Da werden zuerst die normalen Pixelshader in einer Schleifen auf die Textur angewendet, dann wird die Textur skaliert und schlussendlich werden in einer weiteren Schleife die 'Screen Space Shaders' angewendet. Inwiefern das im DVBViewer-Kontext anders gemacht werden müsste oder evtl. nicht möglich ist, kann ich nicht beurteilen.

 

P.S. Was für einen Syntax verwenden eigentlich die Shader?

LSHL (High Level Shading Language)

Edited by CiNcH
Link to comment

Habe eine Zwischenfrage zu MPC HC und der PixelShader Anwendung.

Verwende auch den sharpen complex 2 bei DVD-Wiedergabe nach ffdshow lanczos Hochskalierung auf full HD.

Habe nun die Parameter in sharpen complex 2 nach meinem Geschmack etwas angepasst und sehe, dass nach jedem Neustart diese Werte beibehalten bleiben - kann aber unter Win7Ulti nirgendswo eine Konfigdatei oder sowas ähnliches finden.

Weiss wer, wo diese Parameter abgelegt sind?

Link to comment

Also unter Windows XP habe ich vor kurzen gesuch wo der MPC seine Einstellungen speichert. Fündig geworden bin ich in der Registry unter:

HKEY_CURRENT_USER\Software\Gabest\Media Player Classic da gibt es auch einen Schlüssel mit Shaders habe ich gesehen.

Win 7 hmm... vielleicht auch so

Edited by gwr
Link to comment

Hey,

 

also ich hab heute bissle mit dem Editor gespielt.

Meint ihr es wäre möglich 2 Methode in einem Shader zu vereinen?

Geklappt hats noch nicht, aber der Syntax ist mir auch noch sehr fremd.

 

Dadurch könnte man nämlich eigene Live-TV Shader schreiben und die Verknüpfung der Shader außerhalb des DVBViewers lösen.

Link to comment
Meint ihr es wäre möglich 2 Methode in einem Shader zu vereinen?

Diese Idee hatte ich auch schon, war aber zu faul bis jetzt mich ernsthaft damit zu beschäftigen.

Link to comment

Kann man einen Shader eigentlich mit einer Aktionsnummer versehen, damit man ihn mit der Fernbedienung de/aktivieren kann?

 

Sharpen2 sieht bei DVDs echt toll aus, beim normalen TV-Bild wird aber oft nur das Grieseln verstärkt und ständig zur Maus zu greifen ist auch umständlich.

Link to comment

Bis jetzt geht das wohl nicht.

Wäre aber wikrlich super wenn man das einbauen könnte. Mit den Sahdern live zur Wiedergabe mit der Fernbedienung spielen ist wichtig.

Settings müssen je Disc angepasst werden :)

Link to comment
  • 3 weeks later...

Ganz einfach:

 

- die aktuelle Beta des DVBViewers benutzen,

- einer der Custom-Renderer auswählen,

- dann unter Ansicht / Shaders den gewünschten Shader auswählen....

 

Gruß

Link to comment
Kann man einen Shader eigentlich mit einer Aktionsnummer versehen, damit man ihn mit der Fernbedienung de/aktivieren kann?

[...]

 

Mal ein Gedanke in eine andere Richtung... Kennt jemand von Euch einen Shader, der den Effekt "Gaußsches Weichzeichnen" bzw. "gaussian blur" simuliert?

Interessant wäre das z.B. für das OSD: Wenn ein Kontextmenü aufgerufen wird, wird das Bild bzw. vielleicht sogar eine OSD Seite im Hintergrund mit dem Effekt dargestellt!

 

Ich hab schon ein paar Codeschnippel gefunden, jedoch kenne ich mich mit Shadern überhaupt nicht aus und die, die ich bis jetzt probiert habe funktionierten nicht! Warum auch immer... :)

 

Also wäre super, wenn jemand vielleicht einen Tipp für mich hat.

 

Grüße

Mojo

Link to comment

Auch mal eine Frage dazu:

 

Habe die Shader bisher nicht wirklich benutzt, obwohl das Chroma-Upsampling auf dem Bild wirklich gut aussieht.

Ist damit denn der Chroma-Shader im DVBViewer gemeint?

 

Im MPC-HC ist der Shader ja auch als YV12-Chroma-Upsampling vorhanden - nur wo finde ich den Shader da (also als Datei), um ihn im DVBViewer zu integrieren?

Ist das irgendwie machbar?

 

*edit*

 

Hat sich soeben erledigt - was ein Texteditor nicht alles zu Tage bringt...

Bleibt nur noch die Frage unten.

 

*edit*

 

Desweiteren muss die Ausgabe ja zwingend als YV12 vorliegen. Wo finde ich eine Info darüber, wie der Viewer das Bild letztendlich ausgibt bzw. was sind die Voraussetzungen, um eine solche Ausgabe zu ermöglichen?

 

Wäre nett, wenn da jemand Licht ins Dunkel bringen könnte.

Edited by sw4y
Link to comment

Unter Windows wird grundsätzlich mit RGB gearbeitet. D.h. auch die "erzwungene" YCbCr Ausgabe (Ati & Nvidia Controlcenter) ist nur nochmal (bei YCbCr Quelle) eine Rückwandlung (YCbCr -> RGB -> YCbCr).

Daher ist es meist auch besser bei RGB zu bleiben (vorausgesetzt dein Display kommt damit zurecht).

 

Trotzdem kann der Shader eingesetzt werden.

Edited by nuts
Link to comment

Ok, mein Display sollte das können.

Allerdings gibts im aktuellen Catalyst die Einstellungen für den Farbraum irgendwie nicht mehr...

Lassen die sich irgendwie wieder einblenden?

Link to comment

Unter Desktops&Displays und unten links auf den virtuellen Bildschirm einen Rechtsklick, oder den kleinen schwarzen Pfeil anklicken.

 

Wirklich saublöd, das alte CCC fand ich deutlich übersichtlicher!

Link to comment
Unter Desktops&Displays und unten links auf den virtuellen Bildschirm einen Rechtsklick, oder den kleinen schwarzen Pfeil anklicken.

 

Wirklich saublöd, das alte CCC fand ich deutlich übersichtlicher!

 

Danke für deine Hilfe - hatte es dann aber doch noch gerade selbst gefunden. Wirklich saublöd versteckt :)

Link to comment
  • 3 months later...

Ich habe heute mal einen Vergleich diverser Scaler in madVR gemacht. Diese Scaler arbeiten in den Pixelshadern der GPU.

 

GPU: ATi Radeon HD 3650

Shader: 24 vec5 (120 Stream Processors)

 

Quelle: TWILIGHT DVD VTS_01_2.vob Frame 5878

Player: MPC-HC

Dekoder: Gabest MPEG-2 (Weave Deinterlacer)

Renderer: madVR 0.11

Scaler: Nearest Neighbour/Bilinear/Bicubic60/Lanczos 3-Tap/Lanczos 8-Tap

 

Screenshots:

Der Test wurde mit einem 1680x1050 TFT durchgeführt, der Scaler musste also nicht mit voller HD-Auflösung arbeiten. Die Screenshots wurden nachträglich natürlich nicht mehr skaliert, sondern lediglich noch nach JPG mit niedriger Kompression gewandelt.

 

Wenn ihr euch die Bilder ansehen wollt, dann stellt sicher, dass sie der Viewer selbige nicht skaliert. Wenn man die Bilder nicht in Originalgröße ansieht, macht das natürlich keinen Sinn..

 

 

Scaler GPU-Usage:

 

Nearest Neighbour: 25-30% @ 300 MHz

Bilinear: 30-35% @ 300 MHz

Bicubic60: 35-45% @ 725 MHz

Lanczos 3-Tap: 60-70% @ 725 MHz

Lanczos 8-Tap: 100% @ 725 MHz

 

Scaler Bildqualität:

 

Nearest Neighbour:

nearest_neighbour.jpg

 

Bilinear:

bilinear.jpg

 

Bicubic60:

bicubic60.jpg

 

Lanczos 3-Tap:

lanczos_3tap.jpg

 

Lanczos 8-Tap:lanczos_8tap.jpg

 

Fazit:

 

Der Lanczos 8-Tap ist nur unbedeutend schärfer wie der 3-Tap. Ohne die Frames direkt zu vergleichen sieht man da niemals einen Unterschied. Lanczos ist definitiv schärfer als Bicubic und Bicubic schärfer als Bilinear. Recht deutlich ist der Unterschied aber nur zwischen Lanczos und Bilinear. Den Preis zahlt man mit einer sehr hohen GPU-Belastung.

Edited by CiNcH
Link to comment

Hier noch ein Bild, das den Lanczos in Punkte Schärfe übertrifft:

 

evrcustom_bicubic_sharpen_complex_v2_after_resizing.jpg

 

Es handelt sich dabei um den MPC-HC Bicubic Scaler mit Sharpen Complex v2 NACHGESCHALTEN.

Link to comment

Wie mache ich letzteren denn, das Bild sieht echt Klasse aus. Wäre sowas mit den Customs jetzt schon machbar (Natürlich auf der HD4650 Mobility auf Vista, nicht der HD4550)?

Link to comment
Wie mache ich letzteren denn, das Bild sieht echt Klasse aus. Wäre sowas mit den Customs jetzt schon machbar (Natürlich auf der HD4650 Mobility auf Vista, nicht der HD4550)?

Man kann im DVBViewer die Shader nur vor das Scaling schalten, den Effekt beim Schärfen muss jeder selber beurteilen...

 

Außerdem wird ein gewählter Shader immer angewendet. Für HD-Material braucht man Sharpening nicht unbedingt. Bei ATi macht der YV12 Chroma Upsampling Shader viel Sinn und da mehrere Shader nicht hintereinander geschalten werden können...

 

Das Maximum mit dem DVBViewer ist schärfen (e.g. 'sharpen complex v2') mit anschließendem bilinearen Skalieren.

 

Mit einer 4550 dürfte man da recht schnell an die Performancegrenzen stoßen.

Edited by CiNcH
Link to comment
Außerdem wird ein gewählter Shader immer angewendet. Für HD-Material braucht man Sharpening nicht unbedingt.

Ich habe hier noch einen Shader (BT.601 -> BT.709) mit einer interessanten Codestelle gefunden:

sampler s0 : register(s0);
float4 p0 : register(c0);

#define height (p0[1])

float4 main(float2 tex : TEXCOORD0) : COLOR
{
// original pixel
float4 c0 = tex2D(s0,tex);

// uncomment to activate for HD only
/*
if(height > 719)
{
	return c0;
}
*/

// r=c0[0], g=c0[1], b=c0[2]
// RGB [16,235] to YUV: 601 mode (128 is not added to Cb and Cr)
float y=0.299*c0[0] + 0.587*c0[1] + 0.114*c0[2];
float Cb=-0.172*c0[0] -0.339*c0[1] +0.511*c0[2];
float Cr=0.511*c0[0] -0.428*c0[1] -0.083*c0[2];

// YUV to RGB [16,235]: 709 mode (Cb and Cr are 128 less)
float r=y+1.540*Cr;
float g=y-0.459*Cr-0.183*Cb;
float b=y+1.816*Cb;

return float4(r,g,b,0);
}

 

Mit...

	if(height > 719)
{
	return c0;
}

... könnte man Schärfe Shader nur auf SD ansetzen ohne Untersützung durch die Applikation. Muss ich mir bei Gelegenheit mal durchüberlegen. Der Overhead bei HD dürfte minimal sein.

Edited by CiNcH
Link to comment

Gut zusammengestellt. Lanczos bringt bei mir auch das beste Ergebnis.

Hast du die Peter Finzel DVD daheim? Der Vergleich mit dem dort enthaltenen Siemensstern (Aliasing) und den Burst' s (Ringing) sind auch interessant. "Schärfe" ist schließlich nicht alles B)

 

P.S. Leider (noch?) ein sehr theoretisches Thema im DVBViewer, madVR ist auch noch nicht produktiv einzusetzen oder?

Edited by nuts
Link to comment
Hast du die Peter Finzel DVD daheim? Der Vergleich mit dem dort enthaltenen Siemensstern (Aliasing) und den Burst' s (Ringing) sind auch interessant.

Nein, ich steh auch nicht so auf künstliche Tests. Aber ihr könnt da gerne auch was machen. MPC-HC mit framegenauem Stepping und madVR stehen jedem zur freien Verfügung.

 

Ich habe lange nach einem geeigneten Testobjekt gesucht und das gewählte hat doch einige feine Details. Wichtig war mir nur eine progressive SD Quelle, damit ich auch ohne Deinterlacer auskommen kann. Interlaced Material progressiv machen ist immer mit Detailverlust verbunden. Außerdem pfuscht mir so kein DXVA hinein. Man weiß ja nie, was da alles über das Bild läuft. Im CCC habe ich sämtliche Bildverbesserer ausgeschaltet (die laufen glaub im Allokator-Kontext der Renderer über das Bild).

 

P.S. Leider (noch?) ein sehr theoretisches Thema im DVBViewer

Shader mittels API's für Bildnachbearbeitung einzusetzen ist generell noch eher theoretisch. Das VirtualDub-Projekt ist diesbezüglich wohl am aktivsten. Ich nehme aber an, dass sich in diesem Bereich noch einiges tun wird.

 

madVR ist auch noch nicht produktiv einzusetzen oder?

Macht keinen so schlechten Eindruck. Für interlaced dürfte der aber weniger gut geeignet sein. DXVA kann man damit vergessen. Und in den DVBViewer lässt er sich nicht einbinden.

Wie gesagt kosten die hochwertigen Scaler einiges an GPU-Performance. Auch bei madVR wird man mit den meisten GPU's einen guten Kompromiss finden müssen. Vor allem weil alle denken, dass Shader in einem HTPC nichts bringen B) .. Mit einer 5670 dürfte aber eine hochwertige Pipeline kein Problem sein.

 

 

Spline werde ich auch noch probieren..

Edited by CiNcH
Link to comment

Hmm, versteh ich noch nicht. Ich wollte gerade den 'sharpen complex v2' so anpassen, damit er nur bei SD greift. Ich habe dazu auf ORF 1 HD (720p) getestet.

 

Kein Shader: 20-30% @ 600 MHz

'sharpen complex v2': 50-60% @ 600 MHz (Schärfung klar sichtbar)

 

Anschließend habe ich den Shader modifiziert:

 

//////////////////////////////////////////////////// 
// Sharpen complex v2 (nécessite ps >=2a)
//////////////////////////////////////////////////// 
sampler s0 : register(s0); 
float4 p0 : register(c0); 
float4 p1 : register(c1); 

// résolution de l'image
#define width (p0[0]) 
#define height (p0[1]) 
// "largeur" d'un pixel
#define px (p1[0])
#define py (p1[1])


//////////////////////////////////////////////////// 
// Paramètres
//////////////////////////////////////////////////// 
 // pour le calcul du flou
#define moyenne 0.6
#define dx (moyenne*px)
#define dy (moyenne*py)

#define CoefFlou 2
#define CoefOri (1+ CoefFlou)

 // pour le sharpen
#define SharpenEdge	   0.2
#define Sharpen_val0	   2 
#define Sharpen_val1	   ((Sharpen_val0-1) / 8.0)


//////////////////////////////////////////////////// 
float4 main( float2 tex : TEXCOORD0 ) : COLOR 
{ 
 // recup du pixel original
			float4 ori = tex2D(s0, tex);; 

			if(height > 719)
			{
						   return ori;
			}

//////////////////////////////////////////////////// 
// calcul image floue (filtre gaussien) 
//////////////////////////////////////////////////// 
			float4 c1 = tex2D(s0, tex + float2(-dx,-dy)); 
			float4 c2 = tex2D(s0, tex + float2(0,-dy)); 
			float4 c3 = tex2D(s0, tex + float2(dx,-dy)); 
			float4 c4 = tex2D(s0, tex + float2(-dx,0)); 
			float4 c5 = tex2D(s0, tex + float2(dx,0)); 
			float4 c6 = tex2D(s0, tex + float2(-dx,dy)); 
			float4 c7 = tex2D(s0, tex + float2(0,dy)); 
			float4 c8 = tex2D(s0, tex + float2(dx,dy)); 

 // filtre gaussien
 //   [ 1, 2 , 1 ] 
 //   [ 2, 4 , 2 ] 
 //   [ 1, 2 , 1 ] 
 // pour normaliser les valeurs, il faut diviser par la somme des coef 
 // 1 / (1+2+1+2+4+2+1+2+1) = 1 / 16 = .0625 
			float4 flou = (c1+c3+c6+c8 + 2*(c2+c4+c5+c7)+ 4*ori)*0.0625; 

 // soustraction de l'image flou à l'image originale 
			float4 cori = CoefOri*ori - CoefFlou*flou; 

//////////////////////////////////////////////////// 
// détection des contours 
//////////////////////////////////////////////////// 
 // récuppération des 9 voisins 
 //   [ c1, c2 , c3 ] 
 //   [ c4,ori , c5 ] 
 //   [ c6, c7 , c8 ] 
			c1 = tex2D(s0, tex + float2(-px,-py)); 
			c2 = tex2D(s0, tex + float2(0,-py)); 
			c3 = tex2D(s0, tex + float2(px,-py)); 
			c4 = tex2D(s0, tex + float2(-px,0)); 
			c5 = tex2D(s0, tex + float2(px,0)); 
			c6 = tex2D(s0, tex + float2(-px,py)); 
			c7 = tex2D(s0, tex + float2(0,py)); 
			c8 = tex2D(s0, tex + float2(px,py)); 

// par filtre de sobel 
  // Gradient horizontal 
  //   [ -1, 0 ,1 ] 
  //   [ -2, 0, 2 ] 
  //   [ -1, 0 ,1 ] 
			float delta1 =  (c3 + 2*c5 + c8)-(c1 + 2*c4 + c6); 

  // Gradient vertical 
  //   [ -1,- 2,-1 ] 
  //   [  0,  0, 0 ] 
  //   [  1,  2, 1 ] 
			float delta2 = (c6 + 2*c7 + c8)-(c1 + 2*c2 + c3); 

  // calcul 
			if( sqrt( mul(delta1,delta1) + mul(delta2,delta2) ) >SharpenEdge ) 
			{ 
//////////////////////////////////////////////////// 
// si contour, sharpen 
						   //			return  float4(1,0,0,0);
						   return ori*Sharpen_val0 - (c1 + c2 + c3 + c4 + c5 + c6 + c7 + c8 ) * Sharpen_val1;  
			} 
			else 
			{ 
//////////////////////////////////////////////////// 
// sinon, image corrigée 
						   return cori; 
			} 
}

 

Man sieht anhand des Bildes deutlich, dass der Shader bei HD nichts mehr macht. Die GPU-Last ist aber weiterhin 50-60%. Scheint so, als ob er trotz des returns bei 'if(height > 719)' komplett abgearbeitet wird.

 

sampler s0 : register(s0); 

#define height (p0[1]) 

//////////////////////////////////////////////////// 
float4 main( float2 tex : TEXCOORD0 ) : COLOR 
{ 
 // recup du pixel original
			float4 ori = tex2D(s0, tex);; 

			if(height > 719)
			{
						   return ori;
			}
}

 

Mit diesem Code ist die Shader-Auslastung auch nur noch bei 20-30%. Mehr sollte aber der komplette Shader auf Grund des Returns auch nicht machen. :)

Edited by CiNcH
Link to comment

OK, dynamisches Branching kann man mit HLSL bzw. Shader Model 2 wohl vergessen. Da wird immer alles abgearbeitet, d.h. man kann den Schärfeeffekt für HD im Shader mit dem if-Statement zwar abschalten, dennoch wird immer der gesamte Shader abgearbeitet. Am Ende wird dann entschieden, welches Ergebnis effektiv verwendet wird. Es wäre also doch vorteilhaft, wenn man auf Applikationsebene separate Shader für HD und SD definieren könnte.

Man kann nur statisches Branching machen, d.h. Entscheidungen anhand einer Konstanten zu treffen, die vor dem kompilieren des Shaders bekannt ist. Dann wird nur der gewünschte Branch kompiliert.

 

Ab Shader Model 3 wird dynamisches Branching unterstützt. Ich werde mal versuchen, den Shader als 'ps_3_0' kompilieren zu lassen, mal sehen, ob der DVBViewer das macht. Nachteil ist dann, dass "ältere" GPU's den Shader nicht unterstützen.

Edited by CiNcH
Link to comment

interessantes thema , das mich auch schon seit ein paar jahren beschäftigt , obwohl ich bei bildverbesserern eher absoluter

purist bin , vor allem bei jeder art von electronic enhancern wie sharpenern in jeder inkarnation , die mich nicht sonderlich interessieren, weil nach meiner meinung meistens die nachteile die vorteile auch bei sd überwiegen.

den yv 12 chroma mag ich allerdings sehr gern und gegen skalierung mit lanczos algorithmen hätt ich wirklich gar nichts .

 

diese woche kommt noch ne 5770 , diese avs gerüchte über bessere interne skalierung der 5xxx serie möchte ich doch mal gerne in der praxis sehen.

 

danke an cinch für die interessanten beiträge.

 

best

 

vm

Link to comment
diese woche kommt noch ne 5770 , diese avs gerüchte über bessere interne skalierung der 5xxx serie möchte ich doch mal gerne in der praxis sehen.

Also mit dem DVBViewer Custom Presenter wirst du da kein Glück haben. Der triggert stur das DirectX Bilinear. Ich denke, Standard EVR macht das auch nicht anders. Wenn ein Renderer was anderes macht, arbeitet er wahrscheinlich mit einem internen Pixelshader, der dann aber bis auf die Unterstützung des entsprechenden Shader Models von der GPU unabhängig ist.

 

Die GPU hat da keinen Einfluss darauf außer sie bietet etwas spezielles an, was der Renderer dann aber erst nutzen muss.

 

Und das, womit ATi ab der HD 4000 Serie wirbt...

 

Enhanced DVD up-conversion to HD

 

... ist Augenwischerei. Damit ist lediglich gemeint, dass die Shaderleistung zusammen mit einem "hochwertigen" Scaler wie SimHD (was immer der auch macht, ich gehe mehr von einem Schärfen als wirklich von einem hochwertigen Scaler aus) dazu in der Lage ist, siehe hier. Ohne entsprechenden Software/Renderer-Support geht also nichts.

Edited by CiNcH
Link to comment
Also mit dem DVBViewer Custom Presenter wirst du da kein Glück haben. Der triggert stur das DirectX Bilinear. Ich denke, Standard EVR macht das auch nicht anders. Wenn ein Renderer was anderes macht, arbeitet er wahrscheinlich mit einem internen Pixelshader, der dann aber bis auf die Unterstützung des entsprechenden Shader Models von der GPU unabhängig ist.

 

ja..bin fast überzeugt, dass das gerüchte sind ... aber ein neues spielzeug (5770) macht ja auch spass

 

übrigens nicht uninteressant : der sweetspot bei meiner ati 3870 liegt beim ram bei 900 MHz (bei sd/ 1100 bei hd) ..drunter fängt sie minimal an zu ruckeln

ab 920 Mhz ist das dann vorbei.

Link to comment
übrigens nicht uninteressant : der sweetspot bei meiner ati 3870 liegt beim ram bei 900 MHz

D.h. 1800 MHz, wenn man DDR berücksichtigt? Der DDR2 auf meiner HD 3650 läuft bei 500 bzw. 1000 MHz.

Link to comment
D.h. 1800 MHz, wenn man DDR berücksichtigt? Der DDR2 auf meiner HD 3650 läuft bei 500 bzw. 1000 MHz.

 

hi cinch

ich hab ne gdddr4 3870

standardtakt ist 775/1125 also ein wenig höher wie bei der 3650

 

im biosmod uvd läuft sie sie bei :

sd 300/950 1,1 V

hd 600/1100 1,2V automatisch

 

damit hab ich den lüfter halt bei 0 %

Link to comment
standardtakt ist 775/1125 also ein wenig höher wie bei der 3650

500 MHz (bei 128 Bit) vs. 1125 MHz (bei 256-Bit) ist nicht nur ein wenig :) . Das ist eine Speicherbandbreite von 16 GB/s vs. 72 GB/s. Also wenn bei mir nichts ruckelt, dann sollte bei dir auf Grund der doppelten Busbreite selbst mit einem Speichertakt von 250 MHz immer noch nichts ruckeln...

Edited by CiNcH
Link to comment
500 MHz (bei 128 Bit) vs. 1125 MHz (bei 256-Bit) ist nicht nur ein wenig :) . Das ist eine Speicherbandbreite von 16 GB/s vs. 72 GB/s. Also wenn bei mir nichts ruckelt, dann sollte bei dir auf Grund der doppelten Busbreite selbst mit einem Speichertakt von 250 MHz immer noch nichts ruckeln...

 

 

tut sie aber definitiv unterhalb 900 , da liegt der sweetspot.

drüber kann ich aktivieren was ich will ,von shader bis aeros und es läuft perfekt.

ich schiebs mal auf den 2 monitorbetrieb mit 2 x 1920 er displays , und vll. die unterschiedlichen refreshs von 50/60hz.

Edited by vonMengen
Link to comment

Bist du dir sicher, dass nicht 1800 MHz deine DDR-Taktrate ist? Das was CCC anzeigt wird verdoppelt, nicht halbiert...

 

Ja, Dual-Display bei dieser Auflösung braucht wohl eine hohe Speicherbandbreite. Da wäre ich mit meiner Karte definitv am Arsch...

Edited by CiNcH
Link to comment
Bist du dir sicher, dass nicht 1800 MHz deine DDR-Taktrate ist? Das was CCC anzeigt wird verdoppelt, nicht halbiert...

 

Ja, Dual-Display bei dieser Auflösung braucht wohl eine hohe Speicherbandbreite. Da wäre ich mit meiner Karte definitv am Arsch...

 

nee ist schon 900, mit eff. 1125 ist sie spezifiziert

 

und apropos multimonitorbetrieb mit hochauflösenden monitoren : das treibt mich schon seit jahren in den wahnsinn.. da läuft alles perfekt auf einem und schwups..alles wieder am arsch bei zuschalten des 2. monitors

(daher setz ich ja immer auf die etwas leistungfähigeren graka versionen)

 

und auch apple bekleckert sich da überhaupt nicht mit ruhm

nicht mal hi-end apps wie finalcut schaffen irgendwelche hwa auf dem 2.monitor. (über hwa beim os 10.6 schweigen wir mal). mit opencl und quicktime x solls besser werden.

Edited by vonMengen
Link to comment

hab mir gerade mal das bios der HD 5770/1024MB GDDDR 5 angeschaut

die taktet mit 400/900 im UVD Betrieb VGPU ist unter 1V (0,95)

das sieht schon mal gut aus

 

bau sie morgen mal ein.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...