Jump to content
  • Advertisement


  • Content count

  • Joined

  • Last visited

Community Reputation

5 Neutral

About Turbo14

  • Rank

Personal Information

  • Interests

Recent Profile Visitors

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

  1. Turbo14

    GPU Ray Trace SDKs

    Since I generate the same number of rays for every pixel currently, I think I could work with Radeon Rays, although I do prefer as high level programming as I can get. My brother owns an Nvidia card that has about the same performance as my AMD one, so I guess I can test it on his machine too. I probably won't enable CPU devices for the Radeon Rays version, just to simplify things and to hope for better parallelism. If I have performance issues from bad lower level programming, maybe I'll get an Nvidia card to try OptiX. I wanted to try DXRT but don't want an unstable system, and don't want to buy an expensive card.
  2. I want to move my CPU based ray tracer to the GPU using one of the GPU ray trace SDKs. I've never used any of them, and I don't know much about them. Has anyone here used them, or know a bit about them to recommend one over the other? I have an AMD GPU so I was leaning towards Radeon Rays, although I wouldn't mind picking up a cheaper NVIDIA card if they have a better ray trace SDK. From what I can tell Radeon Rays works on any hardware while NVIDIA Optix is limited to NVIDIA hardware. What would you suggest?
  3. Turbo14

    Why the sudden boom in marching cubes? [Possible target]

    @JoeJ - Yeah the lighting is disconnected if I trace the render screen in segments to free up some CPU for physics and whatnot. That doesn't happen when the full render screen is traced.
  4. Turbo14

    Why the sudden boom in marching cubes? [Possible target]

    I'm basically doing the same thing as the engine you mentioned except my ray trace is on the CPU, and has less features atm. Didn't know about this engine until today. My trace image gets blurred out at more than a dozen meters since it's low resolution though... If I move my ray trace to the GPU I think it would solve this problem since the traced image would be higher resolution.
  5. Turbo14

    CPU Raytracer

    Updated OP with a new vid and a couple screens.
  6. Turbo14

    CPU Raytracer

    160x80 shot with a happy little tree. I think this is the most important resolution because if I make a game with this raytracer, this is the resolution I'll most likely use. I was thinking of maybe making a first person dungeon crawler. https://imgur.com/CjmfD5j
  7. Turbo14

    CPU Raytracer

    I just tried dong this but it slowed down my program by a significant amount. Here's an example what I was doing. Never really used simd so not sure what I'm doing that slowed it down. Color SimdMulColor(Color c, float s) { Vector4f v = new Vector4f(c.r, c.g, c.b,1f); v *= new Vector4f(s, s, s, 1f); return new Color(v.X, v.Y, v.Z); } Edit: Wait I tried using the mono simd while using visual studio. I wonder if the system.numerics will speed it up. After reading a bit about how simd works best, I'm not really sure I can adjust my code to benefit from it.
  8. Turbo14

    CPU Raytracer

    Shot of my progress. https://imgur.com/4uoHdUV Also, bonus shot, pre-filter. https://imgur.com/SBmT1mp
  9. Turbo14

    CPU Raytracer

    I was able to do a little multithreading since my blur filter uses none of the unity API, and I also only trace 1/4 of the screen per frame, so there is some trearing with fast movements. I also decreased the screen resolution by 10 pixels vertically from the original video. As a result it now runs at 85-90 FPS at 160x80 resolution. I would keep the vertical res at 90 but it causes crashes if I don't have a vertical resolution divisible by 4 as a whole number. 160x80 is hardly an enjoyable resolution, but it's still fun to mess with. Maybe I can upscale it and apply my blur filter to that.
  10. Turbo14

    CPU Raytracer

    Shot with improved color bleeding from blended pre pass micro render. https://imgur.com/3hVaik4
  11. Turbo14

    CPU Raytracer

    I think I need to do a micro render pre-pass and then blend that with the higher res render to preserve color bleeding for higher resolutions. I'm having problems keeping creased corners and bright edges at the same time with my filter. If I have bright edges I also have bright looking creases. And if I have dark creases I also have dark edges. As you might have guessed, the smoothness is due to a very liberal blur filter while attempting to keep edges and corners. Here's another shot after some tweaking to reduce ugly edges on the box. https://imgur.com/aAecpmc
  12. Turbo14

    CPU Raytracer

    Here are some higher rez screens. I only use 1spp, the rest of the work is done in the post process filter with some gbuffer data. I've been trying to set up a multi process renderer since I don't want to deal with the headache of multithreading in unity without being able to use their API from threads other than the main one, but the latency is pretty bad.. I'm bad at networking so that's probably not good either. I've never really made amultithreaded app, so that's why I'd rather do multi process so I don't have to deal with the locking and crap which I honestly think would slow it down instead of speeding it up. I think the latency is mostly due to sending large udp packets from the ray trace apps to the main app that does the post processing and input. I'll have to keep working on it or maybe switch to TCP or maybe I should look for some sort of image streaming library. That's probably what I should have done as the first option. Anyways I could use some suggestions on the best way to make it use multiple threads/processes. https://imgur.com/tN1qYF8 https://imgur.com/xXTmQ4V Working on a 1080p render atm... taking a bit. I'm thinking of maybe trying to port this to Radeon-Rays but I know nothing about it. Here's a 1080p render... with only 1spp the color bleeding is hardly noticeable. https://imgur.com/j7wYnlc
  13. Turbo14

    CPU Raytracer

    I wanted to show my WIP CPU raytracer. I probably won't implement too many more features. I just want something that looks decent with a little GI and AO and a few dynamic lights and textures. The video is rendered at 160x90 and captured at 320x180. It runs around 20fps on one thread on an i3-6320. Not sure if that is slow or fast for what I have. I plan on making an attempt to add multi-threading. I can't use SIMD since this was made in Unity. At least I don't think there is support for it. I'm making it in Unity so making games is easier since I won't have to make a whole engine. https://www.youtube.com/watch?v=iL8z04nZ0J8 EDIT: I'm gonna post all future updates here. New video with improved frame-rate and overall better looking than the original. https://youtu.be/tXWXOWXnU50 Sorry about the image quality... YouTube took a dump on it. I had to forget the idea of using SIMD since using .Net 4.6 breaks the raycasting against complex mesh colliders. Still need to work on the aliasing. Color absorb values seem off. I think ambient occlusion is show better here, but dark box edges are back. I just gotta send transform values to my filter to brighten them. https://imgur.com/rajEQky Better AO example: https://imgur.com/gNPIjNM Unfortunately, I think the only way I'm gonna get this to run at higher resolutions with playable frame rates is by moving it to the GPU since I can't thread my trace code using Unity. EDIT: 4/13/2018 - I'm wondering if I can use Embree to make a library that I can call from within Unity. Should be faster than Unity's ray-cast. Anyway here's a new vid with some bouncing balls. I only do GI/AO every other pixel now so they have a little reduced effect... also increased contrast. I'm now blurring the whole render which makes it a little fuzzy. if I don't, there's flickering around object edges when moving around. Video is at 160x88. https://youtu.be/_OC3_BwELzk 4/15/2018 - Using a small amount of help from the GPU I was able to make it higher resolution, but from the crap youtube compression it still looks low rez so here are some screens too..This was rendered at 1080p and captured at half that. Trying to figure out a solution for shadows fading out at distances larger than a few meters. High Res AO Example-https://imgur.com/2nKISzW High Res GI Example-https://imgur.com/1oe4BFd
  14. I think the only option to decrease memory by a worthwhile amount is to decrease the resolution of the terrain patches since those use mesh collision. The trees and rocks already use box colliders, so not much I can really do there besides reduce the number of them which is already low enough to hardly be a concern. I guess I didn't explain it well enough... 9 map chunks are only loaded for the client player on the client app, not for each remote player on their machine. The map chunk stacks are only loaded on the server end until they run out of the desired float precision, then another physics instance can be launched. I'll keep the suggestion about AI pathing in mind but I might have to use something more simple.
  15. Yeah I don't have a height map or render data loaded. With just collision data and terrain patch, tree, and rock positions loaded the chunks are 8MB. I might be able to make map chunks smaller in memory size if I just use one huge patch for map chunks instead of 100x100, 8x8 meter patches. The players are re-positioned when they reach a map edge, along with the map chunks on the client. Playable area is within 0-800 meters in x/z dimensions. Although remote players can be within -800 to 1600 meters on the client end. On the server end, the maps are on different layers and stacked vertically, so once a player reaches the map edge the can be swapped to the corresponding layer/map chunk stack. Map chunks are partly procedural and randomly created, the terrain is created with 2 passes of perlin noise with seeded randomly placed hills/mountains/valleys for each map chunk. Trees and rocks are randomly placed too. I'm still working on making interesting procedural map chunks though so load time will probably increase. Not all chunks will be loaded for each player on the client.. Just the 9 that they occupy. There is multiplayer content, but from my experience most players like to solo level or level with a friend or two, that's why I'm thinking of the worst case scenario of every player needing their own 9 chunks. A server with 256GB of memory is more than I can afford atm. I might try to get crowd funding once the game nears completion. If I can't do that I'll just have to deal with a smaller play space, until I can get some sales.
  • Advertisement

Important Information

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

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!