I haven't really used the Geometry Shader stuff before. I'm old and don't like change. It frightens me.
But, currently with Gorgon I'm recycling a dynamic vertex buffer to display my sprites. Basically if the sprites use the same texture, shader, etc... it adds the sprite to the buffer until it's full or until there's a state change. If the buffer is full, then it's discarded, otherwise more sprites get appended until full. Upon state change or discard, it gets flushed to the render target in one draw primitive call. This seems pretty standard to me, and it's been working quite well for me.
However, I've been giving some thought to using a geometry shader to stream out the sprites. I've done a little reading and it seems that this is an ideal use case for GS. But, apparently there's a few gotcha's with these shaders? Notably, the 1024 32 bit float limit. I understand that the size of data out might an issue as well?
Currently, I'm using a position, color and uv coordinates for my sprites vertices. I suspect I'd need to send all of these, and more besides to shader to meet my needs. So would that cause an issue? I pre-transform my vertices before sending them to the vertex buffer (i.e. no world matrix, I've found this to improve performance), and update the vertex position by the camera and projection matrix in the vertex shader. Will this cause an issue?
Has anyone here used a GS to power a sprite renderer? Did you compare its performance to a batched solution (like the one I presented above)? I'm not able to set up a test project for the time being, so if I could get some feedback, that'd be swell.
Thanks.
- Viewing Profile: Topics: Tape_Worm
14 years ago on June 15th Gamedev.net was first launched! We want to thank all of you for being part of our community and hope the best years are ahead of us. Happy birthday Gamedev.net!
Community Stats
- Group Members
- Active Posts 1,159
- Profile Views 3,635
- Member Title Member
- Age 38 years old
- Birthday June 18, 1975
-
Gender
Male
-
Location
Calgary, AB
-
Interests
Beer
1168
Excellent
User Tools
Latest Visitors
Topics I've Started
Performance of geometry shaders for sprites instead of batching.
25 September 2012 - 02:16 PM
File I/O streaming performance.
17 September 2012 - 09:28 AM
I have a Windows application in C++ here that's got a very large file to stream in. The file is ~5GB in size, and currently the code does this:
Would using memory mapped files be a good idea here? I've read conflicting statements about performance when it comes to reading a file sequentially.
I've considered loading a larger chunk of the file (i.e. multiple volume textures) in one shot, but I'm thinking that it'll hit a bottleneck when it's used up those textures and has to read in the next chunk.
Obviously, I can't read in the entire file (needs to run on 32 bit, that'd kill my process space quickly) and because of the environment I have to use (I really have no choice regarding this) I can't use threading.
Thanks.
- Open file if not already open.
- Read in a block of data (~9 MB)
- Copy to volume texture
- Render
- Repeat...
Would using memory mapped files be a good idea here? I've read conflicting statements about performance when it comes to reading a file sequentially.
I've considered loading a larger chunk of the file (i.e. multiple volume textures) in one shot, but I'm thinking that it'll hit a bottleneck when it's used up those textures and has to read in the next chunk.
Obviously, I can't read in the entire file (needs to run on 32 bit, that'd kill my process space quickly) and because of the environment I have to use (I really have no choice regarding this) I can't use threading.
Thanks.
- Home
- » Viewing Profile: Topics: Tape_Worm

Find content