Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

Community Reputation

344 Neutral

About 51mon

  • Rank
    Advanced Member

Personal Information

  • Role
    Voxel Artist
  • Interests

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. 51mon

    3D smooth voxel terrain LOD on GPU

    Obviously I don't know if this is suitable for your setup Anyhow how I meant was just that sdf's are good for computing collisions. You know when you intersect with them and you can even know the vector (distance, direction) to closest point. So if you have an sdf in video memory you can do collisions efficiently & robust on the gpu. It's also possible to upload to cpu. You should do it triple buffered otherwise high chance of stalling btw
  2. 51mon

    3D smooth voxel terrain LOD on GPU

    What are the collision data used for? If it's only for graphical reasons there are other structures such as sdfs you can use and you won't need to send data back to cpu after processing. Otherwise why can't the collision data be baked and just loaded in at runtime, is it softbody?
  3. Thank you very much for the information!
  4. I tried that code but didn't get the correct result (just a partially sorted result). Maybe I need to bring the cpp code computing the level mask and use as an outer loop in the shader?
  5. Hey I need to sort elements within a single thread group. Bitonic sort seems to be a popular method but the implementations I found so far are multi-pass based and aimed to sort a full list spanning multiple thread groups. In my case I only want to sort within a single thread group and I figured it should be possible in a single dispatch call. Does anyone know how I can do this? Thanks!
  6. It occurred on both dev & release builds. It happened close to a deadline so I haven't done too detailed investigation yet. In this case the high numbers of CS-dispatch was due to some unoptimized setup on the art side so could be "fixed". However I'm planning to do some closer investigation soon, make some tests, swap with ATI card etc. I just wanted to check beforehand in case other people had an opinion. So cheers for the reply
  7. 51mon

    What I need to develop a game in c++??

    A lot of people like unreal & unity. If you use these you can develop a lot with gui, i.e. you move around stuff in an editor instead of typing code. If you are 1 person you should go for an engine which offers easy solutions to the things you will have in your game. Maybe try both of these engines and see which one you like the most.
  8. Hey I'm working in an engine. Whenever we run dispatch calls they are much more expensive than draw calls for the drivers on nvidia cards(checked with nsight). Same cost maybe for running 5000 draw calls as a few 100 dispatch. Is this normal?
  9. I think there is a mistake in the pseudo code above. I think you should use. float3 result = float3(Noise3d(coord.xyz + offset1.xyz), Noise3d(coord.xyz + offset2.xyz), Noise3d(...)). You can also look into curl noise as well. It's often used for 3d and has some benefits
  10. Hey I'm dealing with ribbons following the shape of multiple spline segments. It's straightforward to compute the direction at any point along the spline. However the ribbon also got a flat shape and I'm struggling with finding a way to compute the angle of the ribbon in the plane perpendicular to the direction. To illustrate what I mean here's a piece of code that almost worked: float3x3 rotMtxFromSpline; rotMtxFromSpline[1] = normalize(splineDir); rotMtxFromSpline[0] = normalize(cross(float3(1, 0, 0), rotMtxFromSpline[1])); rotMtxFromSpline[2] = cross(rotMtxFromSpline[0], rotMtxFromSpline[1]); // Rotate rotMtxFromSpline[0] in the rotMtxFromSpline[0]-rotMtxFromSpline[2]-plane to align with float3(0, 0, 1) dir rotMtxFromSpline[0] = normalize(dot(rotMtxFromSpline[0], float3(0, 0, 1)) * rotMtxFromSpline[0] + dot(rotMtxFromSpline[2], float3(0, 0, 1)) * rotMtxFromSpline[2]); rotMtxFromSpline[2] = cross(rotMtxFromSpline[0], rotMtxFromSpline[1]); The problem with this code is when the spline segment becomes perpendicular to (0,0,1)-dir as the orientation switch from one side to the other very easily. The approach above is kind of a global approach and I'm thinking if there's a way to append some info to each spline segment to remedy the issue. Anyhow I wanted to post this question in case anyone had a similar problem that they solved or maybe anyone know some web resource dealing with this issue? Thanks!
  11. I want to change the sampling behaviour to SampleLevel(coord, ddx(coord.y).xx, ddy(coord.y).xx). I was just wondering if it's possible without explicit shader code, e.g. with some flags or so?
  12. Thanks for the replies! SH could be an option and it did cross my mind. It's 2D indeed. The domain when using SH is usually a sphere. In my case I want to use it on a quad. Would that have an impact? I understand that spherical coords can be regarded as a square. I'm just wondering if the domain has any impact & if there would be some other basis functions more suited for an actual quad. @JoeJ your suggestion looks similar to a fourier series which also crossed my mind. The fact that sin/cos operations are expensive on GPUs made me a little less keen. The general idea of treating the problem as some sort of curve is good though. I could use something like a power function, that could be encoded in 4 params - uv intensity multiplier & uv exponent, given that I pass on the actual colour of 1 of the corners (on the other hand this approach would only be able to depict gradients). I'm not 100% of how much detail I need to encode in the quad but preferably as much as possible for as little cost
  13. Hey I want to try shade particles by compute a "small" number of samples, e.g. 10, in VS. I only need to compute the intensity of the light, so essentially it's a single piece of data in 2 dimensions. Now I want to compress this data, pass it on to PS and decompress it there (the particle is a single quad and the data is passed through interpolators). I will accept a certain amount of error as long as there are no hard edges, i.e. blurred. The compressed data has to be small and compression/decompression fast. Does anyone know of a good way to do this? Maybe I could do something fourier based but I'm not sure of what basis functions to use. Thanks
  14. I think it can be used in many different contexts. Right now I'm going to use it for refraction. To only copy part of the backbuffer that's covered by the objects BB.
  15. Hi   I want to find an optimized way to compute a bounding rectangle in screen space from a bounding box in 3D.   The best way I've been considering so far is to operate in homogeneous coords and project the BB vertices to screen space. For vertices behind the camera I will find the line-intersection point with the XY-plane. Then I use Liang–Barsky to compute the bounds in screen space. I would also capitalize on optimization opportunities wherever I can find them, e.g. don't look for intersection points when 2 connecting BB vertices are behind the camera.   So I just wanted to check if anyone knows of some better idea, maybe something you used? Maybe there are some methods specifically aimed for finding the BR from a BB?     Thanks!
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!