ciri is a perpetually developed collection of toolsets unified into a single coherent framework. ciri attempts to abstract complexity where possible, leaving a simplified, yet sufficient interface. ciri started out as a graphics abstraction layer for DirectX 11 and OpenGL 3.3+; features are added and removed as seen fit. Feel free to browse the source code to see what ciri is currently capable of. ciri is an aspiring framework in perpetual development intended for use in personal projects. It is being created with the intention of replacing one-time frameworks for my own projects with an all-around generic one instead.
Probably not. For learning, sure, but it’s far from a golden standard; it’s for personal use.
ciri is no longer being developed.
Dynamic vertex buffers were tested with a simple CPU cloth simulation based on OpenCloth's verlet implementation. This sample tests dynamic vertex buffers, contains multiple shaders, multiple meshes, a Maya-like camera system, and so on. The texture for the cloth is procedurally generated using an adaption of Marco Fratarcangeli’s algorithm found in Game Engine Gems 2. The source code to this sample can be found in the code repository as dynvb.
This demo shows a water plane dynamically reflecting and refracting its surrounding smoothed heightmap terrain and projected cubemap. The intention was to test rendering to textures and cubemaps for skyboxes, reflections, and so on. The water and terrain are based loosely on Riemer's XNA tutorials. The cubemapped skybox is actually a single quad using projected coordinates, as is explained clearly by user msell on StackExchange.
Batching of sprites using an XNA-like model. A miniature game somewhat representing a simplified Geometry Wars with smooth player movement, firing towards the cursor, multiple kinds of enemy behavior, and best of all, a fully interactive and dynamic grid simulation that reacts to game objects.
An interesting effect is reflection and refraction of a cubemap. Objects fit much better into a scene when they appear to incorporate the surrounding scene into their composition. It is possible to also refract each channel – red, green, and blue – using different indices of refraction to given the effect that each wavelength is being scattered around differently, which results in a nice overlapping rainbow effect.
Normal maps are good for displaying micro-facets within a surface. Convincing as they can be, viewing angles often spoil their illusion. A different effect is parallax occlusion mapping. This technique is still faking detail, as are normal maps, but appears drastically more three dimensional than normal mapping alone. Viewing angles are seldom an issue with parallax techniques. Below shows a simple scene with steep parallax mapping and shadowing implemented. The two red triangles show the real geometry. Everything you see is a visual trick; no actual geometry beyond a plane is used.