|
2012-04-16 - GLTrace I've put up a page for GLTrace, a realtime debugger and analyzer for applications that use OpenGL. It can be used to examine and debug the behaviour of applications that use OpenGL, view scene composition, inspect textures, inspect buffers, and view/modify shaders in realtime. No comments.
2011-12-21 - CSG I've put a page up for the source code to my 2D constructive solid geometry library here. It supports boolean operations with 2D geometry and calculates contours. Also, here are two images of my distance field renderer. It can render arbitrary geometry represented by distance fields and lit with photon mapping in realtime.
  
No comments.
2011-07-05 - FVM I've put a page up about FVM, an embedded programming language and its virtual machine.
No comments.
2011-05-12 - GLGhess I've put a page up about GLChess, an OpenGL graphics demo that runs on Windows and Linux. In addition to a chess AI, it demonstrates some interesting rendering techniques such as realtime global occlusion and depth-based reflections.
 No comments.
2011-04-25 - Game demo This is a small preview of a game demo I've recently made in my Framework. I haven't posted anything related to graphics recently, but I'm currently working on a graphics demo which I hope to post soon.
 Download video 2 comments.
2011-04-17 - FEdit I've written a page about FEdit, my hex editor and interactive file disassember, here. It's useful in modifying and reverse engineering files and all types of binary file formats.
 No comments.
2011-02-06 - Image compression I've started a page on image compression here. I will complete it, then periodically update it with new information related to my research.
Also, I've started to upload pages for my other projects. Since some of them are not public, especially research or commercial projects, posts and pages about them will only be visible and accessible to certain accounts. I've set permissions for the first two pages, let me know if you can't view them in Pages or get an access denied message from their link. No comments.
2010-11-10 - Spatial clustering I've written a page on spatial clustering with implementation C++ code. Link 4 comments.
2010-09-18 - Circuit Designer I've moved and redesigned my website, there are also a few other things left to add. Sometime, I'll also add some of the other projects I haven't listed. I've also added a page about a small project I did to design and test logic circuits. It can be found either here or from the Projects page. Comments are disabled for this post incase I write about it again, I don't want two seperate threads, so if you have anything to write, please do so on its page. Comments aren't enabled for this post.
2010-09-17 - CityGen I wrote a page about my experiment in procedural city generation, I didn't remember to upload earlier. It can be found either here or from the Projects page.
2 comments.
2010-09-16 - Realtime raytracing A small experiment in realtime raytracing on the CPU. The left screenshot is the "fast" renderpath which runs at 20-60 FPS depending on the resolution. The right screenshot is the "accurate" renderpath, about 8 FPS. Click on them to enlarge them. The scene was interactive, the right screenshot takes place a fraction of a second later, so there's a little bit of difference in positioning. The sphere on the left is reflective blue, the sphere on the right is reflective orange. 5 comments.
2010-07-15 - Profiler overhead I've worked a bit more on my C++ profiler. Two new screenshots showing a certain call first in its local context from the call tree, then in a global context for a summary of the call. Click on them to enlarge them. | Local context | Global context |  |  |
1 comment.
2010-03-21 - Natural password generation Is it possible to generate a long alphanumeric password that's easy to remember, but had to brute force (such as appending words)? I've seen examples of generating passwords using phonetics, but the combinations are simply rotations of two or three letters, giving each digit a chance of being one in [phonetic count] insead of one in twenty-six if it were just a letter. Given a dictionary of 100,000 words, a sufficiently complex password of phonetics may be calculated by looking at the last n characters and their frequency in the dictionary after seeding a certain number of random characters. Two samples that my test program calculated with the seed "pho": Phorizerailermanencientionalizer,Photographicalloweringleriestere These are 32 characters long making them difficult to brute force, and may be supplanted by replacing random characters or appending numbers. The advantage to using natural passwords is that they're far easier to remember than a random 32 character length sequence. No comments.
2010-03-20 - The joys of cloud computing
 No comments.
2010-01-25 - Deferred shading + stencil optimizations for lighting Here's a variant of a common stencil optimization for lighting passes in deferred shading.
For each light, before its light rendering pass, calculate a simple mesh that represents the 3D boundaries of the light. For point lights, this can either be a cube or a sphere with low tessellation, and for spot lights, either a frustum or a cone with low tessellation. Disable color writing and z-writing, so that this will only affect the stencil buffer. Using two-sided stencil testing, render this mesh, increasing the stencil buffer's value for CCW z-fails and decreasing it for CW z-fails. Note that you need the z-values for the original 3D scene, so don't clear z after filling the G-buffer. Now, when rendering the light, set it to only pass where the stencil value has changed (non-zero where pixels were behind the test mesh's front face, but infront of its back face.), so it only affects those pixels that intersected the mesh. A quick trick to reset the affected region of the stencil buffer is to set the stencil render state to write zeroes when drawing the light's quad. This part is my variant on the common stencil optimization. If you have a scene with a large number of lights, repeatedly changing the render states and the pixel shader from lighting calculations to a dummy shader and back is probably having an impact on performance, but it's still faster than going without the stencil optimization. Insert all of your lights into a list, along with their screenspace quads. During the stencil writing pass, test the current light's screenspace quads against subsequent lights, and if there is no screenspace intersection, you can also do their stencil pass. Use another list that tells you which lights are being rendered in this pass. If none of these lights intersect each other in screenspace, they do not affect the same regions of the stencil buffer, and so they will not allow extra pixels to pass from one light's stencil test into the rendering of another. So now, instead of calling SetPixelShader twice (dummy pixel shader for the stencil pass, lighting pixel shader for the light pass) per light, it only needs to be called twice per overdraw level. No comments.
2009-12-29 - Sudoku solver 2 Updated my Sudoku Solver, now the constrained grid is sorted by relevance, so it takes about 30% less time to solve puzzles (on average). Also, I'm using a web publishing system now, so there may be some entries missing from this page that I didn't copy over, but it's worth the ease of use. No comments.
2009-12-13 - Linear system solver I've written a simple but useful linear system solver. It decomposes a matrix down into one variable per line. Link No comments.
2009-12-05 I've written a simple renderer driver mod for Deus Ex, to add improved lighting and color correction. I don't have access to the main renderer though, so I couldn't add shadow volumes like I wanted to. The left two images show the original renderer driver with the original textures and the New Vision texture mod. The two on the right show the same scenes with my renderer driver.
| Originals | New renderer driver |  |  |  |  |
No comments.
2009-10-22 - Sudoku solver 2 I've written a new Sudoku solver that uses a constrained grid. It's not at all like a human solver, but it's far more efficient than my previous solver when it comes to more complex situations. Link No comments.
2009-08-30 - CSG I'm writing a 2D CSG system for the project I'm working on. I plan to write an article about it, when I get some free time.
 
Subtracting either of these meshes from a quad the size of the bounding region produces the other mesh. The meshes are formed of only convex polygons. Red lines denote exterior edges, blue lines denote polygon edges (these may be simplified further by joining adjacent polygons into convex polygons) and light blue denotes polygons. Click on the thumbnails to enlarge. No comments. Pages: 1 2 3 > >> |