Wednesday, May 22, 2013

OpenGL Development Cookbook

Hi all,
  I have been extremely busy these couple of months with my book OpenGL Development Cookbook by Packt publishing. Its is a collection of recipes in OpenGL 3.3 core profile. The RAW form of the book is available here: I am already through with the final drafts.

All of the source code for the book will be hosted on github. Currently, I include visualstudio 2010 solution files and will be doing a premake version for other platforms. The detailed book contents are as follows:

Chapter 1 - Introduction to Modern OpenGL Development
   - Setting up OpenGL 3.3 core profile in VisualStudio 2010 with freeglut, glew and glm libs
   - Rendering a simple coloured triangles using shaders
   - Ripple deformer in vertex shader
   - Dynamic sub-division of a plane using geometry shader
   - Dynamic sub-division with geometry shader and instanced rendering
   - Drawing a 2D image using SOIL and fragment shader

Chapter 2 - 3D Viewing and Object Picking System Development 
   - A vector based camera model with FPS style input
   - Free Camera
   - Target Camera
   - View Frustum Culling
   - Object Picking using Depth Buffer
   - Object Picking using Colour Buffer
   - Object Picking using Scene Intersection Queries 

Chapter 3 - Offscreen Rendering and Environment Mapping
   - Twirl Filter using Fragment Shader
   - Skybox using Static Cube Mapping
   - Mirror using Render-to-Texture with FBO
   - Reflective Object using Dynamic Cube Mapping
   - Area Filtering (Sharpening/Blurring/Embossing) using Digital Convolution
   - Glow Effect

Chapter 4 - Lights and Shadows
   -  Per-vertex and Per-fragment Point Lighting
   -  Per-fragment Directional Light
   -  Per-fragment Point Light with Attenuation
   -  Per-fragment Spot Light
   -  Shadow Mapping with FBO
   -  Shadow Mapping with percentage closer filtering (PCF)
   -  Variance Shadow Mapping

Chapter 5 - Working with Mesh Model Formats and Simple Particle Systems
   -  Loading Terrains using Heightmaps
   -  3DS Model Loading using Separate Buffer Objects
   -  OBJ Model Loading using Interleaved Buffer Objects
   -  EZMesh Model Loading
   -  Simple Particle System

Chapter 6 - GPU-based Global Illumination and Alpha Blending Techniques
   -  Depth Peeling
   -  Dual Depth Peeling
   -  Screen Space Ambient Occlusion
   -  Spherical Harmonics
   -  GPU Ray Tracing
   -  GPU Path Tracing

Chapter 7 - GPU-based Volume Rendering Techniques
   -  Volume Rendering using 3D Texture Slicing
   -   Volume Rendering using Single-pass GPU Ray Casting
   -   Pseudo-isosurface Rendering in Single-pass GPU Ray Casting
   -   Volume Rendering using Splatting
   -   Transfer Function for Volume Classification
   -   Polygonal Isosurface Extraction using Marching Tetrahedra Algorithm
   -   Volumetric Lighting using Half Angle Slicing

Chapter 8 - Skeletal and Physically-based Simulation on the GPU
   -   Skeletal Animation using Matrix Palette Skinning
   -   Skeletal Animation using Dual Quaternion Skinning
   -   Modelling Cloth using Transform Feedback
   -   Collision Detection and Response on Transform Feedback Cloth
   -   Particle System using Transform Feedback

As you can see, there are plenty of techniques on offer. I do hope people find this book useful.
I will detail the github code repository soon.

Some sample Figures from the book.

Skeletal Animation using Matrix Palette Skinning

Ripple Deformer using Vertex Shader

Variance Shadow Mapping

Half Angle Slicing

 Dynamic Cube Mapping


I will update this post with more information soon.


sushiperv said...

This is a must buy! :)

Muhammad Mobeen Movania said...

Thanks sushiperv.

pep said...

Perfect job. I need to buy. Are you planning more Physics tutorial or book - physX or bulletPhysics in practice ?

Muhammad Mobeen Movania said...

Hi Pep,
Actually i have already written a book on Bullet. I was in discussion with the author of Bullet Erwin Coumans. However, he wants to have it done differently hence i postponed the book. This is definitely in my plan.

I will cover both Bullet and PhysX in parallel so you now how to achieve a similar thing in Bullet.

I am looking to find more time. I am currently very busy with office work.

Another plan is to document my opensource project OpenCloth:
into a book. This will be a book on implementing cloth simulation in c++ and OpenGL. I am not sure if I can get time to do that.

A lot of things but I don't have helpers to help me out with it.

pep said...

Thank for answers. Waiting for yours books.

Krishna Bhogaonker said...

Say, I have been trying to compile the sample code in Linux but have not been able to do so. Do you have any suggestions? I have a copy of the book, but there is no mention of compiling under linux. I tried
g++ -o mycc main.cpp -lGLEW -lfreeglut -glm -lm

and some other variations, but no luck. Has anyone else had this issue?

Muhammad Mobeen Movania said...

You need to add additional files also.

g++ -o mycc main.cpp glslshader.cpp -lGLEW -lfreeglut -glm

Todate, no body has reported any compilation errors to me on linux.

Carlos Zapata Conforto said...

Excellent resource to learn OpenGL. Have you thought about work on a second edition of this book?

Muhammad Mobeen Movania said...

Hi Carlos,
Yes I had a couple of request to work on the second edition of book. By the way what topics would you like to be covered in the second edition?

Popular Posts

Copyright (C) 2011 - Movania Muhammad Mobeen. Awesome Inc. theme. Powered by Blogger.