-
Notifications
You must be signed in to change notification settings - Fork 128
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
OpenGL integration lookup textures confusion #8
Comments
I never got it working properly in openGL. According to the author, the OpenGL version has been broken since some time. |
What exactly is promoted as broken? I linked the (in my eyes) only necessary patch. The results itself look quite good. Maybe the differences are caused by some pixel/subpixel offsett of the image plane, Hardware and API differences (DX10 did run GTX Titan win 7, OpenGL did run on Quadro K5000 Linux Arch). So i would like to close the ticket if somone could confirm that the swapped red and green colors in the weighting pass are still reasonable for the image. It is hard for me to validate the weighting colors for reasonability. |
I'd love to take a look into this soon. If somebody with troubles in OpenGL could provide me with a minimal OpenGL SMAA demo, that would be help me out to match the DX10 output and the OpenGL one. I'd like to more officially support OpenGL in future releases. |
@iryoku I have one at https://github.com/turol/smaaDemo . It uses @mbechard's modified shader from #5 and as far as I can tell renders identically to the DX version. |
That is going to be helpful, thanks! |
Looking at my code I've realized the .dds loading library was automatically doing a vertical flip on the texture to keep up/down correct for the image in GL. So that explains why @turol also needed to do the flip. |
I implemented SMAA into my Doom 3 BFG fork which also uses OpenGL. I also thought that I had to use mbechard's modified shader to get rid of my wrong blend weight calculation pass output but I was wrong. I can confirm that it was only necessary to y-flip the area and search textures. I only implemented SMAA 1x so far but it is quite fun to experiment with. If someone is interested in my implementation then here it is: RobertBeckebans/RBDOOM-3-BFG@HDR...RobertBeckebans:SMAA |
@RobertBeckebans |
@biller23 Oh sorry you are right. I forgot that my main problem was that my edges and weights RGBA rendertargets had nearest filtering instead of linear filtering. The weights image is a little bit darker than in the DX10 demo but it seems to work. |
Perhaps alpha blending is enabled in the blending weight calculation pass? |
@iryoku Thanks for a quick reply! Great suggestion, but in my case blending is disabled across the board (I'm integrating 1x mode for now). Also tried disabling stenciling: no difference. Checked that targets are cleared to 0, including alpha. Maybe there's a special requirement for DX11 that I'm missing? |
I brought the images to photoshop, I think it is a gamma display issue. On the demo the display render target performs gamma correction, if you don't do that in your setup, that might explain the issue. It should yield the same results in practice, as this is just a render target visualization difference. I'll add this to the documentation. |
@iryoku Thanks for looking into this! The thing is, other outputs (edges, depth) look identical in my demo and the DX10 one. Also, there is visible blurring of the final result in my case(most visible on the hose in the picture), which is consistent with lower blending weights. May this be an issue with how I compile the shaders or setup defines? I don't use the Effects framework, as the demo does, I compile the shaders with fxc, as vs_4_1 and ps_4_1. (And HLSL version is defined prior to including SMAA.hlsl) |
The edges should look the same because they are either 0 or 1, so they are not affected by gamma. Judging at the differences, I believe you are doing the blending in gamma space (blending in gamma space gives "thicker" AA). You have to setup the textures as SRGB for the final pass to get the same results as the demo. |
@iryoku Turns out, I did in fact mix up the sRGB and non-sRGB views in my demo, and my render target was not sRGB. After a quick fix everything seems to work as it should. Thank you for your time and patience, and for developing a great antialiasing technique! |
Hi there,
i am integrating this great SMAA in my own OpenGL test framework. I am a bit confused if i handle correctly the lookup textures.
First i had to apply this patch to get the edge detection itself working:
pushrax@cd8f88c
Also i noticed that OpenGL and DirectX have different coordinate system locations in terms of uv-coordinates. So i inverted the Y-axes of the fullscreen triangle texture coordinates to get a buttom up rendering. But then my confusion starts. I use bmp files dumped by the provided python scripts. After reading them in i mirror them, so the Y-coordinate is flipped. After that step i get reasonable results but still different ones compared to the DX10 demo.
So i have no idea what causes the differences in my edge, weight and result pass. I adjusted the images to fit the lower left corner. So direkt comparison should work.
The edges seems to be shifted a little bit, but only some of them.
The weights seem to have flipped red and green parts as well as different intensity. This is the point where i am mostly confused. Is this flipping of red and green parts a result of failed usage of the lookup textures or is it a result of the very small differences from the first pass?
The reults itself looks reasonable and quite good, but on some parts still different. Everything seems thicker in the OpenGL results. Good visable at the wire for example.
So it seems to be related to my questions asked at the old opengl port project:
https://github.com/scrawl/smaa-opengl/issues/3
The text was updated successfully, but these errors were encountered: