CiNcH Posted November 6, 2010 Author Share Posted November 6, 2010 Mit winrar klappts Bei mir nicht. Meldet nur Fehler und die Textdateien sind dann leer bzw. 0 Byte. Quote Link to comment
nuts Posted November 6, 2010 Share Posted November 6, 2010 (edited) Kannst dir auch schicken wenn du heute noch was tun willst. Super dann mal los Edited November 6, 2010 by nuts Quote Link to comment
CiNcH Posted November 6, 2010 Author Share Posted November 6, 2010 Mit einer aktuellen WinRAR Version hat es nun geklappt. Quote Link to comment
CiNcH Posted November 6, 2010 Author Share Posted November 6, 2010 Ich bin da mit dem Scripting nicht auf dem laufenden... aber kann man nun für HD und SD einen unterschiedlichen Shader festlegen? Problem ist nämlich, dass SD auf BT.601 beruht und HD auf BT.709. Je nachdem, auf welchem Standard der Shader beruht, hat man dann für das jeweils andere Format leicht verfälschte Farben... Quote Link to comment
Tüftler Posted November 6, 2010 Share Posted November 6, 2010 Wenn du dich kurz geduldest erweitere ich mein Script mal. Im Moment verwende ich nur bei SD einen aber die Anpassung sollte kein Problem darstellen. Derweilen darfst du mir den Link für die passende WinRar Version raussuchen. Quote Link to comment
nuts Posted November 6, 2010 Share Posted November 6, 2010 (edited) Du kannst mit der Datamanagervariablen #TV.video.vres ermitteln ob ein HD / SD Sender vorliegt und dann einen ensprechenden Shader setzen (mit der neusten internen Beta). @Tüftler: Was los zu faul zu googeln? http://www.winrar.de/ Edited November 6, 2010 by nuts Quote Link to comment
Tjod Posted November 6, 2010 Share Posted November 6, 2010 Das ist ein 7-Zip Archiv. Das lässt sich also ohne Schwierigkeiten mit 7-Zip ( http://www.7-zip.org/ ) öffnen. Was meiner Meinung nach sowieso die bessere alternative zu WinRAR ist (ja .rar Dateien kann man damit unter anderem auch öffnen und man kann auch .zip Archive erstellen). Und wer es Trotzdem nicht installieren will für den gibt es das auch hier http://portableapps.com/apps/utilities/7-zip_portable 7-Zip Portable. Quote Link to comment
Tüftler Posted November 6, 2010 Share Posted November 6, 2010 (edited) Im Anhang die vbs Dateien. Beide im Scriptverzeichnis versenken. BTW: Funktioniert derzeit natürlich nur mit der internen DVBViewer Version. (Achtung, noch nicht bis ins Detail durchgecheckt!) shaderset.zip Und danke nuts sowie Tjod für die Links. Edit: @Tjod 7zip Portable stolpert bei dem Format, WinRar aus nuts Link dagegen funktioniert! Edited November 8, 2010 by Tüftler Quote Link to comment
test Posted November 14, 2010 Share Posted November 14, 2010 Vorweg: ich habe keine Ahnung von Shadern. aber: welches von den 4-2-0_chroma_upsampler nimmst du? und irgendeine Idee wieso DVBViewer sich komplett aufhängt bei egal welchem Shader von den doom9 Posts? Die mitgelieferten Shader von DVBViewer funktionieren. Quote Link to comment
sw4y Posted November 14, 2010 Share Posted November 14, 2010 BTW: Funktioniert derzeit natürlich nur mit der internen DVBViewer Version. (Achtung, noch nicht bis ins Detail durchgecheckt!) Schön zu hören, dass in die Richtung was gemacht wird! Quote Link to comment
Tüftler Posted November 14, 2010 Share Posted November 14, 2010 Schön zu hören, dass in die Richtung was gemacht wird! Da kommt sicher noch einiges mehr. Von meiner Seite zumindest versuche ich gerade was zu Scripten und es läuft schon in Ansätzen (ohne jetzt auf Details einzugehen). BTW: Welcher Sender von Sky sendet dieses 3D-Zeugs? Am Besten die Senderparameter mal hier reinstellen. Quote Link to comment
nuts Posted November 15, 2010 Share Posted November 15, 2010 [Channel0] TunerType=1 Frequency=12382 Polarity=h Symbolrate=27500 FEC=8 APID=259 VPID=255 PMTPID=96 PCRPID=255 AC3=17 TelePID=32 SID=117 StreamID=11 NetworkID=133 LNB-Selection=1 LNB=10600 DiseqC=3 DiSEqCValue=0 Root=New Root Name=Sky 3D (deu) Category=SKY Encrypted=25 SatModulation=5 Group=0 Language=deu EPGFlag=0 Volume=0 Audiochannel=0 OrbitalPos=192 [Channel1] TunerType=1 Frequency=12382 Polarity=h Symbolrate=27500 FEC=8 APID=260 VPID=255 PMTPID=96 PCRPID=255 AC3=17 TelePID=32 SID=117 StreamID=11 NetworkID=133 LNB-Selection=1 LNB=10600 DiseqC=3 DiSEqCValue=0 Root=New Root Name=Sky 3D (eng) Category=SKY Encrypted=153 SatModulation=5 Group=0 Language=eng EPGFlag=0 Volume=0 Audiochannel=0 OrbitalPos=192 Hier der Sky 3D Sender. Quote Link to comment
Tüftler Posted November 15, 2010 Share Posted November 15, 2010 @nuts Danke, mal sehen was ich damit anfangen kann. Quote Link to comment
Freezer Posted December 31, 2010 Share Posted December 31, 2010 (edited) Wurden die neuen Shader im Doom9-Forum wieder rausgenommen oder muss man sich da anmelden um sie zu sehen? Hier mal mein erster Versuch die Shader "YV12 Chroma Upsampling" und "Sharpen Complex 2" zu vereinen. Ist mehr durch Trial&Error entstanden als durch wirkliches Verständnis, scheint aber geklappt zu haben: <?xml version="1.0" encoding="iso-8859-1"?> <Shader> <Profile>ps_2_a</Profile> <Description>Sharpen Complex 2 + YV12 Chroma Upsampling</Description> <Code> sampler s0 : register(s0); float4 p0 : register(c0); float4 p1 : register(c1); #define width (p0[0]) #define height (p0[1]) #define px (p1[0]) #define py (p1[1]) #define moyenne 0.6 #define bx (moyenne*px) #define by (moyenne*py) #define CoefFlou 2 #define CoefOri (1+ CoefFlou) #define SharpenEdge 0.25 #define Sharpen_val0 2.5 #define Sharpen_val1 ((Sharpen_val0-1) / 8.0) float4 getPixel(float2 tex, float dx, float dy) { tex.x+=dx; tex.y+=dy; return tex2D(s0, tex); } float4 rgb2yuv(float4 rgb) { float4x4 coeffs= { 0.299, 0.587, 0.114, 0.000, -0.147,-0.289, 0.436, 0.000, 0.615,-0.515,-0.100, 0.000, 0.000, 0.000, 0.000, 0.000 }; return mul(coeffs,rgb); } float4 yuv2rgb(float4 yuv) { float4x4 coeffs= { 1.000, 0.000, 1.140, 0.000, 1.000,-0.395,-0.581, 0.000, 1.000, 2.032, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000 }; return mul(coeffs,yuv); } float4 main(float2 tex : TEXCOORD0) : COLOR { float dx=1/width; float dy=1/height; float4 yuv00=rgb2yuv(getPixel(tex,-dx,-dy)); float4 yuv01=rgb2yuv(getPixel(tex,-dx, 0)); float4 yuv02=rgb2yuv(getPixel(tex,-dx, dy)); float4 yuv10=rgb2yuv(getPixel(tex, 0,-dy)); float4 yuv11=rgb2yuv(getPixel(tex, 0, 0)); float4 yuv12=rgb2yuv(getPixel(tex, 0, dy)); float4 yuv20=rgb2yuv(getPixel(tex, dx,-dy)); float4 yuv21=rgb2yuv(getPixel(tex, dx, 0)); float4 yuv22=rgb2yuv(getPixel(tex, dx, dy)); float4 yuv=(yuv00*1+yuv01*2+yuv02*1+yuv10*2+yuv11*4+yuv12*2+yuv20*1+yuv21*2+yuv22*1)/16; yuv.r=yuv11.r; float4 ori = yuv2rgb(yuv); float4 c1 = tex2D(s0, tex+float2(-bx,-by)); float4 c2 = tex2D(s0, tex+float2(0,-by)); float4 c3 = tex2D(s0, tex+float2(bx,-by)); float4 c4 = tex2D(s0, tex+float2(-bx,0)); float4 c5 = tex2D(s0, tex+float2(bx,0)); float4 c6 = tex2D(s0, tex+float2(-bx,by)); float4 c7 = tex2D(s0, tex+float2(0,by)); float4 c8 = tex2D(s0, tex+float2(bx,by)); float4 flou = (c1+c3+c6+c8+2*(c2+c4+c5+c7)+4*ori)*0.0625; float4 cori = CoefOri*tex2D(s0, tex)-CoefFlou*flou; 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)); float delta1 = (c3+2*c5+c8)-(c1+2*c4+c6); float delta2 = (c6+2*c7+c8)-(c1+2*c2+c3); if(sqrt(mul(delta1,delta1)+mul(delta2,delta2))>SharpenEdge) { return ori*Sharpen_val0-(c1+c2+c3+c4+c5+c6+c7+c8)*Sharpen_val1; } else { return cori; } } </Code> </Shader> Für Verbesserungsvorschläge usw. bin ich natürlich jederzeit dankbar Edited December 31, 2010 by Freezer Quote Link to comment
CiNcH Posted January 2, 2011 Author Share Posted January 2, 2011 Hier mal mein erster Versuch die Shader "YV12 Chroma Upsampling" und "Sharpen Complex 2" zu vereinen. Den Chroma Upsampler braucht man scheinbar nur für Radeon GPU's < HD 4000. Mit meiner HD 3650 ist das Chroma Upsampling jedenfalls nicht gut, sowohl mit EVR Custom in MPC-HC als auch im DVBViewer. Mit Standard EVR gibt es dieses Problem nicht. Sehr komisch, da in allen Fällen die NV12 Pipeline der Grafikkarte verwendet wird. Hier der Beleg für das schlechte Upsampling. Shader auf diese Weise zu vereinen führt meist nicht zum gewünschten Ergebnis. Ein Shader wird pro Pixel aufgerufen. Verwendet ein Shader aber Nachbarpixel zur Berechnung des aktuellen Pixels ist das Ergebnis anders, je nachdem wie die Funktionen gestackt werden. Packt man 2 Funktionen in einen Shader, verwendet die 2. Funktion noch unbearbeitete Nachbarpixel. Packt man die 2 Funktionen in 2 unterschiedliche Shader, wird das komplette Bild erst von Shader 1, anschließend von Shader 2 bearbeitet. Shader 2 verwendet also nur noch Pixel, die bereits von Shader 1 bearbeitet wurden. Verwenden beide Funktionen keine Nachbarpixel ist das natürlich kein Problem. Quote Link to comment
Freezer Posted January 2, 2011 Share Posted January 2, 2011 Ich verwende eine HD 5770 unter Win 7 mit EVR Custom und da besteht das Problem mit dem schlechten Chroma Upsampling auch. Hier mal Screenshots davon: Quote Link to comment
cinergy Posted January 17, 2011 Share Posted January 17, 2011 Es war ja mal die Rede davon, daß in einer der nächsten DVBViewer-Versionen die im angegebenen Link enthaltenen Shader genutzt werden können. http://forum.doom9.org/showthread.php?t=157634 Leider geht da mit der gerade veröffentlichten 4.6 so gut wie nix Schade eigentlich. Hatte mich schon drauf gefreut als ich sah, daß 4.6 verfügbar ist. Quote Link to comment
Freezer Posted January 18, 2011 Share Posted January 18, 2011 Muss man da angemeldet sein um die Shader runterladen zu können? Sehe nämlich nix ... Aber mach dir da mal keine all zu großen Hoffnungen dass der DVBViewer in näherer Zukunft neuere Shader unterstützt, wenn noch nichtmal seit über einem dreiviertel Jahr bestehende Bugs diesbezüglich gefixed werden Quote Link to comment
cinergy Posted January 18, 2011 Share Posted January 18, 2011 Muss man da angemeldet sein um die Shader runterladen zu können? Sehe nämlich nix ... auf der letzten seite ist ein Link zum aktuellen Paket: http://forum.doom9.org/showthread.php?p=1467856#post1467856 Quote Link to comment
LocalHolgi Posted July 13, 2011 Share Posted July 13, 2011 Hi, vielleicht kann mir ja mal jemand helfen Ich wollte ein GLSL Shader für Lanczos schreiben, allerdings mag er das nicht kompilieren. Ich krieg das mit der Matrizen-Multiplikation einfach nicht wirklich hin: sampler s0 : register(s0); float4 p0 : register(c0); #define width (p0[0]) #define height (p0[1]) #define PI acos(-1) float4 weight4(float x) { float4 sample = round(PI * float4(1.0 + x, x, 1.0 - x, 2.0 - x)); float4 ret = 2.0 * sin(sample) * sin(sample / 2.0) / pow(sample, 2.0); return ret / dot(ret, 1.0); } float3 pixel(float xpos, float ypos) { return tex2D(s0, float2(xpos, ypos)); } float3 gline(float ypos, float4 xpos, float4 linetaps) { return float4x3( pixel(xpos.x, ypos), pixel(xpos.y, ypos), pixel(xpos.z, ypos), pixel(xpos.w, ypos)) * linetaps; } float4 main(float2 tex : TEXCOORD0) : COLOR { float2 stepxy = 1.0 / float2(width, height); float2 pos = tex.xy + stepxy * 0.5; float2 f = round(pos / stepxy); float2 xystart = (-1.5 - f) * stepxy + pos; float4 xpos = float4( xystart.x, xystart.x + stepxy.x, xystart.x + stepxy.x * 2.0, xystart.x + stepxy.x * 3.0); float4 linetaps = weight4(f.x); float4 columntaps = weight4(f.y); float4 color = float4x3( gline(xystart.y , xpos, linetaps), gline(xystart.y + stepxy.y , xpos, linetaps), gline(xystart.y + stepxy.y * 2.0, xpos, linetaps), gline(xystart.y + stepxy.y * 3.0, xpos, linetaps)) * columntaps; color.a = 1.0; return color; } Quote Link to comment
hackbart Posted July 13, 2011 Share Posted July 13, 2011 Hi, probier mal sowas: return mul(float4x3( pixel(xpos.x, ypos), pixel(xpos.y, ypos), pixel(xpos.z, ypos), pixel(xpos.w, ypos)), linetaps); Ansonsten bin ich mir nicht wirklich sicher ob das klappt Christian Quote Link to comment
nuts Posted July 13, 2011 Share Posted July 13, 2011 (edited) Wo kommt bei dem Lanczos-Versuch die Zielauflösung ins Spiel? Müsste diese nicht im Shader selbst definiert werden? Edited July 13, 2011 by nuts Quote Link to comment
LocalHolgi Posted July 13, 2011 Share Posted July 13, 2011 Das Original stammt von hier: http://pastebin.com/rCQtiqgR Quote Link to comment
CiNcH Posted July 13, 2011 Author Share Posted July 13, 2011 Bezüglich Skalierung verfolge ich gerade einen anderen Ansatz... Wenn der EVR Custom Allocator/Presenter beim Mixer einen Media-Type mit entsprechenden Parametern für Auflösung/PAR/Aperature setzt, macht selbiger die ganze Skalierung. Beispiel: Quelle: 720x576 mit PAR 64:45 (16:9 Anamorph) Ziel: 1920x1080 mit PAR 1:1 Wenn man jetzt beim Mixer über SetOutputType die Zielparameter übergibt, sprich 1920x1080 für MF_MT_FRAME_SIZE und 1:1 für MF_MT_PIXEL_ASPECT_RATIO, sollte der Mixer die ganze Skalierung vornehmen. Der Allocator/Presenter muss dann natürlich auch entsprechend große Texturen bereitstellen. Keine Ahnung, wie gut die Skalierwerkzeuge vom Mixer sind. Evtl. kann da auch was über DXVA getriggert werden? Ich nehme an, der Standard-EVR geht genau diesen Weg. Das letzte mal, als ich die Skalierung mit Standard-EVR unter die Lupe genommen habe, kam da nicht mehr als Bilinear heraus. Evtl. ist das mit aktuellen GPU's anders. Vielleicht bin ich da auch etwas auf dem Holzweg und die Skalierung sollte doch der Presenter machen... Quote Link to comment
nuts Posted July 14, 2011 Share Posted July 14, 2011 Ich finde im Netz nur Informationen zu "nearest neighbor" und "bilinear" für den EVR Customrenderer. Zusätzlich gibt es die Option in MPC-HC den bikubischen Shader einzubinden. Der "ScalerShader" setzt vor dem Mixer ein und daher müsste man wissen welche Zielauflösung gewünscht ist. Das kann doch eigentlich nur die Hauptanwendung übernehmen? Quote Link to comment
LocalHolgi Posted July 14, 2011 Share Posted July 14, 2011 Naja ich denke nicht das das notwendig ist, wenn man die Auflösung von seinem Display kennt und im D3D Exklusivmodus betreibt. Da reicht die Angabe der Breite/Höhe von der Zieltextur eigentlich aus. Quote Link to comment
nuts Posted July 14, 2011 Share Posted July 14, 2011 (edited) Ich hab mal im MPC-HC Code gewühlt. Viel verstanden habe ich nicht, aber die betreffende Stelle für den ScalingShader sollte hier drin sein: http://mpc-hc.svn.sourceforge.net/viewvc/mpc-hc/branches/renderer_fixes/src/filters/renderer/VideoRenderers/DX9RenderingEngine.cpp?revision=3063&view=markup Videoauflösung und Zielauflösung wird nach meinem geringen C++ Verständnis als Shaderkonstante geliefert. Der DVBViewer liefert ja selbst auch ein paar Daten: Über das Register c0 bekommst du ein paar Informationen vom DVBViewer: #define width (p0[0]) #define height (p0[1]) #define counter (p0[2]) #define clock (p0[3]) #define one_over_width (p1[0]) #define one_over_height (p1[1]) Width und Height sind die Größen der Textur, One_Over_Width ist 1/Width bzw. Height ist 1/Height. Das brauchten ein paar Shader und um Rechenzeit zu sparen wird das von der Anwendung übergeben. Der Counter erhöht sich stetig, ebenso wie die Uhr. Für die Spielereien mit dem Lanczos-Shader ist das aber erstmal egal. Weiss jemand wo der bikubische Shader von mpc-hc zu finden ist? Edited July 14, 2011 by nuts Quote Link to comment
LocalHolgi Posted July 14, 2011 Share Posted July 14, 2011 Du meinst der hier? #define Magnify (4/3.) sampler s0; float2 c0; float2 c1; #define sp(a, float4 a = tex2D(s0, float2(tex.x, coord+b*c1.y)); float4 main(float2 tex : TEXCOORD0) : COLOR { float coord = (tex.y/Magnify+.5-.5/Magnify)*c0.y;// assign the output position, normalized to texture height in pixels float t = frac(coord);// calculate the difference between the output pixel and the original surrounding two pixels coord = (coord-t+.5)*c1.y;// adjust sampling matrix to put the ouput pixel in the interval [Q1, Q2) sp(Q0, -1) sp(Q1, 0) sp(Q2, 1) sp(Q3, 2)// original pixels return ((((Q1-Q2+(Q3-Q0)/3.)*t+Q0+Q2-Q1*2)*t+Q2-Q0)*t*3+Q0+Q1*4+Q2)/6.;// interpolation output } alternativ hab ich noch den hier: // (C) 2011 Jan-Willem Krans (janwillem32 <at> hotmail.com) // This file is part of Video pixel shader pack. // This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. // You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. // Perlin Smootherstep2×2 resizer // This shader should be run as a screen space pixel shader if you are up-scaling. // This shader should not be run as a screen space pixel shader if you are down-scaling. // This shader requires compiling with ps_2_0, but higher is better, see http://en.wikipedia.org/wiki/Pixel_shader to look up what PS version your video card supports. // If possible, avoid compiling with the software emulation modes (ps_?_sw). Pixel shaders require a lot of processing power to run in real-time software mode. // This shader is meant to work with linear RGB input and output. Regular R'G'B' with a video gamma encoding will have to be converted with the linear gamma shaders to work properly. // Use this shader to scale an image by Perlin Smootherstep2×2 interpolation. // fractions, either decimal or not, are allowed // set the magnification factor #define Magnify (4/3.) sampler s0; float2 c0; float2 c1; #define sp(a, b, c) float4 a = tex2D(s0, tex+c1*float2(b, c)); float4 main(float2 tex : TEXCOORD0) : COLOR { tex = (tex/Magnify+.5-.5/Magnify)*c0;// normalize to texture width in pixels float2 t = frac(tex);// calculate the difference between the output pixel and the original surrounding two pixels tex = (tex-t+.5)*c1;// adjust sampling matrix to put the ouput pixel in the interval [Q0, Q1) // weights float2 w1 = ((6*t-15.)*t+10.)*pow(t, 3); float2 w0 = 1.-w1; // original pixels sp(M0, 0, 0) sp(M1, 0, 1) sp(L0, 1, 0) sp(L1, 1, 1) // vertical interpolation float4 Q0 = M0*w0.y+M1*w1.y; float4 Q1 = L0*w0.y+L1*w1.y; return Q0*w0.x+Q1*w1.x;// horizontal interpolation and output } Quote Link to comment
nuts Posted July 14, 2011 Share Posted July 14, 2011 (edited) Im Register C1 müsste die Zielauflösung zu finden sein? Diese müsste für den DVBV im Shader selbst hinterlegt werden? Etwas blöd wenn man den Syntax nicht kennt Float2 C1 (1920, 1080) Edited July 14, 2011 by nuts Quote Link to comment
CiNcH Posted July 14, 2011 Author Share Posted July 14, 2011 C-Register sind zum Speichern von Konstanten. Die kann der DVBViewer dem Shader übergeben, siehe IDirect3DDevice9::SetPixelShaderConstantF. Quote Link to comment
nuts Posted July 14, 2011 Share Posted July 14, 2011 Infos zur Zielauflösung werden derzeit aber nicht übergeben oder? Demnach müsste für die Spielereien mit den Resize-Shadern eben selbst mal was eingetragen werden. P.S. Du sagst uns das aber schon wenn das eh zu nichts führen kann oder? Quote Link to comment
CiNcH Posted July 14, 2011 Author Share Posted July 14, 2011 P.S. Du sagst uns das aber schon wenn das eh zu nichts führen kann oder? Ich muss mir das erst im Detail anschauen. Ich glaube, das läuft etwas anders . Bei den in MPC-HC integrierten Resize-Shadern wird die Quellauflösung übergeben. Das Ziel wird irgendwie über Vertizes festgelegt. Den entsprechenden Code findet man hier. Jan-Willem's Shader arbeiten als Screenspace-Shader (d.h. man kann es wohl auch anders machen, was mit dem jetzigen DVBViewer aber auch nicht funktionieren wird) bzw. sind in seinen eigenen Builds auch als Resize-Shader integriert. Überzeugt haben mich diese Resizer bisher noch nicht. Quote Link to comment
nuts Posted July 14, 2011 Share Posted July 14, 2011 (edited) Den sourcecode hab ich mir auch schon angesehen: float fConstData[][4] = { {(float)desc.Width, (float)desc.Height, (float)(counter++), (float)diff / CLOCKS_PER_SEC}, {1.0f / desc.Width, 1.0f / desc.Height, 0, 0}, }; #else CSize VideoSize = GetVisibleVideoSize(); float fConstData[][4] = { {(float)VideoSize.cx, (float)VideoSize.cy, (float)(counter++), (float)diff / CLOCKS_PER_SEC}, {1.0f / VideoSize.cx, 1.0f / VideoSize.cy, 0, 0}, }; #endif hr = m_pD3DDev->SetPixelShaderConstantF(0, (float*)fConstData, countof(fConstData)); Und daraus geschlossen, dass die Zielauflösung mit übergeben wird. Edited July 14, 2011 by nuts Quote Link to comment
CiNcH Posted July 14, 2011 Author Share Posted July 14, 2011 Bei dem von dir zitierten Code wird aber der erste IF-Zweig kompiliert. Da wird die Textur-Auflösung genommen, und das ist an dieser Stelle die Quellauflösung. Außerdem sind das die Konstanten für die "User-Shader" vor dem Resizer. Konstanten für die Resize-Shader findet man zum Beispiel in der Methode 'TextureResizeBicubic1pass'. Quote Link to comment
wolpers0815 Posted July 16, 2011 Share Posted July 16, 2011 Hey Leute, ich verfolge diesen Thread als Bildqualitätsliebhaber mit großem Interesse. Verstehe ich das richtig, dass man möglicherweise einen Lanczos-Shader im DVBViewer dazu benutzen könnte, das Upscalen zu bewerkstelligen, anstatt dies dem EVR-Renderer zu überlassen? MPC-HC bietet doch anscheinend diese Möglichkeit, was die Machbarkeit eigentlich demonstriert. Alternativ frage ich mich, warum der DVBViewer die Modularität von DirectShow nicht noch besser ausnutzt, so dass auch andere Renderer verwendet werden könnten (z.B. MadVR). Oder habe ich hier einen Denkfehler? Viele Grüße, Wolpers Quote Link to comment
CiNcH Posted July 16, 2011 Author Share Posted July 16, 2011 das Upscalen zu bewerkstelligen, anstatt dies dem EVR-Renderer zu überlassen? Das macht genau genommen nicht der EVR, sondern die Standard D3D MAG/MIN Filter. Oder habe ich hier einen Denkfehler? Ja, Renderer stehen in enger Wechselwirkung mit der Applikation. Quote Link to comment
nuts Posted July 16, 2011 Share Posted July 16, 2011 Verstehe ich das richtig, dass man möglicherweise einen Lanczos-Shader im DVBViewer dazu benutzen könnte, das Upscalen zu bewerkstelligen, anstatt dies dem EVR-Renderer zu überlassen? MPC-HC bietet doch anscheinend diese Möglichkeit, was die Machbarkeit eigentlich demonstriert. Theoretisch schon. Mir gelingt das aber irgendwie nicht die Zielauflösung in den Shader zu bekommen (mangels HLSL Kenntnissen). Ich reite auf der Zielaufösung so rum, da man ohne nach meinem Verständnis kein upscaling machen kann. Quote Link to comment
CiNcH Posted July 16, 2011 Author Share Posted July 16, 2011 Ich werde mich wie gesagt im Detail damit beschäftigen. Ich bin aktuell noch dran, bessere Debug- und Analyse-Möglichkeiten zu schaffen und den Presenter bzw. Frame-Scheduler an den VSync zu binden. Ich wünsche mir ein optimales Timing, unabhängig von Grafikeinheit/Treiber, Aero/DWM usw. Quote Link to comment
RobertSmith Posted March 24, 2012 Share Posted March 24, 2012 Hallo, alle paar Monate, wenn ich mal wieder zufällig eine Aufnahme mit VLC abgespiele, staune ich über die Schärfe. Daraufhin schaue ich dann immer hier in diesen Thread. Könnt Ihr mir vielleicht sagen, ob es Neuigkeiten gibt? Schöne Grüße, rs Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.