Update (4/27)I still have a few people to respond to (in particular those who submitted for terrain or particle systems), but submissions are now closed. I got a lot of great responses and only regret that I can't have everyone write. This is going to be an excellent book.
BackgroundKevin and I have been working on a book called More OpenGL Game Programming, which is a direct follow-up to Beginning OpenGL Game Programming and an indirect sequel to OpenGL Game Programming. The first part of the book will cover advanced OpenGL topics not covered in our previous books, and the second part will cover (mostly) graphics techniques that are useful to game programmers. The intent is to present the "standard" way of doing fairly common things, rather than introducing new techniques or covering niche topics. We feel that there is a big gap in the books available at this level, and hope that this will be useful to people who have a basic understanding of 3D game development and want to move to the next level.
The ProblemWe've been working on this book for almost a year, and haven't been able to find much time to work on it. The problem is that many of the topics we want to cover require that the author either already have pretty extensive knowledge of it, or have at least several weeks free to dedicate to research. When you have more than 20 topics that fall into this category, it becomes pretty daunting.
But rather than cancelling the book, or trying to scale back the content, we (or rather, I, since Kevin opted to drop out) decided instead to find (many) additional authors, each of which will cover a single topic (or in some cases, small number of topics), presumably which they already understand fairly well. Rather than have this be a "Gems-style" collection of unrelated articles, however, I have a table of contents that I'd like to follow, and I'll be adding "glue" to make sure all the sections flow together as naturally as possible.
Where you come inSo the point of all of this is that I'm looking for authors. You'll be fully credited for your work, as well as paid (haven't worked out the exact terms yet, but it'll be on the order of $10/page, to be paid once the final draft from you is received). If you're confident in your technical knowledge and skills, but not confident in your writing ability, don't worry; I'll be acting as editor for this, and there will be additional editors as well.
Table of Contents (Updated 4/8)The following is the table of contents. Any topics listed in italics have either already been written by me or are tentatively spoken for by someone. The ToC is still mostly flexible, so even if you're not planning on contributing, if you think that there are topics that need to be added - or removed - I'd appreciate the feedback.
Part I – Advanced OpenGL
The purpose of this part of the book is to cover advanced OpenGL topics that weren't covered in the previous books.
Chapter 1 – OpenGL Potpourri
1.1 – Vertex Buffer Objects
1.2 – Pixel Buffer Objects
1.3 - Multisampling
1.4 - Occlusion Queries
1.5 – User clip planes
1.6 - Disabling VSync
1.7 – Framebuffer Objects (may be better in the texture mapping chapter under render-to-texture)
[b]Chapter 2 – Introduction to Shaders
Chapter 3 – Low-level Shaders
Covering ARB_vertex_program and ARB_fragment_program, and possibly some of the newer vendor-specific extensions
Chapter 4 – The OpenGL Shading Language
Chapter 5 – Advanced Texture Mapping
5.0 – Anisotropic Filtering
5.1 – Compressed textures
5.2 - NPOT textures/texture rectangles
5.3 - Floating point texture formats
5.4 - Bump Mapping
5.5 - Displacement Mapping
5.6 - Parallax Mapping
5.7 - Dynamic Light Mapping
5.8 - Detail Maps
5.9 - Projective Textures
5.10 - Splatting
5.11 - Refraction/the Fresnel effect
5.12 - Render to Texture
Part II – The Elements of a Game(?)
This section of the book will turn to showing how to do the types of things you'd do in a game using OpenGL
Chapter 6 - Special Effects
6.1 – Billboarding
6.2 - Particle Systems
6.2.1 - point sprites
6.3 - Shadows
6.3.1 - Static Shadows
6.3.2 - Projective Shadows
6.3.3 - Shadow Mapping
6.3.4 - Shadow Volumes
6.4 - Volumetric Fog (maybe not necessary, since we already covered fog coordinates in BOGLGP)
6.5 - NPR (mainly just toon shading)
6.6 – Glow
6.7 - Reflections
6.8 - HDR lighting
6.9 – Explosions
Chapter 7 – Rendering Nature
7.1 – Skies
7.1.1 – Skyboxes
7.1.2 – Skyplanes
7.1.3 – Skydomes
7.1.4 – Dynamic methods
7.2 – Terrain (probably just going to give an overview of various techniques, but focus on a brute-force method using hardware)
7.2.1 - Geomipmapping
7.2.2 - Chunked LOD
7.2.3 - Hardware based
7.3 - Clouds
7.4 - Fire
7.5 – Water
7.6 – Plants/vegetation?
Chapter 8 - Working with 3D Models
8.1 – Static models (.obj?)
8.2 – Keyframe Animation (.md3?)
8.3 – Vertex Skinning (.mdl? .md5?)
8.4 - Summary
Include 3ds in there somewhere?
Chapter 9 – Game Engine Design Primer?
This may be too big a topic to tackle in a single chapter, and we may be better off simply explaining design choices that were made for the game in the final chapter.
Chapter 10 - Making a Game: Another Time to Kill (I'll probably just write this after the game is finished)
Appendix A – ARB_vertex_program reference
Appendix B – ARB_fragment_program reference
Appendix C – GLSlang reference
Additional chapter ideas:
Scene management/Visibility determination?
See below for my comments on the updated ToC
What you'll be writingChapters 3, 4, and 9 (if we include it) will pretty much require a single author. Chapter 8 should probably be a single author as well. The rest of the chapters can be split up with different authors for each subtopic.
The total length of the book is going to be 400-500 pages. That's about 30 pages per chapter (except for chapters 3 and 4, which will be longer), and about 2-8 pages per topic (depending).
Whenever appropriate, you should use figures, screenshots, tables, etc., to make the book more readable.
DemosEach subtopic should include at least one demo. The demo should be straightforward, clearly illustrating the material presented in your section, while still being relevant to gaming. I'll provide a basic framework that you should use so there is some commonality among all the demos. If the demo needs extensions, it should use GLee.
To be consistent with the previous books, the demos should be written using Visual Studio and Win32. However, I'd like to be able to provide SDL versions of all the demos as well.
DeadlinesI'll need to receive the first draft from you no later than the end of June. If any revisions are needed after I review the material, you'll need to submit a final draft by the end of July.
This book is not shipping with a CD. Instead, the sample code will be made available via the book's website. So the demos won't be due until the end of August. That said, since you'll be writing at least a little about the demo and probably include a screenshot, you should at least have a working demo before you submit the first draft.
Interested?If you're interested, please email me with the following:
* Which of the above topics you want to cover
* A paragraph or two summarizing what you're going to cover related to the topic.
* A brief bio of yourself (basically, if I don't know you, I need you to tell me enough to convice me that you know what you're talking about and that you're going to be reliable)
* An estimate of how many pages you'll need to cover the topic well.
* A description of the demo (or demos) that you'll include.
You can choose more than one topic if you want, but don't overcommit yourself. It's going to be very important that everyone does what they say they will do. I anticipate that for at least some of the topics listed above, I'll have more than one interested party.
If you know people that may be interested in this, feel free to point them to this thread.