Skip to content

Instantly share code, notes, and snippets.

struct FloatBits
{
u32 mantissa : 23;
u32 exponent : 8;
u32 sign : 1;
};
template <typename ResultT, typename InputT>
inline ResultT bitCast(InputT v)
{
@kayru
kayru / gist:b548a9e6c7fd64544031ca7660033b16
Created October 25, 2017 12:30
TriangleBestFitPlane.cpp
bool calculate_best_fit_plane(const Vec3* points, u32 count, Vec3& out_center, Vec3& out_normal)
{
if (count < 3)
{
return false;
}
Vec3 center = Vec3(0.0f);
for (u32 i = 0; i < count; ++i)
{
@kayru
kayru / findIntSSE2
Last active March 15, 2016 11:24
findIntSSE2
const int* findIntSSE2(const int* __restrict begin, const int* __restrict end, int needle)
{
const int* it = begin;
unsigned long index;
__m128i n = _mm_set1_epi32(needle);
while (it != end)
{
__m128i x = _mm_load_si128(reinterpret_cast<const __m128i*>(it));
__m128i m = _mm_cmpeq_epi32(x, n);
unsigned long k = _mm_movemask_epi8(m);

How to have a conversation: a brief, yet comprehensive guide.

Finding a partner is the first and, probably, most difficult step in any conversation. Sometimes, if you're lucky, willing participants might come to you. Maybe, this is because you somehow tricked them into liking you in the past. Maybe, they are just so desperate for human contact that they settle even for your miserable self, since you're the only one available at the time. Regardless of their motive, at this point it's vitally important to avoid exhibiting strong patterns of antisocial behaviour, as that might compromise your future conversation-having chances. If your current situation is inhospitable to a productive dialogue (you are wrestling an angry bear on top of a train carriage, speeding through a snowy mountain range, while being shot at by some baddies in a helicopter), saying something akin to "Can't talk right now, about to go into a tunnel!" is not beyond the limits of social acceptance. In fact, it is likely to be infinitely

Texture2D<uint> input : register( t0 );
RWTexture2D<float4> output : register( u0 );
static const uint rastafont8x8_bitmap[] =
{
0x00000000,0x00000000,0x0c1e1e0c,0x000c000c,0x00363636,0x00000000,0x367f3636,0x0036367f,
0x1e033e0c,0x000c1f30,0x18336300,0x0063660c,0x6e1c361c,0x006e333b,0x00030606,0x00000000,
0x06060c18,0x00180c06,0x18180c06,0x00060c18,0xff3c6600,0x0000663c,0x3f0c0c00,0x00000c0c,
0x00000000,0x060c0e00,0x3f000000,0x00000000,0x00000000,0x000c0c00,0x0c183060,0x00010306,
0x3f3b331e,0x001e3337,0x0c0c0f0c,0x003f0c0c,0x1c30331e,0x003f3306,0x1c30331e,0x001e3330,
<!DOCTYPE html>
<html>
<head>
<title>NaCl Test</title>
<script type="text/javascript">
ApplicationModule = null; // Global application object.
statusText = 'NO-STATUS';
// Indicate load success.
#include <cstdio>
#include <string>
#include <GLES2/gl2.h>
#include <tr1/memory>
#include <ppapi/cpp/instance.h>
#include <ppapi/cpp/module.h>
#include <ppapi/cpp/var.h>
#include <ppapi/gles2/gl2ext_ppapi.h>
#include <ppapi/c/ppb_opengles.h>
@kayru
kayru / inf.patch
Created October 2, 2012 21:54
infinite projection test
diff --git a/source/reversez.cpp b/source/reversez.cpp
index eb061ff..81b165d 100644
--- a/source/reversez.cpp
+++ b/source/reversez.cpp
@@ -10,6 +10,8 @@
#include <Rush/MathPlane.h>
#include <Rush/UtilTimer.h>
+#include <math.h>
+
@kayru
kayru / gist:3344506
Created August 13, 2012 22:27
How to compile BRDF viewer for Windows
How to compile BRDF Explorer for Windows
========================================
Use this code https://github.com/wdas/brdf.git
The following external dependencies are required (versions are ones that I used, other might also work):
- Qt 4.8.1
- GLEW 1.9.0
- ZLib 1.2.5
- GLUT 3.7
All external dependencies except Qt are packaged here: https://dl.dropbox.com/u/1010228/brdf-depends-win32.zip
@kayru
kayru / gist:2624992
Created May 6, 2012 23:32
Premake4 vararg compatibility changes for LuaJIT 2.0
# HG changeset patch
# User Yuriy O'Donnell <yuriyo@gmail.com>
# Date 1336346476 -3600
# Node ID 9abcac50982464079bc7ef681fa6dccefceeb704
# Parent 1c40bd936d1f6f919f1e9bc9225621b4f9e38aad
luajit 2.0 varargs compatibility fix
diff --git a/src/base/globals.lua b/src/base/globals.lua
--- a/src/base/globals.lua
+++ b/src/base/globals.lua