Jump to content
  • Advertisement

Krypt0n

Member
  • Content count

    1078
  • Joined

  • Last visited

  • Days Won

    2

Krypt0n last won the day on March 31

Krypt0n had the most liked content!

Community Reputation

4753 Excellent

About Krypt0n

  • Rank
    Contributor

Personal Information

  • Role
    Technical Director
  • Interests
    Programming

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. Krypt0n

    Gap between Sky and Terrain

    Simplest is to add something to the skybox that looks like your distant terrain But yeah, you should also expand the terrain a bit further.
  4. 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.
  5. Krypt0n

    CPU Raytracer

    I'd be also interested in how many sample/pixel you actually trace to get such a smooth result. Highres screenshot ++
  6. 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
  7. are you reading the texture via samplers or image load ?
  8. Krypt0n

    Temporal dithering

    Have you tweaked it, or are you using the pseudo code randomizer?
  9. 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.
  10. how do you fill the image? maybe you index it by x+y*height instead of x+y*width or something.
  11. 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.
  12. 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.
  13. 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
  14. 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);
  15. 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.
  • 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!