Skip to content

Instantly share code, notes, and snippets.

Ignacio castano

Block or report user

Report or block castano

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View Sphere.cpp
// This code is in the public domain -- Ignacio Castaño <>
#include "Sphere.h"
#include "Vector.inl"
#include "Box.inl"
#include <float.h> // FLT_MAX
using namespace nv;
castano / gist:b05863af48138dab368b23a0ab86e735
Created Mar 30, 2017
Least Squares Vertex Quantization
View gist:b05863af48138dab368b23a0ab86e735
I didn't think there was much to gain from optimizing quantization intervals for vertex compression, but I thought it would give it a try and see it for myself.
I have a set of vertices X that I want to quantize. The trivial way to do that is to transform them to the [0,1] range and store them using an integer UNORM format.
At runtime the vertices are reconstructed as follows:
X = Q * m + a
castano / hemicube.cpp
Created Jun 20, 2014
Hemicube Integrator
View hemicube.cpp
#include "hemicube.h"
static void get_hemicube_face_normal(int index, Vector3 *forward, Vector3 *left, Vector3 *up) {
// Unwrapped hemicube with positive-Z in the middle.
switch (index) {
case 0: *forward = Vector3(+1, 0, 0); *left = Vector3( 0, 1, 0); break;
castano / scope.cpp
Created Jul 24, 2013
Various ways to emulate D's scope statements in C++. See
View scope.cpp
// For C++11 support compile with:
// clang++ -std=c++11 -stdlib=libc++ scope.cpp
#include <stdio.h>
#include <stdlib.h>
template <typename F>
struct ScopeExit {
ScopeExit(F f) : f(f) {}
~ScopeExit() { f(); }
castano / BSpline.cpp
Created Jun 15, 2012
Old b-spline interpolation and approximation code
View BSpline.cpp
Title: BSpline.cpp
Module: Pi/MathLib
Author: Ignacio Castaño
Date: 29/05/2000
License: Public Domain
castano / half_to_float_test.cpp
Created Mar 21, 2012
ISPC half to float conversion
View half_to_float_test.cpp
#include <intrin.h> // __rdtsc
#include <stdio.h>
typedef unsigned int uint;
typedef unsigned short uint16;
typedef unsigned long long uint64;
// ISPC functions:
extern "C" void half_to_float_test(const uint16 * vin, float * vout, int count);
extern "C" void half_to_float_test_fast(const uint16 * vin, float * vout, int count);
You can’t perform that action at this time.