DWARF Debug Format Visualizer

Thinking about building a DWARF debug format visualizer. GUI For lightweight GUI, I am considering WxWidget. Development Tools Using Windows Visual Studio is ideal. And since Windows 10 Anniversary edition is supporting light weight bash, which they call Windows Subsystem Linux, so that I can actually use dwarfdump to generate …

Continue reading

Remote Access to Ubuntu Linux Machine with GUI available Using Cygwin/X

First you need to install cygwin/x with openssh packages as well as X11 Windows System: http://www.larsavery.com/blog/how-to-install-sshd-secure-shell-server-on-windows-using-cygwin/ http://x.cygwin.com/docs/ug/setup-cygwin-x-installing.html You also need to set DISPLAY environment variable before the following steps: $ export DISPLAY=:0.0 Next, open cygwin terminal, before use ssh to remote connect, run xwin: $ xwin -multiwindow & You can …

Continue reading

Possible Implementation of Deep Shadow Map in OpenGL

Before reading this post, I assume the reader already know the implementation of traditional shadow map in OpenGL: http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-16-shadow-mapping/ Pixar movie Brave use deep shadow map approach to render hair shadow (as well as its self-shadow): Possible Implementation in OpenGL: Use 3D texture as shadow map depth texture.  The reason …

Continue reading

Ray-tracing Refraction – Floating Point Error

To implement refraction in ray-tracing rendering, we can simply use the refraction equation: sin(theta1)/sin(theta2) = n2/n1   To compute sin(theta1), simply: cos(theta1)= v1.dot(N); sin(theta1) = sqrt(1-cos(theta1) * cos(theta1));  where v1 is the incomming ray direction, and N is the surface normal. However, there may be trouble when this implementation runs …

Continue reading

Be careful when dealing with C++ floating point.

Look at this piece of code: Vector3 colPlaneNor; float dx = abs(aabb1->getPosition().x() – aabb2->getPosition().x()); float dy = abs(aabb1->getPosition().y() – aabb2->getPosition().y()); if(dx < (aabb1->_width + obb2->_width)/2.0f)     colPlaneNor = Vector3::UNIT_Y; else if(dy < (aabb1->_height + aabb2->_height)/2.0f)     colPlaneNor = Vector3::UNIT_X; The idea of these lines of code is to determine the collision plane normal when two …

Continue reading