public static float vecLen(Vec3f *ptr) { var x = ptr->x; var y = ptr->y; var z = ptr->z; return(fsqrt((x * x) + (y * y) + (z * z))); }
public static void vecAdd(Vec3f *a, Vec3f *b, Vec3f *ptr) { vecStore( a->x + b->x, a->y + b->y, a->z + b->z, ptr ); }
public static void vecScale(Vec3f *a, float scale, Vec3f *ptr) { vecStore( a->x * scale, a->y * scale, a->z * scale, ptr ); }
public static void vecNormalize(Vec3f *ptr) { var x = ptr->x; var y = ptr->y; var z = ptr->z; float invLen = 1.0f / fsqrt((x * x) + (y * y) + (z * z)); vecStore(x * invLen, y * invLen, z * invLen, ptr); }
public static void sampleEnv(Vec3f *dir, Vec3f *ptr) { var y = dir->y; var amt = y * 0.5f + 0.5f; var keep = 1.0f - amt; vecStore( keep * 0.1f + amt * 0.1f, keep * 1.0f + amt * 0.1f, keep * 0.1f + amt * 1.0f, ptr ); }
public static float vecNLDot(Vec3f *a, Vec3f *b) { var value = vecDot(a, b); if (value < 0) { return(0); } else { return(value); } }
public static void init(int w, int h, int pFrameBuffer) { width = w; height = h; frame_buffer = &U8.Base[pFrameBuffer]; var pScratch = pFrameBuffer + (width * height * BytesPerPixel) + 1024; var scratch = (Vec3f *)&U8.Base[pScratch]; // FIXME pos = &scratch[0]; dir = &scratch[1]; light = &scratch[2]; half = &scratch[3]; color = &scratch[4]; intersection_normal = &scratch[5]; }
public static void init (int w, int h, int pFrameBuffer) { width = w; height = h; frame_buffer = &U8.Base[pFrameBuffer]; var pScratch = pFrameBuffer + (width * height * BytesPerPixel) + 1024; var scratch = (Vec3f*)&U8.Base[pScratch]; // FIXME pos = &scratch[0]; dir = &scratch[1]; light = &scratch[2]; half = &scratch[3]; color = &scratch[4]; intersection_normal = &scratch[5]; }
public static void vecStore(float x, float y, float z, Vec3f *ptr) { ptr->x = x; ptr->y = y; ptr->z = z; }
public static float vecDot(Vec3f *a, Vec3f *b) { return((a->x * b->x) + (a->y * b->y) + (a->z * b->z)); }