GLSL Essentials - Jacobo Rodriguez - E-Book

GLSL Essentials E-Book

Jacobo Rodriguez

0,0
27,59 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

Shader programming has been the largest revolution in graphics programming. OpenGL Shading Language (abbreviated: GLSL or GLslang), is a high-level shading language based on the syntax of the C programming language.With GLSL you can execute code on your GPU (aka graphics card). More sophisticated effects can be achieved with this technique.Therefore, knowing how OpenGL works and how each shader type interacts with each other, as well as how they are integrated into the system, is imperative for graphic programmers. This knowledge is crucial in order to be familiar with the mechanisms for rendering 3D objects.

GLSL Essentials is the only book on the market that teaches you about shaders from the very beginning. It shows you how graphics programming has evolved, in order to understand why you need each stage in the Graphics Rendering Pipeline, and how to manage it in a simple but concise way. This book explains how shaders work in a step-by-step manner, with an explanation of how they interact with the application assets at each stage.

This book will take you through the graphics pipeline and will describe each section in an interactive and clear way. You will learn how the OpenGL state machine works and all its relevant stages. Vertex shaders, fragment shaders, and geometry shaders will be covered, as well some use cases and an introduction to the math needed for lighting algorithms or transforms. Generic GPU programming (GPGPU) will also be covered.

After reading GLSL Essentials you will be ready to generate any rendering effect you need.

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB
MOBI

Seitenzahl: 118

Veröffentlichungsjahr: 2013

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Table of Contents

GLSL Essentials
Credits
About the Author
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers and more
Why Subscribe?
Free Access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the color images of this book
Errata
Piracy
Questions
1. The Graphics Rendering Pipeline
A brief history of graphics hardware
The Graphics Rendering Pipeline
Geometry stages (per-vertex operations)
Fragment stages (per-fragment operations)
External stages
Differences between fixed and programmable designs
Types of shaders
Vertex shaders
Fragment shaders
Geometry shaders
Compute shaders
GPU, a vectorial and parallel architecture
The shader environment
Summary
2. GLSL Basics
The Language
Language basics
Instructions
Basic types
Variable initializers
Vector and matrix operations
Castings and conversions
Code comments
Flow control
Loops
Structures
Arrays
Functions
Preprocessor
Shader input and output variables
Uniform variables
Other input variables
Shader output variables
Summary
3. Vertex Shaders
Vertex shader inputs
Vertex attributes
Uniform variables
Vertex shader outputs
Drawing a simple geometry sample
Distorting a geometry sample
Using interpolators
Simple lighting
Basic lighting theory
Lighting example code
Summary
4. Fragment Shaders
Execution model
Terminating a fragment shader
Inputs and outputs
Examples
Solid color mesh
Interpolated colored mesh
Using interpolators to compute the texture coordinates
Phong lighting
Summary
5. Geometry Shaders
Geometry shaders versus vertex shaders
Inputs and outputs
Interface blocks
Example – pass-thru shader
Example – using attributes in the interface blocks
A crowd of butterflies
Summary
6. Compute Shaders
Execution model
Render to texture example
Raw data computations
Summary
Index

GLSL Essentials

GLSL Essentials

Copyright © 2013 Packt Publishing

All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.

Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.

Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.

First published: December 2013

Production Reference: 1181213

Published by Packt Publishing Ltd.

Livery Place

35 Livery Street

Birmingham B3 2PB, UK.

ISBN 978-1-84969-800-9

www.packtpub.com

Cover Image by Jacobo Rodríguez Villar (<[email protected]>)

Credits

Author

Jacobo Rodríguez

Reviewers

Dimitrios Christopoulos

Toni Ascó González

Oscar Ripolles

Acquisition Editors

Antony Lowe

Rebecca Pedley

Commissioning Editors

Subho Gupta

Priyanka Shah

Sharvari Tawde

Technical Editors

Venu Manthena

Gaurav Thingalaya

Project Coordinator

Amey Sawant

Proofreaders

Maria Gould

Paul Hindle

Indexer

Priya Subramani

Graphics

Ronak Dhruv

Production Coordinator

Shantanu Zagade

Cover Work

Shantanu Zagade

About the Author

Jacobo Rodríguez is a real-time computer graphics programmer living in the north of Spain. He has working experience with computer graphics, digital photogrammetry, computer vision, and video game development. Jacobo has worked for cutting-edge technology companies such as Metria Digital and Blit Software, and has also worked as an entrepreneur and freelancer for a variety of clients of platforms such as PC, iOS, PlayStation 3, PlayStation Vita, and PlayStation Portable. Jacobo has been working and learning at the same time for the last 20 years in the computer graphics field in roles ranging from junior programmer to project manager, passing through R&D director as well. Jacobo has always been very committed to the computer graphics community, having released for free the OpenGL Shader Designer: the first application in the world (even before NVIDIA with FX Composer or ATI with RenderMonkey) designed to visually develop and program GLSL shaders, as well as some OpenGL programming tutorials, all forming part of the Official OpenGL SDK.

I would like to thank my family for supporting me in those late nights and weekend writing sessions. I would also like to thank Toni Ascó Emilio, José Dominguez, and Iñaki Griego, for their invaluable support and resources during the production of this book.

About the Reviewers

Dimitrios Christopoulos studied Computer Engineering and Informatics and holds a Master of Science degree in Virtual Reality and Computer Graphics. He has 16+ years of experience in 3D computer graphics with a strong specialty in C/C++/OpenGL and Linux. Dimi has worked for European Union research projects, Indie game productions, and museums producing games, educational applications, and cultural heritage productions for desktops and virtual reality installations such as Domes, Caves, Reality Centers, and Powerwalls. His research interests include virtual reality, human computer interaction, computer graphics, and games, with numerous publications in relevant conferences and journals. Dimitrios has been an author of the book More OpenGL Programming, Course Technology PTR, and has contributed to OpenGL Programming, Prima Tech, and has been a reviewer for OpenGL Development Cookbook, Packt Publishing.

I would like to thank my wife Giota for being supportive during my late night reviewing sessions.

Toni Ascó González holds a Master's degree in Computer Science specializing in real-time graphics and OpenGL. For the past 16 years, he has been programming graphics applications from virtual reality to video games. He founded a virtual reality company in Barcelona, and dedicated eight years to develop a state-of-the-art, real-time software for architectural visualization. After that experience, he moved to Bravo Game Studios and developed video games for mobile platforms and portable consoles. Currently, he applies his experience in 3D and real-time graphics in the virtual gambling field.

I would like to thank my other half, Chu, for her patience, love, and care. Life would be uninteresting and void without you at my side. Of course, thanks to my mother and my brother for being my foundation and supporting my love for computers since I was nine. 
I would also like to thank all of the mentors and colleagues who have been with me over all these years. Bernat Muñoz, Alex Novell, and Marc Martí from Insideo for all those wonderful years experimenting with new techniques. Also, Alberto García-Baquero, Benjamín de la Fuente, and Miguel Guillén, who have shown me new and amazing ways of doing things, and given me new perspectives on product development. Finally, a special mention to Jacobo Rodriguez Villar; without him, I wouldn't be where I am.

Oscar Ripolles received his degree in Computer Engineering in 2004 and his Ph.D. in 2009 at the Universitat Jaume I in Castellon (Spain). He has also been a researcher at the Université de Limoges (France) and at the Universidad Politecnica de Valencia (Spain). He is currently woking in neuroimaging at Neuroelectrics in Barcelona (Spain). His research interests include multiresolution modeling, geometry optimization, hardware programming, and medical imaging.

www.PacktPub.com

Support files, eBooks, discount offers and more

You might want to visit www.PacktPub.com for support files and downloads related to your book.

Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at <[email protected]> for more details.

At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.

http://PacktLib.PacktPub.com

Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can access, read and search across Packt's entire library of books.

Why Subscribe?

Fully searchable across every book published by PacktCopy and paste, print and bookmark contentOn demand and accessible via web browser

Free Access for Packt account holders

If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view nine entirely free books. Simply use your login credentials for immediate access.

Preface

If you are still in the old fixed pipeline days and your OpenGL knowledge is a little bit rusty, or if you want to jump from OpenGL|ES to a more complete and modern version of OpenGL, then this book is for you. Inside the pages of this book, you will find the details of the most recent OpenGL Shading Language Version: 4.3.

This book has been written looking forward in the OpenGL specification. No old functionalities or deprecated code will be found in this book, just the plain 4.3 Version.

What this book covers

Chapter 1, The Graphics Rendering Pipeline, starts with a brief introduction to the rendering pipeline and moves on to give an overview of the programmable stages.

Chapter 2, GLSL Basics, covers language basics, types, vector operations, flow control, preprocessor, and shader inputs and outputs.

Chapter 3, Vertex Shaders, looks at the vertex programmable stage, uniform variables and basic lighting, and vertex shader examples.

Chapter 4, Fragment Shaders, looks at the execution model, inputs and outputs, and examples.

Chapter 5, Geometry Shaders, looks at geometry shader structure, interface blocks, and examples.

Chapter 6, Compute Shaders, covers the execution model, GPGPU basics, render to texture, and basic raw computations.

What you need for this book

In order to run the samples from this book, you will need a text editor and a C/C++ compiler. For the text editor, a free editor such as Notepad++ or SciTE could be used, and for the C/C++ compiler, GCC/G++, or Visual Studio (the Express version is free) are the best choices. As we are addressing the latest OpenGL version, a graphics card that supports at least OpenGL 4.3 will be needed.

Who this book is for

This book is for people who have some experience or basic knowledge in computer graphics and who want to upgrade their knowledge to the latest OpenGL version. It is also for people who want to take the jump from the fixed pipeline to the programmable pipeline.

Reader feedback

Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of.

To send us general feedback, simply send an e-mail to <[email protected]>, and mention the book title via the subject of your message. If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide on www.packtpub.com/authors.

Customer support

Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.

Downloading the color images of this book

We also provide you a PDF file that has color images of the screenshots/diagrams used in this book. The color images will help you better understand the changes in the output. You can download this file from: http://www.packtpub.com/sites/default/files/downloads/8009ot_graphics.pdf.

Errata

Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you would report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/submit-errata, selecting your book, clicking on the errata submission form link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded on our website, or added to any list of existing errata, under the Errata section of that title. Any existing errata can be viewed by selecting your title from http://www.packtpub.com/support.

Piracy

Piracy of copyright material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works, in any form, on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.

Please contact us at <[email protected]> with a link to the suspected pirated material.

We appreciate your help in protecting our authors, and our ability to bring you valuable content.

Questions

You can contact us at <[email protected]> if you are having a problem with any aspect of the book, and we will do our best to address it.

Chapter 1. The Graphics Rendering Pipeline

If this is your first approach to shader technology, you should know a few things before we start writing GLSL code. The differences between the usual CPU architecture and a GPU are big enough to warrant mentioning them.