
Real-Time Rendering · Tracking the latest developments in interactive rendering techniques guest post by Patrick Cozzi, @pjcozzi. This isn’t as crazy as it sounds: WebGL has a chance to become the graphics API of choice for real-time graphics research. Here’s why I think so. An interactive demo is better than a video. WebGL allows us to embed demos in a website, like the demo for The Compact YCoCg Frame Buffer by Pavlos Mavridis and Georgios Papaioannou. WebGL runs on desktop and mobile. Android devices now have pretty good support for WebGL. WebGL is starting to expose modern GPU features. WebGL is based on OpenGL ES 2.0 so it doesn’t expose features like query timers, compute shaders, uniform buffers, etc. Some graphics research areas, such as animation, don’t always need access to the latest GPU features and instead just need a way to visualization their results. WebGL is faster to develop with. JavaScript is not as fast as C++, which is a concern when we are comparing a CPU-bound algorithm to previous work in C++. Try it.
Distance Estimated 3D Fractals (Part I) During the last two years, the 3D fractal field has undergone a small revolution: the Mandelbulb (2009), the Mandelbox (2010), The Kaleidoscopic IFS’s (2010), and a myriad of equally or even more interesting hybrid systems, such as Spudsville (2010) or the Kleinian systems (2011). All of these systems were made possible using a technique known as Distance Estimation and they all originate from the Fractal Forums community. Part I briefly introduces the history of distance estimated fractals, and discuss how a distance estimator can be used for ray marching. Part II discuss how to find surface normals, and how to light and color fractals. Part III discuss how to actually create a distance estimator, starting with distance fields for simple geometric objects, and talking about instancing, combining fields (union, intersections, and differences), and finally talks about folding and conformal transformation, ending up with a simple fractal distance estimator. The background Raymarching
Volume Rendering 101 Pictures above from: There is quite a bit of documentation and papers on volume rendering. But there aren't many good tutorials on the subject (that I have seen). So this tutorial will try to teach the basics of volume rendering, more specifically volume ray-casting (or volume ray marching). What is volume ray-casting you ask? Volume ray-casting (also called ray marching) is exactly how it sounds. This tutorial will focus specifically on how to intersect a ray with the volume and march it through the volume. First we need to know how to read in the data. //create the scalar volume texturemVolume = new Texture3D(Game.GraphicsDevice, mWidth, mHeight, mDepth, 0, TextureUsage.Linear, SurfaceFormat.Single); private void loadRAWFile8(FileStream file){ BinaryReader reader = new BinaryReader(file); byte[] buffer = new byte[mWidth * mHeight * mDepth]; int size = sizeof(byte); reader.Read(buffer, 0, size * buffer.Length); reader.Close(); base.DrawCustomEffect();
Generating Fur in DirectX or OpenGL Easily - Tutorials made easy! Fur Effects - Teddies, Cats, Hair ....by bkenwright@xbdev.net Have you ever watched Monsters Inc? Or other movies like Shrek? One particular technique of creating good looking fur without killing yourself with maths and algorithms and weeks of processing time, is to use shell texturing! Now this is not one of those easy tutorials that you can swish through, well I couldn't....so your going to have to stock up on coffee to get through this puppy! Feedback is always welcome on this....sort of a trial and error thing for me...reading articles and testing out new ideas that come to me while watching tv :) There's all sorts of things going on with fur! Well it's going to be a late night for me... Lets have a look at the basic idea of layers and textures. We then have a single noise texture, which if we wanted could be used to generate a very basic fur model! To show this in action I did simple Shader/DirectX demo just to make sure you've got this simple principle of layers! MMmmmm Donuts!!
Robert Bridson Current Position As of August 2013 I am no longer a full-time professor at UBC, but retain adjunct status. I am now a Senior Principal Research Scientist for Visual Effects at Autodesk. Symposium on Computer Animation I helped organize SCA 2011, August 5-7 in Vancouver, just before SIGGRAPH: www.siggraph.org/sca2011 Past Industry Work I cofounded Exotic Matter, a graphics company which made physical simulation software for the film industry. My official screen credits are for The Hobbit: An Unexpected Journey, The Adventures of Tintin, The Rise of the Planet of the Apes, and Inkheart, but I have helped write in-house software at studios used in many other films. Animations and Images Books Publications I've supplied preprints in most cases, which may be missing figures or include typos etc. Resolving fluid boundary layers with particle strength exchange and weak adaptivity, X. Other Publications My Group Current: Todd Keeler (PhD)Xinxin Zhang (PhD)Yufeng Zhu (PhD) Past: Downloads Teaching Personal
Jayelinda Suridge's Blog - Modelling by numbers: Part One A The following blog post, unless otherwise noted, was written by a member of Gamasutra’s community. The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company. An introduction to procedural geometry Procedural geometry is geometry modelled in code. This can be done at runtime (the mesh does not exist until the end-user runs the program), at edit time (using script or tool when the application is being developed), or inside a 3D art package (using a scripting language such as MEL or MaxScript). Benefits of generating meshes procedurally include: Variation: Meshes can be built with random variations, meaning you can avoid repeating geometry. Scalability: Meshes can be generated with more or less detail depending on the end-user’s machine or preferences. Control: Game/level designers with little knowledge of 3D modelling software can have more control over the appearance of a level. Speed: Many variants of an object can be generated easily and quickly.
L-system L-system trees form realistic models of natural patterns Origins[edit] 'Weeds', generated using an L-system in 3D. As a biologist, Lindenmayer worked with yeast and filamentous fungi and studied the growth patterns of various types of algae, such as the blue/green bacteria Anabaena catenula. L-system structure[edit] The recursive nature of the L-system rules leads to self-similarity and thereby, fractal-like forms are easy to describe with an L-system. L-system grammars are very similar to the semi-Thue grammar (see Chomsky hierarchy). G = (V, ω, P), where V (the alphabet) is a set of symbols containing elements that can be replaced (variables)ω (start, axiom or initiator) is a string of symbols from V defining the initial state of the systemP is a set of production rules or productions defining the way variables can be replaced with combinations of constants and other variables. The rules of the L-system grammar are applied iteratively starting from the initial state. Example 1: Algae[edit]
Patterns in nature Natural patterns form as wind blows sand in the dunes of the Namib Desert. The crescent shaped dunes and the ripples on their surfaces repeat wherever there are suitable conditions. Patterns in nature are visible regularities of form found in the natural world. These patterns recur in different contexts and can sometimes be modelled mathematically. Natural patterns include symmetries, trees, spirals, meanders, waves, foams, arrays, cracks and stripes.[1] Early Greek philosophers studied pattern, with Plato, Pythagoras and Empedocles attempting to explain order in nature. In the 19th century, Belgian physicist Joseph Plateau examined soap films, leading him to formulate the concept of a minimal surface. Mathematics, physics and chemistry can explain patterns in nature at different levels. History[edit] Belgian physicist Joseph Plateau (1801–1883) formulated the mathematical problem of the existence of a minimal surface with a given boundary, which is now named after him. Causes[edit]
Essential Math for Games Programmers As the quality of games has improved, more attention has been given to all aspects of a game to increase the feeling of reality during gameplay and distinguish it from its competitors. Mathematics provides much of the groundwork for this improvement in realism. And a large part of this improvement is due to the addition of physical simulation. Creating such a simulation may appear to be a daunting task, but given the right background it is not too difficult, and can add a great deal of realism to animation systems, and interactions between avatars and the world. This tutorial deepens the approach of the previous years' Essential Math for Games Programmers, by spending one day on general math topics, and one day focusing in on the topic of physical simulation. Topics for the various incarnations of this tutorial can be found below. Current Materials Slides The latest available versions of the slides for the math tutorials at GDC 2015 are as follows: Past Materials Core Mathematics
Guerrilla Tool Development I have a weak spot for cool game development tools. Not the IDE, or art or sound tools – I mean the level editors, AI construction tools – those that developers develop specifically for their games. Those that you know could help you multiply your content, and craft your game just a little bit better. Unfortunately, if you work on a small team, developing sophisticated tools like that is pretty much out of the question. Know your content creation tools inside out Before you even think about developing customised tools, it is extremely important to know your content-creation tools extremely well – even if you are not the content creator. As a programmer, you should focus on the following features: Automation Many art tools support some kind of batch processing. Data driven design This goes hand-in-hand with automation. Extensions The more you can extend a tool – and the easier it is – the more you can customise it for your specific usage. Can you traverse the objects in the file? Organisation
Instancing Of In-Game Entities - Procedural Content Generation Wiki An increasingly common technique, particularly in middleware such as SpeedTree is to dynamically vary the parameters of in-game entities to create a large possible number of entities with a statistically insignificant chance of repetition. This could be the visible geometry of a tree or person, or the in-game properties of an weapon or piece of equipment. Various PCG techniques such as pseudorandom number generation can be used to instance the entities, while compressing the total amount of information required to be held by the game for each unique entity. Instancing impacts the game in a variety of ways: it should be seen as part of a continuum that has procedural generation at one end. An identify system may be used in conjunction with the instancing to prevent the player completely understanding new instances when encountered, and forcing them to experiment with new objects to determine their function. PCG Wiki References External Links
Cg Programming/Unity Cg programming in the game engine Unity is considerably easier than Cg programming for an OpenGL or Direct3D application. Import of meshes and images (i.e. textures) is supported by a graphical user interface; mipmaps and normal maps can be computed automatically; the most common vertex attributes and uniforms are predefined; OpenGL and Direct3D states can be set by very simple commands; etc. Preliminaries [ edit ] A free version of Unity can be downloaded for Windows and MacOS at Unity's download page . All of the included tutorials work with the free version. First, this part assumes that readers are somewhat familiar with Unity. Tutorials [ edit ] Note that the tutorials assume that you read them in the order in which they are presented here, i.e. each tutorial will assume that you are familiar with the concepts and techniques introduced by previous tutorials. Basics [ edit ] Transparent Surfaces [ edit ] Basic Lighting [ edit ] Basic Texturing [ edit ] Textures in 3D [ edit ]
50 Tips for Working with Unity (Best Practices) About these tips (Edit: August 2016. I have revised these tips. You can find the new list here.) These tips are not all applicable to every project. They are based on my experience with projects with small teams from 3 to 20 people.There’s is a price for structure, re-usability, clarity, and so on — team size and project size determine whether that price should be paid.Many tips are a matter of taste (there may be rivalling but equally good techniques for any tip listed here).Some tips may fly in the face of conventional Unity development. Process 1. 2. 3. 4. It makes it unnecessary to re-setup each scene.It makes loading much faster (if most objects are shared between scenes).It makes it easier to merge scenes (even with Unity’s new text-based scenes there is so much data in there that merging is often impractical in any case).It makes it easier to keep track of data across levels. You can still use Unity as a level editor (although you need not). 5. Scene Organisation 6. 7. 8. 9. 10. Art
Nvidia CG shader Tutorial The Cg Tutorial is now available, right here, online. You can purchase a beautifully printed version of this book , and others in the series, at a 30% discount courtesy of InformIT and Addison-Wesley. Please visit our Resources page to see all the latest whitepapers and conference presentations that can help you with your projects. This chapter has the following four sections: "What Is Cg?" 1.1 What Is Cg? This book teaches you how to use a programming language called Cg. Cg provides developers with a complete programming platform that is easy to use and enables the fast creation of special effects and real-time cinematic-quality experiences on multiple platforms. Cg stands for "C for graphics." On the other hand, if you are not familiar with C or even programming languages in general but you enjoy computer graphics and want to learn something new, read on anyway. Much of this chapter is background that provides valuable context for understanding Cg and using it effectively. Example 1-1.