Would you like MinerWars craft mode? :) |
Blog about development of realtime graphics and game programming. If you are curious, welcome.
Friday, June 22, 2012
Minecraft as a side-effect
Thanks to our powerful voxel engine we can get sometimes quite unexpected results. While we were testing a new feature, we accidentally developed new Minecraft clone. And it was fun to play :)
Friday, June 15, 2012
NextAfter in C# without allocations or unsafe code
In C99, there is a standard way to get the next larger or smaller float32: the function nextafterf. In C#, there’s no such function and I had to roll my own version.
There are three ugly possibilities.
There are three ugly possibilities.
- use pointer aliasing,
- BitConverter.GetBytes,
- simulate an union.
[StructLayout(LayoutKind.Explicit)] struct FloatIntUnion { [FieldOffset(0)] public int i; [FieldOffset(0)] public float f; } // Returns the next float after x in the direction of y. float NextAfter(float x, float y) { if (float.IsNaN(x) || float.IsNaN(y)) return x + y; if (x == y) return y; // nextafter(0, -0) = -0 FloatIntUnion u; u.i = 0; u.f = x; // shut up the compiler if (x == 0) { u.i = 1; return y > 0 ? u.f : -u.f; } if ((x > 0) == (y > x)) u.i++; else u.i--; return u.f; }
Subscribe to:
Posts (Atom)