Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

  • Days Won


Krypt0n last won the day on March 31

Krypt0n had the most liked content!

Community Reputation

4753 Excellent

About Krypt0n

  • Rank

Personal Information

  • Role
    Technical Director
  • Interests

Recent Profile Visitors

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

  1. If you want to ship on the Nintendo eShop, you need to contact Nintendo anyway, hence, as suggested, get in touch with them and ask for permission. It's really not that hard howadays, they support indies with some special ports of e.g. unity, hence maybe they'll be open to provide you a legal n64 SDK. (Just don't mention you have a leaked one or anything else that might sound non-legal).
  2. That sounds like a fun project! I've loved to program software rasterizer on arm! What is your exact hardware? What exactly do you want to program? A lot of old school tutorials teach about using special hardware to handle sprites, e.g. gameboy. But on the other side,everything with sprites is quite straight forward.maybe ask for something specific we can help on
  3. if you discard only 1/255 of the pixel (assuming you mean black == 0.f), then there won't be any performance benefit from discard nor stenciling, as the GPU will dispatch pixel in groups of at least 2x2 (yes, fragments will be processed that are already rejected). Therefor the only speedup you'll get is in cases where there are 2x2 pixel blocks of black pixel, which are also exactly in the 2x2 pixel grid. 1:4Billion Hence, if that is only about performance, go for a discard, it has at least less setup overhead.
  4. Krypt0n

    CPU Raytracer

    I'd be also interested in how many sample/pixel you actually trace to get such a smooth result. Highres screenshot ++
  5. Krypt0n

    Merge rgb and alpha channels

    Just in case you need something special again: With the single file header for images, you can probably write that in a few minutes: https://github.com/nothings/stb
  6. are you reading the texture via samplers or image load ?
  7. Krypt0n

    Temporal dithering

    Have you tweaked it, or are you using the pseudo code randomizer?
  8. Hard-code one specific ray, that hits something, and step in your debugger through the code. On CPU it's quite easy to figure out where the expected value diverges from the one generated by your source fmin(d1,d2) sounds ok to me.
  9. how do you fill the image? maybe you index it by x+y*height instead of x+y*width or something.
  10. make a 32x32 image and step with your debugger pixel by pixel, check why every 2nd line is black (or not written). (From a glance on it, your ray generation code looks fine. Maybe avoid doing halton for now, just to keep the count of possible error sources low.
  11. It usually helps to split a big problem into smaller stages and get every step working individually. From the image, it looks as if something with the first hit is wrong, aka camera rays, as there is some interlacing. (I would guess your "SetPixel" might be somehow wrong.) For debugging, you could try to just visualize the first hit and output the pure diffuse color. If that works, add some explicit tracing to a light source (e.g. point light), with old school lighting calculations.
  12. Krypt0n

    Temporal dithering

    It was pseudo code to make the trivial idea behind it easy to understand, this whole code can be summarized to color.rgb += frac(sin(pixelid*199.f+frametime*123.f)*123.f)*(1.f/range); resulting in exactly the same output
  13. Krypt0n

    Temporal dithering

    you can adjust my pseudo code easily e.g. float Noise(float2 uv, float t){return frac(sin((uv.x+uv.y)*199.f+t)*123.f);} float Dither(float v, float colorCount,float t) { float c = v * colorCount; c += Noise(PixelPosition,t) > frac(c) ? 1.f : 0.f;//this checks whether the colors last bit(s) is/are above a random number and therefore rounds randomly c -= frac( c ); c /= colorCount; return c; } ... const float range = 128.f; //8bit //const float range = 512.f; //10bit color.r = Dither(color.r,range,frameTime*123.f); color.g = Dither(color.g,range,frameTime*123.f); color.b = Dither(color.b,range,frameTime*123.f);
  14. it generates a vector on the sphere, not inside, not outside, but exactly on a unit sphere. u and v are two input seeds that you have to provide, to get the corresponding output vector. This values depend on your sampling approach, could be two fully random vectors, or maybe based on stratified sampling, could be a regular grid, some sequence (e.g. halton) or however you want to approach it.
  15. Krypt0n

    Assimp Model Load (FBX) Help!

    that's ok, for a small scope. note everything needs a sophisticated tool/build pipeline. Good luck with your DirectX12 project
  • 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!