Korhan Bircan
Brown University Computer Science Department
115 Waterman St. #529
Providence, RI 02914
![]()
I graduated from Brown University and since June 2008 have been working at Oracle's headquarters in Redwood City, California, as a software engineer in the Fusion Performance Group. At Brown I was a member of the Game Technology Research Group and the Robotics Group. I got my M.Sc. in 2006 from Indiana University, Bloomington, and my B.Sc. from Bilkent University, Ankara, in 2005. My last year in college I was an exchange student in the University of Michigan, Ann Arbor, EECS Department. Before joining Brown I worked at NVIDIA, Santa Clara, and Electronic Arts, Orlando. As an undergraduate I interned at Microsoft, Omron, Sabanci Telekom, Aselsan, Deutsche Post, and Renault.
| Mad Race the Game
|
||
| Running over zombies
|
||
|
Cracking Microsoft Windows Passwords
In this presentation I talked about how Windows user account passwords can be cracked using methods described in Philippe Oechslin's paper "Making a Faster Cryptanalytic Time-Memory Trade-Off" and demonstrated the ideas by stealing hashes using fgdump or Ophcrack and using Rainbow Tables (Cain with RainbowCrack) to actually crack the passwords of students present at the talk. There is some interesting stuff about secure passwords along with bunch of other things. Download as pdf, ppt. |
|
|
Game Programming Tricks - NextGen Shaders
In this presentation I talked about some common shaders used in console games such as Gaussian/motion/radial blur, depth of field, High Dynamic Range rendering, bloom, lens flare, edge glow, parallax mapping and Morgan McGuire's "Steep Parallax Mapping". Download as pdf, ppt. |
|
|
Useful Tools for Making Video Games - XNA
This is an introductory tutorial of Microsoft XNA Game Studio. I talk about displaying 3D models, handling keyboard and mouse input, 3rd person shooter camera, and creating spline animations. Download as pdf, ppt. |
|
|
Useful Tools for Making Video Games - FMOD
In this tutorial I talk about setting up FMOD, using channels and 3D sound, and integrating DSP effects. Download as pdf, ppt. |
|
|
Useful Tools for Making Video Games - Newton
This is an overview of the popular Newton physics engine. I talk about using materials and callback functions, various types of joints and constraints and give pointers to integrating Newton with Irrlicht and Ogre. Download as pdf, ppt. |
|
|
Useful Tools for Making Video Games - Irrlicht
In this tutorial I talk about how to set up Irrlicht, displaying 3D models, adding 1st and 3rd person shooter style cameras, loading .bsp maps, creating custom scene nodes, handling keyboard and mouse input, character and scene node animatinos, GUI construction, 2D graphics, particle system basics, and terrain rendering. Download as pdf, ppt. |
|
|
Useful Tools for Making Video Games - OGRE
In this presentation I cover Ogre core objects, the startup sequence, creating a basic scene, terrain/sky/fog rendering, CEGUI, node and character animation, object picking, particle systems, fire and smoke effects, cel shading, cube mapping, bump mapping, water reflections and refractions, grass rendering, post-processing effects such as blur, bloom, glass, old TV, old movie, night-vision, and possible art pipeline construction. Download as pdf, ppt. |
|
| 3D Desktop
I was looking at Anand Agarawala's BumpTop virtual desktop and wanted to prototype a virtual 3D desktop of my own. I implemented sorting and piling with animations. Sorting opened applications looks like Windows Vista's Flip 3D. Check out the youtube video... |
||
|
|
Projective Texturing
Projective texturing shader I put in my sceneview modeler. |
|
|
|
Cel Shading Revisited
Some time ago I had implemented this on the CPU. It's much easier to do this using shaders. Here are two versions one in GLSL and the other in HLSL. |
|
|
|
Sceneview Ray Tracing
This is another ray tracer from scratch. It reads custom .xml format sceneview files that can be created with the scenview modeler or by hand, then ray traces it (with texture mapping and supersampling when desired) and saves the output as a .bmp file. |
|
|
|
Sceneview Modeler
This modeler is used to create custom .xml format sceneview files that are later to be ray traced with the sceneview ray tracer. It can also be used independently to render scenes with multiple light sources. Scenes are constracted using cubes, cones, cylinder, and spheres which can be translated, rotated, and scaled. Trackball rotation of objects, camera trackball, spin, zoom, pan, and dolly provide users with easy navigation. Currently only CG shaders are supported. |
|
| Post Processing Filters
Bunch of GLSL shaders I wrote including constant/gaussian/radial blur, edge detection, sharpen, emboss, invert, and gray scale to use in games or other future projects. |
||
|
Wii want to play
Finally I got the time to play around with the wiimote and connect it to my PC. The result turned out to be an entertaining blast'em up. It's a pretty neat experience to fly around using the controller. Click here for some screenshots. |
||
|
Stuntin' with my Subaru
Playing around with Ogre and Newton. Thanks to Walaber, who provided the meshes and made his high quality games open source. Click here for some screenshots. |
||
|
Plane Crash
Recently I made this demo to demonstrate what a productive toolset Irrlicht and Newton SDK is. Click here to see some cool screenshots. |
||
|
|
3D Modeling
I was using Solidworks during one of my internships and just to get to the hang of it I modeled my guitar. Click here for some screenshots. |
|
|
Modulative vs Additive Shadows
Recently I've been playing around with the amazing Ogre rendering engine. Here is a knot with bump mapped rusty metal texture and additive stencil shadows. |
||
| Airhockey
I recently made this little air hockey game using the Irrlicht rendering and Newton physics engines. The game features parallax mapping, particle systems, and realistic collisions, and sound. Online multiplayer version is coming soon. Check it out here. |
||
|
Fire Effect
I have a bunch of simple 3D game ideas and what better way to warm up than to practice with some of the well known special effects tricks.. Here is a particle system to simulate fire. |
|
|
3D Zoom in Complex Scenes
The gain in speed is more evident in more complex scenes like this bunny where there are approximately 70,000 triangles. I used the previous technique and extended it so that the user controlled zooming device not only pushes the vertices under it in the x,y directions but also in the z direction. The result is that the objects in the scene get inflated. The user sees them as if there were a magnifying glass. By changing the equation for the zooming device, various sorts of fisheye lenses such as the pyramid, hemispherical, flat-topped hemisphere lenses can be simulated with satisfactory results. |
|
|
2D Magnification Fields
I was teaching myself GPU programming and wanted to create a benchmark to compare the gain in speed up by shifting vertex processing to the shader. I created a 1,000x1,000 grid and navigated around a user controlled circle and looked at the frame rates. To make it more interesting I made the circle so that it pushes the vertices under it outwards. The center vertices get pushed the most (towards the perimeter) and the vertices on the perimeter stay put. One application this idea can be very useful is on 2D textured planes. Suppose that I take maps from Google or someplace and then divide them into a grid. Then this technique can be used to magnify desired regions of the map. I tried that actually and it's pretty cool. |
![]() |
Sky Truck Revisited I was practising with C# and DirectX when I came across the perfect webcast series by Microsoft for 2D game development. In cooperation with Digipen they have made bunch of 2D and 3D tutorials online along with their 2D and 3D engines. I already had sprites from the old Sky Truck game, and it was almost instantaneous to make a simple shoot'em up game. Designing levels, game logic, and trying to make the game fun is much more difficult than writing the engine itself, I'm not even mentioning the need for artists and musicians, too. Creating a game really is a team work. Click here for screenshots. |
![]() |
Catmull-Rom and B-Splines Demo
Something I did for fun in Numerical Analysis class. Click here for the source code and binaries. |
|
|
|
Realtime Reflections and Refractions using Environment Mapping Sprites
A popular method to render reflections is using environment mapping. With the 3D hardware support the scene can be rendered to a temporary texture instead of the regular screen buffer. This process can be repeated each time the camera moves to obtain dynamic textures. In this project I'm trying to obtain motion parallax, second order reflections, and to convey the proximity of the objects to the reflector surfaces. This project is inspired by "Reflected-Scene Impostors for Realistic Reflections at Interactive Rates", V. Popescu et al. Click here for sample results. |
|
![]() |
Interactive Non-Photorealistic Renderer Non-Photorealistic rendering(NPR) is a branch of computer graphics that emulates artistic rendering styles. In this project we have developed an interactive 3D non-photorealistic renderer implementing and extending an unconventional boundary detection algorithm. We were mainly influenced by "Artistic Silhouettes: A Hybrid Approach", by L. Markosian et al. Click here to look at some of the results. |
|
![]() |
.obj & .ply Model Viewer OBJ and PLY files are collection of ascii text lines that contain information such as vertex coordinates, vertex normals, vertex texture coordinates, faces, and groups which make up static 3D models. Knowing the format of how these data is presented, parsing this information, storing them in appropriate data structures, and sending this information to the graphics library pipeline is all there is to making an object viewer. Click on the following links for for 3D .obj models and 3D .ply models. |
|
![]() |
Interactive Fluid Simulation
I have tried to simulate fluid behavior using particle systems and NURBs. The idea is to pour lots of uniform size and weight balls into an open box and apply Newton's laws to bounce them off the floor and each other taking into consideration friction and gravity as well. I connect the balls at the surface with a texture mapped smooth surface(NURB) and the system works quite satisfactory. Click here for some screenshots. |
|
![]() |
CSG Ray Tracing I built a constructive solid geometry ray tracer trying to accelerate ray tracing techniques as well (eg. by aiming faster intersections using fewer and generalized rays). My implementation still suffered from running completely on the CPU, I will check out real-time GPU implementations in the future. Click here to see some results. |
|
|
|
3D Model Editor
This is an application I developed for the Interactive Computer Graphics class. In the 2D mode the editor supports free, brush, pen, and spline drawing styles as well as various resizable and transformable polygons. Gaussian blur and flood fill are only active in this mode. In the 3D mode the editor supports predefined objects that can be translated, rotated, resized, intersected, and texture mapped. Saving and loading scenes and camera walkthrough on a spline trajectory are some of the supported features. |
|
|
|
2D Drawing Tool
A simple drawing application that lets users change brush radius and type (constant, linear, quadratic, and gaussian blurred circles), paint flow percentage, and let them save the drawing in .bmp format. |
|
|
|
Blobby Man Animation Editor
Implemented after Jim Blinn's article on "Nested Transformations and Blobby Man" we added extensive controls for all the joints and turned the project into a system to frame by frame animation edition tool that supports inverse kinematics. |
|
|
|
Sky Truck Shoot 'em Up Game
We developed this game for an undergraduate object oriented programming class. The game has three levels and the aim is to destroy the alien main reactor while dodging the meteor rains, fighting cosmic creatures, and collapsing alien assault forces. Player can choose from three ships each having different fire power and agility. |
|
![]() |
Iris Video Analysis and Retrieval System
Most of the current video retrieval systems become inefficient since the information tags and annotations are prepared manually and the archives grow exponentially. The goal of our system was to make video retrieval efficient, effective, and organized by integrating various modalities such as visual information, speech, and text. Our system provides services to detect commercials and identify faces. Our group was supervised by Bilkent University RETINA Vision and Learning Group. |
|
![]() |
Face Detection Using Eigenfaces
Eigenfaces are a set of eigenvectors used in face recognition. A large set of digital photos taken at the same lighting condition are normalized to line up the eyes and the mouths. Combining these photos we obtain a common face matrix. Only a few vectors are needed to give a fair likeness of most people's faces. Instead of storing a new face matrix, only a few eigenvectors are sufficient because a person's face can be fairly likely represented as a combination of the already existing vectors in the common face matrix. In this project we have used the Cambridge University Computer Laboratory Digital Technology Group's face database. |
|
|
Combining Multiple Exposures into Single Image
In this project we were given two sets of five images which were taken with a fixed camera, at constant focal length and aperture but variable exposure times. Our task was to combine at least two images from each group into one single composite image representing the group in which details from both the ground and sky was in optimum exposure. Our algorithm uses a per-pixel stencil to mask the too bright or too dark regions of the image and selects the best exposure regions from the other images to replace those regions on a per-pixel basis. |
|
![]() ![]() |
Stereo Vision Disparity Maps
|
|
|
Applicability of the Multilayer Perceptron to
Predicting Time Series Data
In this project we built a mathematical model with financial data using neural networks. We used multilayer perceptron to predict the stock prices on day d+1 taking into consideration the previous d consecutive days. In order to improve our results we turned the stock market price fluctuations into deviations from the linear trend in the data. |
||
|
Comparison of MLP, k-NN, RBF, and Decision Trees
We have compared the four mathematical models using stock market prices. We limited the previous d consecutive days to 500 and incrementally adjusted our training set to determine the optimal parameters such as the window size, the number of neurons, and the number of k days to observe. |
||
|
Nearest Neighbor Decision Rules and Reducing the
Training Data
This project investigates ways to classify a new point given two clusters of interleaved points. I have read the Toussiant's article "Proximity Graphs for Nearest Neighbor Decision Rules: Recent Progress" and implemented Hart;s condensed rule. The main idea is to reduce the point clusters to a set of consistent subset and then classify the given point using the 1-NN rule against this subset. |
||
| DNS Hacking
In places like Starbucks or some airports they make you buy a subscription in order to be able to use their wireless Internet. We developed a protocol that sends encoded dns text messages to our remote desktop name server. Our name server makes the desired http requests and sends us the data encoded in DNS responses. Very cool indeed... |
||
| Linux Kernel 2.4 worm
|
||
| Port Knocking
|
||
| iTunes Hacking
|
||
| Hogs Security Patches
|
||
|
TCP/IP layer & custom socket library implementation
In these projects we implemented the IP and TCP network layers with fragmentation/reassembly of packets and wrote our own sockets library with all basic functionality. |
||
| Packet Oriented Network Emulator
In this project we have used Linux message queues to emulate a virtual network and find the shortest paths for between the start and destination nodes. |
||
|
Internet Radio A TCP/UDP client server set of tools to broadcast/listen to songs from a designated machine. Good intro to socket programming and pthreads stuff. | ||
|
OS161 Systems Programming Implementation of synchronization and concurrent programming primitves, virtual memory management, file system, various systems calls, all part of graduate operating systems course. |
||
|
CPU Scheduling Simulator In this project we have simulated the first come first served, shortest job first, shortest remaining job next, and round robin scheduling algorithms using static trace files or randomly generated work loads and examined the execution details of each algorithm. |
||
|
Heap Management Library In this project we have designed and implemented a heap management library that can be used to allocate and free memory space dynamically from the heap segment of the program. |
||
|
FATBoys Floppy File System A FAT-like floppy disk file system design and implementation. The system supports creation, reading, writing, and deletion of files on a floppy disk. Click here for the library implementation details. |
||
![]() |
MIPS-lite CPU Design with Verilog In this project we have added a dozen instructions to the base datapath described in "Computer Organization&Design" by Patterson and Hennessy. Some of these instructions were slt(select on less than), addi(add immediate), bne(branch on not equal), ori(bitwise or immediate), jal(jump and link), jr(jump register), lui(load upper immediate). |
|
![]() |
Web-based Course Management This was a freshman year introductory level programming project we did using Java Servlets and MS Access. It lets students access their course grades with some cool features such as email notification when new grades are entered into the database. It lets instructors create syllabi and offers bunch of tools to manage course evaluation online. |
|
|
Class Schedule Conflict Solver My alma mater had a terrible course registration system. You were given an appointment date and you would go log into a designated machine where we had to select courses through a pre-Windows3.1 program which wouldn't even let us change sections in case of time schedule conflicts. In our "Fundamentals of GUI Design" class my friends and I developed a class schedule conflict solver with nice and practical user interfaces that managed all the previous problems as well as providing new capabilities to create, integrate, use, and maintain web-based teaching. |
||
|
Personnel Management System This project performs the personnel information management and maintenance through a network architecture. It performs some basic information entry, modification, and retrieval procedures on personnel and inventory data as well as automated backups and provides various security measures including privileges and encrypted data transfer. |
||
Here is a bunch of stuff I record usually in a hurry and with insufficient practice due to lack of time.
When I'm not coding you can find me playing the guitar in my home studio. I recently recorded a cover of Iron Maiden's great song Hallowed be Thy Name. I used to listen to them like crazy when I was in middle and high school, I've always been an admirer of their melodic riffs. I just watched the 12 Monkeys for the first time and I was very impressed with the scenario and the acting, they should have given Brad Pitt an Oscar long ago. The "Tell me what I want" excerpt in the intro is from the movie.
I recently recorded a Liquid Tension Experiment cover: Biaxident. I'm still warming up with my home studio equipment.
Here is a cover to a Dream Theater classic: Overture 1928.
Here is another cover to a Dream Theater classic from the "Awake" album: Erotomania.
Last updated April 28th, 2008 16:59