• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
mukundyk

Regarding the theory behind shaders

4 posts in this topic

Hello Everyone,

i have started a little bit of shader programming, with GLSL. In most books or tutorials, i could find the way to program shaders. But i would like to know why shaders are exactly being used, what is wrong with the fixed pipeline architecture, and how exactly shaders came into being. Are there any resources that i can find that would help me learn more about the theory behind shaders?

Thanks in advance.
0

Share this post


Link to post
Share on other sites
I suggest real time rendering which would explain all your questions.
graphics shaders: theory and practise is also a good book.
the official glsl book as well.

I would also suggest to start learning 4.0 or 4.1 opengl/shaders since its most recent.
And its actually more convinient for the programmer as well.
1

Share this post


Link to post
Share on other sites
[quote name='muk45' timestamp='1308083096' post='4823355']
Hello Everyone,

i have started a little bit of shader programming, with GLSL. In most books or tutorials, i could find the way to program shaders. But i would like to know why shaders are exactly being used, what is wrong with the fixed pipeline architecture, and how exactly shaders came into being. Are there any resources that i can find that would help me learn more about the theory behind shaders?

Thanks in advance.
[/quote]

The problem with the fixed pipeline is that its fixed and thus not very flexible, there is a set of functions available that you can use to render things and thats it, With shaders you have much more control.

The vertex shader basically outputs the vertex position in viewspace + other vertex attributes you need, the shader can take any data you want as input, (normally you take the vertex worldspace position and other attributes plus the model, view and projection matrices and transform the vertex to screenspace but you can send in other data and transform it in other ways aswell) , This means you can do for example hardware skinning (Pass in the weights for each bone and their transformation matrices and use those to transform the vertex aswell before transforming it to viewspace) or anything else you can think of. (The pixel shader works similarily but gets its input from the vertex shaders output (+ any uniform data you send in yourself) and outputs the final depth, color, etc of a pixel (How you calculate the final pixel color in your shader is up to you so again its far more flexible than the fixed pipeline where your options are restricted to the methods provided by the API/driver).

Anything you can think of doing with shaders is theoretically possible to do with a fixed pipeline aswell but hardware or driver developers would have to explicitly add support to the fixed pipeline for pretty much everything (Hardware skinning would require the fixed pipeline to support multiple weights(one per bone) for each vertex and additional transformation matrices(also one per bone) for example and the support for that wouldn't be usable for that much else and more complex effects would be even less flexible).
1

Share this post


Link to post
Share on other sites
It wouldnt be able to be managed. Imagine you have your terrain shader that blends all kinds of grass and dirt. Then you want to add a light map to that. Then you want to be able to normal map it. Then you want it to be run based of a height map that "pushes" the terrain up. Those are 4 different options to make up 4x3x2x1 combinations. Imagine having to write a program that takes care of all of those things.

Say you have terrain and you just want grass. Or grass and dirt. or grass, dirt and sand. There are just so many combinations. If you have a shader, you know that you only need to blend 2 or 3 or 4 textures and you can blend them exactly how you want to. Assuming you understand heightmaps, they have a scale factor applied. So bright white gets multiplied by your max terrain hight. In a shader you can just multiply, but if it were fixed function to do all that stufff I just said it would be like.

StartTerrainRendering();
Enable2BlendTextures();
UseTerrainLightMap();
SetTerrainMaxHeightMapScale();
.............
...............
.............
And then for every new cool feature Crysis 3, 4,5 come out with you would have to turn on/off more and more combinations of junk. Fixed function itself is a giant shader. It has to check how to render a pixel. What color (glColor) is on, is lighting enabled. So it is easier to say hey I want these 5 specific terrain features, Instead of turning of 100 of them and enabling the 5 that you want.
1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0