Log in

View Full Version : fft3dGPU 0.8.2


Pages : 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16 17 18 19

tsp
25th December 2005, 22:56
puffpio: ok I will try to see if I forgot to enable something. It might just be the change in default values. useFloat16=true is equal to precison=0 and UseFloat16=false is equal to precision=2 and precision=1 is a new option. Also mode=0 was the default. Try and see if some of these settings make any difference (or try wintype=1 or 2).

BigDid: Thanks for reporting. So it seems to work fine on the radeon. (Could you post a screenshot of this scirpt? BlankClip(color_yuv=$7c7c7c,pixel_type= "YV12").fft3dgpu(sigma=2500,plane=1,mode=1))

I will continue working on this filter when I get back from the holidays.

BigDid
26th December 2005, 03:26
Sure,

It's not green, it's not grey, it's in between, see 640*480 attached jpg. :)

Did

puffpio
26th December 2005, 09:29
hmm maybe that's why...i thought precision = 1 is the 32 bit float mode...

puffpio
26th December 2005, 09:39
http://img365.imageshack.us/img365/889/snapshot200512260037007uv.jpg

this is the artifact i'm noticing..it looks like vertical banding, when I comment out the 3dfilter, the banding goes away....here is my full avisynth script:

-------------------

LoadPlugin("C:\Program Files\GordianKnot\DGMPGDec\DGDecode.dll")

video = mpeg2source("srf0001.d2v")
video = video.DeDot()
interp = video.separatefields().selecteven().EEDI2(field=1)
video = video.tdeint(order=1, field=1, edeint=interp)
video = video.FFT3DGPU(sigma=3, plane=4, bt=4, mode=1, precision=0, degrid=1, sharpen=0.7)
video = video.Lanczos4Resize(512, 384)
video = video.ColorMatrix()

return video

InsulinJunkie
26th December 2005, 11:15
this is the artifact i'm noticing..it looks like vertical banding


I started getting that on the newest versions, too, with a Radeon 9700 and latest ATI drivers. Lowering the sharpening a bit - to about .50 - helped somewhat in my case.

My files are usually old B&W movies, captured from analog cable to MJPEG (Q=19). (Sorry, I don't have any projects on my hard drive at the moment, so I can't post a screenshot.)

After IVTC, I usually do something like:
-----------------------------------------------------
Greyscale()
Undot()
DeGrainMedian(limitY=3,limitUV=0,mode=1,norow=true)
DeGrainMedian(limitY=3,limitUV=0,mode=1,norow=true)
FFT3DGPU(sigma=3, bt=3, mode=1, sharpen=0.7)

tsp
26th December 2005, 13:13
I can't do something about before I get back from my vacation but I think I know what is wrong (misalignt texture). Wintype=2 might help.

Dark Alchemist
1st January 2006, 11:24
fft3dGPU is unavailable because avisynth.org STILL has exceeded their bandwidth limits.

Really we need to get a mirror up or get these plugins off of that site because today Jan 1 marks over a week I have been trying to get this plugin and no copies exist on the net (that I could find) outside of that site. That is a pity.

Wilbert
1st January 2006, 14:57
Really we need to get a mirror up or get these plugins off of that site because today Jan 1 marks over a week (...)
We need to discuss that when Richard is back.

Btw, the latest fft3dGPU i have is 0.5 (i don't think it is the most recent one):

http://www.geocities.com/wilbertdijkhof/fft3dgpu_05.zip

tsp
1st January 2006, 16:23
You can get version 0.6.1.9 from www.tsp.person.dk/fft3dgpu0.6.1.9.exe until avisynth.org gets back online.

Dark Alchemist
1st January 2006, 19:27
thank you thank you. :)

edit: OMG. :O

FFT3dFilter(bh=32, bw=32, oh=16, ow=16, sigma=1, plane=3) so low media player was having to drop down to a point I was getting 5 frames instead of 1 so was 5, 10, 15,... instead of 1,2,3,...

FFT3dGPU(bh=32, bw=32, oh=16, ow=16, sigma=1, plane=3) was 30fps with not a dropped frame one on my 9800pro AMD 2700+

I am impressed but it is so high (in real time) I wonder if I did something wrong.

I am starting to see a picket fence on FFT3dGPU(sigma=15). You know that picture you drew? I see that pattern on my work but not when using FFT3dFilter.

Any ideas?

Revgen
1st January 2006, 20:17
Try precision=2 and see what happens. This will run FFT3DGPU in fp32 instead of fp16.

Also set degrid=1.0

FFT3DFilter always sets degrid to this default.

tsp
1st January 2006, 21:14
Dark Alchemist: the default value for ow and oh is half the bw,bh. The fence appears because there are a bug in the current version and I still have to exams left before I will fix that (but don't worry. The last exam is the januar the 4.).
Until then try wintype=2 or download version 0.6:
http://www.tsp.person.dk/fft3dgpu0.6.exe
and remember to use mode=1.
FFT3dGPU(bh=32, bw=32, mode=1, sigma=1, plane=3)

Dark Alchemist
2nd January 2006, 11:15
Will do and as I said it is a damn nice piece of work you have.

See I have been saying for about 2 years that people could off load stuff to the video cards like this does and achieve a remarkable speed increase. So, I feel good to see it finally done to some degree. :)

FFT3dGPU(mode=1,wintype=2,precision=2,degrid=1.0,bh=32, bw=32, sigma=30) I have used all sorts of combinations of this and only wintype gets rid of the grids *BUT* it leaves a weird type of ghost as if my source went from 25mbps down to 2kbps.

I am going to try .6 now and see if it works.

I can report that .6 still has the grids as does .6.1

tsp
2nd January 2006, 18:54
Hmm it does look like there is something wrong with degrid. It's a larger gridsize than the one that appears with degrid=0.0 . Will try and see if I can fix that.

tsp
3rd January 2006, 15:56
I found the error.
the fix until I release the next version is to open the file fft3dgpu.hlsl that are in the
same directory as fft3dgpu.dll (usual the avisynth plugin directory) in a texteditor and go to line 574 where the following text:

float4 Minimize( PS_INPUT In) :COLOR
{
return tex2D(Src,In.texCoord);
}

should be changed to

float4 Minimize( PS_INPUT In) :COLOR
{
return tex2D(Src,In.texCoord).xyxy;
}



See I have been saying for about 2 years that people could off load stuff to the video cards like this does and achieve a remarkable speed increase. So, I feel good to see it finally done to some degree.

thanks for the kind word currently it's only some of the floating point heavy filters(like most of fizicks filters) that will benefit from the fast GPU but as the videocards gets faster I think more filters could benefit from offloading work to the gpu. But it is still difficult to program GPU filters compaired to the normal cpu only filters.

Dark Alchemist
3rd January 2006, 16:43
Do the drivers get in the way of your work or are you shielded from them via an api like directx? Would directx just complicate matters ever worse?

Nothing worse then every month having to worry if the latest driver updates from ATI/Nvidia will bust what you had previously done.

My main theory is that off loading 3d rendering so the GPU can share with the CPU would greatly increase the speed of working in something like Maya. This filter proves, to some extent, that to do that would help but by how much I do not know.

tsp
4th January 2006, 00:48
Do the drivers get in the way of your work or are you shielded from them via an api like directx? Would directx just complicate matters ever worse?

Nothing worse then every month having to worry if the latest driver updates from ATI/Nvidia will bust what you had previously done.

My main theory is that off loading 3d rendering so the GPU can share with the CPU would greatly increase the speed of working in something like Maya. This filter proves, to some extent, that to do that would help but by how much I do not know.
Currently I use directx so different driver version isn't such a big problem because the directx api doesn't change with each driver version(and it seems like the directx driver is more stable than OpenGL) unlike openGl where new extensions can be added. This means that new features are faster made available but it is difficult to program for both nvidia and ati hardware.
A bigger problem is that the different GPU support different features and produces slightly different result making it rather painfull to make sure this filter works on most directx 9 hardware(especially the geforce fx is giving me some headache).
Also it is more difficult to debug the program and more stuff can go wrong(like misalignt textures).

As the GPU gets faster there should be a good chance that more application will use it as a coprocessor (take a look at www.gpgpu.org for some different implementations(including 3d rendering))

Dark Alchemist
4th January 2006, 01:24
I will look at that link shortly but I must report that I am getting some picket fences still even with your fix (especially if I lower bw and bh). :(

Oh, and one other thing when, if ever, will this command be available in gpu (meaning all of these choices)?

fft3dfilter(sigma=3, sigma2=5, sigma3=10, sigma4=20, plane=0, bt=3, bw=16, bh=16, ow=8, oh=8, sharpen=0.3, smin=20, smax=1000, wintype=2, kratio=1.0, measure=true, interlaced=false, degrid=1)

tsp
4th January 2006, 21:36
I will look at that link shortly but I must report that I am getting some picket fences still even with your fix (especially if I lower bw and bh). :(

same here. I hope the fix will be just as easy.


Oh, and one other thing when, if ever, will this command be available in gpu (meaning all of these choices)?

fft3dfilter(sigma=3, sigma2=5, sigma3=10, sigma4=20, plane=0, bt=3, bw=16, bh=16, ow=8, oh=8, sharpen=0.3, smin=20, smax=1000, wintype=2, kratio=1.0, measure=true, interlaced=false, degrid=1)
well the only thing missing is the different sigma values. In the next version interlaced will be supported. Also measure wouldn't be nessecary because fft3dgpu doesn't use fftw.

Dark Alchemist
4th January 2006, 23:04
Cool beans but right now the two main concerns are (in order) the picket fences and the different sigmas.

Keep up the good work. :)

Oh, I looked at that link and very interesting and I can imagine in 1-2 more years when the newer cards come out that are made for trig/physics (supposedly they will come out on the video cards very soon).

Dark Alchemist
7th January 2006, 23:59
Seems we are closer than I thought to the physics cards (still I give it 2 years before everyone that counts has one).

http://www.devhardware.com/c/a/Video-Cards/Physics-Processing-Unit

MfA
8th January 2006, 01:22
The manufacturer has never even given the slightest hint that they will expose the programmability of the PPU, it seems unlikely it will happen since they want to make money on the software side too. Even if they weren't so suicidally proprietary I doubt PPUs would be a big hit.

With stream output DX10 level hardware will be able to implement most image filters. That's far more interesting for us than PPUs.

Dark Alchemist
8th January 2006, 04:06
I dunno the industry does seem hyped about the PPU's though and besides is DX10 going to be for we who refuse to downgrade to Vista and stay on XP?

Vista may make me switch my desktop over to Linux I hate it so badly (mostly because it is a hog and is too controlling concerning stuff doom9 talks about etc...).

MfA
8th January 2006, 18:39
Without a way to program them they won't do us any good. OpenGL extensions will probably expose everything DX10 does too.

Dark Alchemist
8th January 2006, 19:55
They should allow us to program them since it is to off load all of the math the games use for physics.

We will see how it goes because if they slap a PPU onto the card with no way to program for it then it would serve very little.

MfA
8th January 2006, 21:26
If you want to use the PPU you have to use the PhysX SDK. That's how you use it for physics, and that's why you can't use it for anything else.

lexor
14th January 2006, 19:21
hey is it a known bug that switching users under WinXP causes fft3dgpu to blow up in your face? I'd think people with winxp would notice by now :)

tsp
15th January 2006, 02:46
hey is it a known bug that switching users under WinXP causes fft3dgpu to blow up in your face? I'd think people with winxp would notice by now :)
That bug should be fixed after version 0.46.

lexor
15th January 2006, 06:41
That bug should be fixed after version 0.46.
you mean upcoming 0.46.0 or old 0.4.6? if the later than I have 0.6.1 and I still get insta crash if I switch users.

tsp
16th January 2006, 02:04
lexor I can't reproduce it at my end so please post your script, program and graphics card used and driver version.

lexor
16th January 2006, 15:25
I use gForce 6600 GT (no overclock or anything) with nv drivers ver.81.98 under Windows XP SP2. I use x264 through MeGUI

mpeg2source("path")
leakkernedeing(order=1)
crop(0,0,0,-8)
fft3dGPU(sigma=2, plane=4,sharpen=0.7)


encode goes flawlessly and I can switch users if I remove fft3d instruction, otherwise switch user causes crash, but encodes no problem if I don't switch and let it finish.

tsp
2nd February 2006, 19:43
version 0.6.2 is released. Degrid works better and vertical banding is gone when using mode 1. Right edge artifacts gone when using non mod 8 width and plane>0.

puffpio
2nd February 2006, 20:39
thanks so much!

Fizick
2nd February 2006, 22:17
tsp,
did you fix FFT3dGPU only, or these bugs exist in FFT3DFilter too?

tsp
2nd February 2006, 22:33
tsp,
did you fix FFT3dGPU only, or these bugs exist in FFT3DFilter too?
They were only in fft3dGPU. Don't worry I will tell you if I find any new bugs in fft3dfilter.

Boulder
6th February 2006, 15:37
FFT3DGPU won't work with HC v0.17. It could be HC specific as it works with v0.16 but when I reported the problem to hank315, he said that he couldn't get FFT3DGPU working on his card, GF5200FX IIRC. Maybe you could work something out together?

OEG
6th February 2006, 19:39
Most processing on interlaced material is done on the separate top and bottom field streams.
Is FFT3DGPU capable of running on two streams in parallel like this?

SeparateFields()
Top=SelectEven().SomeOtherProcessing().FFT3DGPU(parameters)
Bottom=SelectOdd().SomeOtherProcessing().FFT3DGPU(same set of parameters)
Interleave(Top,Bottom)
Weave()

Or is it better to run the filter like this?

SeparateFields()
Top=SelectEven().SomeOtherProcessing()
Bottom=SelectOdd().SomeOtherProcessing()
Interleave(Top,Bottom).FFT3DGPU(parameters)
Weave()

For SomeOtherProcessing() read "resize", etc."

My computer has a P4 Prescott, and hyperthreading is on.
The video card has a Radeon 9800 on AGP bus.

Thanks in advance.

tsp
6th February 2006, 20:24
Boulder: I got the same error with HC 0.17.

OEG: for now use the first version else you will blend the two fields if bt>1 unless you run out of gpu memory. In the next version support for interlaced frames should be added so you can use this:

SeparateFields()
Top=SelectEven().SomeOtherProcessing()
Bottom=SelectOdd().SomeOtherProcessing()
Interleave(Top,Bottom)
Weave().FFT3DGPU(parameters,interlaced=true)

tsp
8th February 2006, 11:45
Found what caused the error with HC 0.17. Will be fixed in the next release.

OEG
12th February 2006, 23:11
The Radeon 9800 card in my computer has 128 MB, and when I want to use any more complicated FFT3dGPU filtering than default settings on separated fields I get an error message which I think has to do about memory.

Since I haven't found any specs on memory usage and consumption by FFT3dGPU I am curious to its requirements.

tsp
13th February 2006, 01:37
it depends on what resolution the clip has. Higher resolution=more memory usage. Increasing bt, higher precision, mode=1, higher bw,ow,bh,oh, using sharpen and/or degrid also means higher memory usage. Every instance of fft3dgpu uses increases the memory used. So you can never have to much (gpu) memory.

bira
4th March 2006, 21:57
Why does this make my video shake up and down?

separatefields()
vid_e=selecteven()
vid_o=selectodd()
vid_e=FFT3DGPU(parameters)
vid_o=FFT3DGPU(parameters)
interleave(vid_e,vid_o)
Weave()

Why does this NOT make my video shake up and down?

SeparateFields()
Top=SelectEven().SomeOtherProcessing().FFT3DGPU(parameters)
Bottom=SelectOdd().SomeOtherProcessing().FFT3DGPU(same set of parameters)
Interleave(Top,Bottom)
Weave()

Thanks!

foxyshadis
4th March 2006, 22:26
Your first script is wrong, you left a few variables off:

vid_e=vid_e.FFT3DGPU(parameters)
vid_o=vid_o.FFT3DGPU(parameters)

Thus you're filtering the separatefields() output in both, which mucks things up.

bira
5th March 2006, 04:18
Thanks!

zlab
5th March 2006, 16:35
For YV12 format, what is the suitable plane=? if I also want to process the color?

Boulder
5th March 2006, 16:59
plane=0 filters luma
plane=1,2 or 3 filters both chroma channels
plane=4 filters all channels

tsp
12th March 2006, 01:30
I did a small speed test with my new computer with an Gainward Geforce 7800GT Golden Sample Goes like Hell (core/mem clock = 450/1300 MHZ) and an opteron 165 overclocked at 2250 MHz (stupid motherboard will only give me 50 milivolt extra so that is why it's not clocked higher).
the source was a 720x576 simpsons clip.
the following script where used (fft3dgpu version 0.6.2, fft3dfilter version 1.8.5 and mt version 0.5):

AVISource("e:\sim.avi").converttoyv12().trim(65410,-2000)
FFT3dGPU(mode=1,bt=4,precision=2,sharpen=1,degrid=1,bw=64,bh=64,plane=4)

fft3dgpu: average 11.4 fps

AVISource("e:\sim.avi").converttoyv12().trim(65410,-2000)
mt("FFT3dfilter(bt=4,sharpen=1,degrid=1,ow=32,bw=64,oh=32,bh=64,plane=4)")

fft3dfilter+mt: average 3.7 fps

AVISource("e:\sim.avi").converttoyv12().trim(65410,-2000)
FFT3dfilter(bt=4,sharpen=1,degrid=1,ow=32,bw=64,oh=32,bh=64,plane=4)

fft3dfilter: average 2.3 fps


AVISource("e:\sim.avi").converttoyv12().trim(65410,-2000)
s.FFT3dGPU(mode=1,bt=4,precision=2,sharpen=1,degrid=1,bw=256,bh=256,plane=4)

average 5.8 fps (it has 512 mb memory. A very nice card)

AI
12th March 2006, 20:59
tsp
talanted works!

Once more question:
Have you plan to implement in GPU all my other plugins? :D
What you think about GPU version DePanEstimate?
1) DePanEstimate use FFT too
2) DePanEstimate upload more than download
or possible include on fft3dGPU
full algoritm with "compensation of global motion":mdata=DePanEstimate
DePanInterleave(Last,data=mdata, prev=2, next=1)
fft3dfilter(bt=4)
selectevery(4,2)more ideas about future development:
- What I know, new GPUs can Code in MPEG2/4
- most time need for find similar blocks
What you think about use GPU for mvAnalyse?

Boulder
13th March 2006, 07:15
What you think about use GPU for mvAnalyse?
I think porting MVTools would be really useful, if it just is possible at all :)

Backwoods
13th March 2006, 08:40
That would be great if possible.