background preloader



pygame BioShock Infinite Lighting Programmers don't generally have reels, but we do have blogs. I've been explaining the rendering work I did on BioShock Infinite quite a bit due to recent events, and I thought it made sense to write some of it down here. For the bulk of development, I was the only on-site graphics programmer. As Principal Graphics Programmer I did quite a bit of implementation, but also coordinated and tasked any offsite rendering work. Goals One of our artists best described Infinite's style as "exaggerated reality." The size of the levels were bigger than anything Irrational had attempted before. We wanted a streamlined lighting pipeline for level artists. Finally, all of this had to perform well on all of our platforms. Hybrid Lighting System The lighting system we came up with was a hybrid system between baked and dynamic lighting: Deferred Lighting Dynamic lighting was handled primarily with a deferred lighting/light-pre pass renderer. We modified our BRDF to help solve this mid-project.

NLTK Structure Sensor: Capture the World in 3D by Occipital The Structure Sensor gives mobile devices the ability to capture and understand the world in three dimensions. With the Structure Sensor attached to your mobile device, you can walk around the world and instantly capture it in a digital form. This means you can capture 3D maps of indoor spaces and have every measurement in your pocket. If you’re a developer, Structure gives you the ability to build mobile applications that interact with the three dimensional geometry of the real world for the very first time. The Structure Sensor has been designed from the ground up to be mobile. The Structure Sensor has a mobile-optimized range that begins at 40 centimeters and stretches to over 3.5 meters. Battery-powered The Structure Sensor has its own onboard power supply that provides up to 4 hours of active use, and 1000+ hours of standby. Anodized aluminum chassis Dual infrared LEDs What does this mean in plain terms? You'll have full control over the IR LEDs from the SDK. Is my iPad supported? 1.

Astropython Scene Reconstruction from High Spatio-Angular Resolution Light Fields Project Members Changil Kim (Disney Research Zurich)Henning Zimmer (Disney Research Zurich)Yael Pritch (Disney Research Zurich)Alexander Sorkine-Hornung (Disney Research Zurich)Markus Gross (Disney Research Zurich) The images on the left show a 2D slice of a 3D input light field, a so called epipolar-plane image (EPI), and two out of one hundred 21 megapixel images that were used to construct the light field. Our method computes 3D depth information for all visible scene points, illustrated by the depth EPI on the right. From this representation, individual depth maps or segmentation masks for any of the input views can be extracted as well as other representations like 3D point clouds. The horizontal red lines connect corresponding scanlines in the images with their respective positions in the EPI. Abstract This paper describes a method for scene reconstruction of complex, detailed environments from 3D light fields. [Press Release] Datasets We provide the following as part of the datasets:

pyquery pyquery allows you to make jquery queries on xml documents. The API is as much as possible the similar to jquery. pyquery uses lxml for fast xml and html manipulation. This is not (or at least not yet) a library to produce or interact with javascript code. I just liked the jquery API and I missed it in python so I told myself “Hey let’s make jquery in python”. This is the result. It can be used for many purposes, one idea that I might try in the future is to use it for templating with pure http templates that you modify using pyquery. The project is being actively developped on a git repository on Github. Please report bugs on the github issue tracker. You can use the PyQuery class to load an xml document from a string, a lxml document, from a file or from an url: Now d is like the $ in jquery: >>> d("#hello")[<p#hello.hello>]>>> p = d("#hello")>>> print(p.html())Hello world ! >>> d('p:first')[<p#hello.hello>] First there is the Sphinx documentation here.

Rendering large terrains Today we’ll look at how to efficiently render a large terrain in 3D. We’ll be using WebGL to do this, but the techniques can be applied pretty much anywhere. We’ll concentrate on the vertex shader, that is, how best to use the position the vertices of our terrain mesh, so that it looks good up close as well as far away. To see how this end result looks, check out the live demo. An important concept when rendering terrain is the “level of detail”. Take the terrain below, notice how the nearby mountain on the right fills a lot of the final image, while the mountains in the distance only take a small portion of the image. It makes sense to render nearby objects with a greater LOD, while those in the distance with a lower LOD. An easy way to create a terrain mesh is to simply create a plane that covers our entire terrain, and sub-divide it into a uniform grid. A simple way to do better is to split our plane into tiles of differing sizes, but of constant vertex count.

pymc The Littlest CPU Rasterizer | ginsweater's blog Okay, so I’ve been declaring for a long time that I’m going to blog about some of the stuff I’ve developed for my personal project, but I never seem to get around to it. Finally I thought I’d just start off with a cute little trick: here’s how I’m doing “image-based” occlusion for my sky light. A little while ago, while I was thinking about ambient lighting, I realized I actually had a simple enough problem that I could render very small cubemaps, on the CPU, in vast numbers. Here’s the basic underlying idea: A 16-by-16 black-and-white image is 256 bits, or 32 bytes. That’s exactly two SSE registers, or one AVX register. That is, you can store tiny cubemaps whole in your CPU’s SIMD registers! Next, I have a very limited problem domain. So I wrote a little bit of code to render out 4096 (that’s 16x16x16) black-and-white images of cubes, and toss them into a header file. (That’s a bit of a simplification, since I actually render three cubemap faces at once. So, results!