Jump to content

  • Log In with Google      Sign In   
  • Create Account


Kepakiano

Member Since 27 Oct 2012
Offline Last Active Mar 09 2013 06:14 AM
-----

Posts I've Made

In Topic: SSBO vs. Texture

06 February 2013 - 12:19 PM

Thank you for your answers.

 

"Of course, it all depends on your exact situation, but are you sure that it is worth precalculating and storing the values at all rather than just calculating them on the fly per fragment?"

 

My 'boss' asked the same question :D

 

Okay, this is what I'm doing: http://pastebin.com/YXP6j9vN

Short description: "grid" defines a distorted 2D grid of points like this one:

(-1.0 1.0) (0.0 1.0) (1.0 1.0)
(-1.0 0.0) (-0.2 0.0) (1.0 0.0)
(-1.0 -1.0) (0.0 -1.0) (1.0 -1.0)

Note: These four quads are not enough, I need at least 16x16, maybe even 24x24 or 32x32.

So, for every fragment, I need to find out in which one of the quads the current fragment lies (lines 88 - 105, pretty naive implementation with linear complexity) by dividing the current quad into two triangles and calculating the point's barycentric coordinates in this triangle (lines 19 - 30). If the correct quad is found, the point will be bilinearly interpolated and the value will be returned.

The resulting vec2 is what I want to store for every fragment.

 

I'm pretty sure a texture/SSBO lookup would be faster than 1-16 (assuming I come up with a faster way to find the correct quad) point-in-triangle checks and one bilinear interpolation, but I have no experience in that matter. What do you think?

 

@samoth: The second is the case. I chose the SSBO, because of its ability to store arrays of arbitrary length, which would be nice. My target platform (a virtual reality lab) fully supports OpenGL 4.3 :) But you are probably right: The drawbacks outweigh the benefits compared to a texture.

 

The lab's projectors have a resolution of 1400x1050 pixels, so the buffer would need 1400*1050*8 Bytes (two floats per pixel) = 11,760,000 Bytes = 11.21 MiB of space which is probably too much for the L1 cache of a GTX 460 :/

 

So, (assuming I really precalculate) you think I should go for a texture?


In Topic: Generate random perpendicular unit vector

27 January 2013 - 08:17 AM

This is what I would do:
http://pastebin.com/fr4aU0cw (needs C++11)

1. Generate a random unit vector
2. Make it orthogonal to your given vector by using the Gram-Schmidt Process (http://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process)

Edit: The snippet does not check, whether v and random u are linearly independent.

In Topic: Mapping rectangular texture to arbitrary convex quadrilateral

25 January 2013 - 11:19 AM

This thread can be closed.

 

If someone comes across the same problems and finds this thread, here is what I did:

My previous post suggested that I wanted a perspective projection of the texture onto the quad, which I don't.

This is what I wanted:

pSMCrFC.png

 

-> A rectangular texture mapped onto a quadrilateral via bilinear interpolation. Since OpenGL does not provide any means to do this in the FFP (afaik), it is achieved in a fragment shader using the calculations from this thread: http://www.gamedev.net/topic/538963-interpolation-between-arbitrary-quadrilaterals/#entry4994411


In Topic: interpolation between arbitrary quadrilaterals

27 October 2012 - 07:50 AM

I know this is a VERY old thread, but I encountered this problem as well and found the only solution here.
Unfortunately, I think erissian's formula is flawed. There is a small error which kept me busy for a while, but I solved it and thought I could share the solution:

erissian wrote:
Mx = (1-s)Ax + st(A-D+C-B)x - t(A-D)x
My = (1-s)Ay + st(A-D+C-B)y - t(A-D)y

But it should be:
Mx = sBx+(1-s)Ax + st(A-D+C-B)x - t(A-D)x
My = sBy+(1-s)Ay + st(A-D+C-B)y - t(A-D)y

This simplifies to these coefficients of the quadratic equation at2 + bt + ct = 0
a = C⊗D+D⊗B+A⊗C+B⊗A
b = M⊗C+D⊗M+B⊗M+M⊗A+C⊗A+B⊗D+2(A⊗B)
c = M⊗B+A⊗M+B⊗A

I don't know if these are the same values diegovar calculated in the end, but they work :)

PARTNERS