{"product_id":"professional-webgl-programming-developing-3d-graphics-for-the-web-paperback-softback-9781119968863","title":"Professional WebGL Programming; Developing 3D Graphics for the Web (Paperback \/ softback) 9781119968863","description":"\u003cfont face=\"Georgia\"\u003e\r\n\u003cp\u003e\u003cfont size=\"6\"\u003eProfessional WebGL Programming\u003c\/font\u003e\u003cbr\u003e\r\n\u003cfont size=\"5\"\u003eDeveloping 3D Graphics for the Web\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\r\n\r\n\r\n\u003cp\u003e\u003cfont size=\"4\"\u003eAndreas Anyuru (Author)\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003e9781119968863, Wiley\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003ePaperback \/ softback, published 8 June 2012\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003e360 pages\u003cbr\u003e23.6 x 18.9 x 1.8 cm, 0.609 kg\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\r\n\r\n\r\n\r\n\u003cp align=\"justify\"\u003e\u003cstrong\u003e\u003cfont size=\"3\"\u003e\u003cb\u003eEverything you need to know about developing hardware-accelerated 3D graphics with WebGL!\u003c\/b\u003e \u003cbr\u003e \u003cbr\u003e   \u003cp\u003eAs the newest technology for creating 3D graphics on the web, in both games, applications, and on regular websites, WebGL gives web developers the capability to produce eye-popping graphics. This book teaches you how to use WebGL to create stunning cross-platform apps. The book features several detailed examples that show you how to develop 3D graphics with WebGL, including explanations of code snippets that help you understand the why behind the how.\u003c\/p\u003e \u003cp\u003eYou will also develop a stronger understanding of WebGL development from coverage that:\u003c\/p\u003e \u003cp\u003e•Provides a comprehensive overview of WebGL and shows how it relates to other graphics-related technologies\u003cbr\u003e •Addresses important topics such as the WebGL graphics pipeline, 3D transformations, texturing and lighting\u003cbr\u003e •Teaches you how to write vertex shaders and fragment shaders for WebGL\u003cbr\u003e •Includes a lot of useful guidelines, tips, and tricks for WebGL performance optimizations\u003c\/p\u003e \u003cp\u003e\u003cb\u003eProfessional WebGL Programming\u003c\/b\u003e is the first book on the market to delve into this fascinating topic and it puts you on your way to mastering the possibilities that exist with WebGL.\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e\u003c\/font\u003e\u003c\/strong\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003e\u003cp\u003eIntroduction xxl\u003c\/p\u003e \u003cp\u003e\u003cb\u003eCHAPTER 1: INTRODUCING WEBGL 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eThe Basics of WebGL 1\u003c\/p\u003e \u003cp\u003eSo Why Is WebGL So Great? 2\u003c\/p\u003e \u003cp\u003eDesigning a Graphics API 3\u003c\/p\u003e \u003cp\u003eAn Immediate-Mode API 3\u003c\/p\u003e \u003cp\u003eA Retained-Mode API 4\u003c\/p\u003e \u003cp\u003eAn Overview of Graphics Hardware 4\u003c\/p\u003e \u003cp\u003eGPU 5\u003c\/p\u003e \u003cp\u003eFrameBuffer 5\u003c\/p\u003e \u003cp\u003eTexture Memory 7\u003c\/p\u003e \u003cp\u003eVideo Controller 7\u003c\/p\u003e \u003cp\u003eUnderstanding the WebGL Graphics Pipeline 7\u003c\/p\u003e \u003cp\u003eVertex Shader 8\u003c\/p\u003e \u003cp\u003ePrimitive Assembly 12\u003c\/p\u003e \u003cp\u003eRasterization 14\u003c\/p\u003e \u003cp\u003eFragment Shader 14\u003c\/p\u003e \u003cp\u003ePer Fragment Operations 17\u003c\/p\u003e \u003cp\u003eComparing WebGL to Other Graphics Technologies 19\u003c\/p\u003e \u003cp\u003eOpenGL 19\u003c\/p\u003e \u003cp\u003eOpenGL ES 2.0 21\u003c\/p\u003e \u003cp\u003eDirect3D 23\u003c\/p\u003e \u003cp\u003eHTML5 Canvas 24\u003c\/p\u003e \u003cp\u003eScalable Vector Graphics 28\u003c\/p\u003e \u003cp\u003eVRML and X3D 30\u003c\/p\u003e \u003cp\u003eLinear Algebra for 3D Graphics 31\u003c\/p\u003e \u003cp\u003eCoordinate System 31\u003c\/p\u003e \u003cp\u003ePoints or Vertices 31\u003c\/p\u003e \u003cp\u003eVectors 32\u003c\/p\u003e \u003cp\u003eDot Product or Scalar Product 33\u003c\/p\u003e \u003cp\u003eCross Product 34\u003c\/p\u003e \u003cp\u003eHomogeneous Coordinates 35\u003c\/p\u003e \u003cp\u003eMatrices 35\u003c\/p\u003e \u003cp\u003eAffine Transformations 38\u003c\/p\u003e \u003cp\u003eSummary 44\u003c\/p\u003e \u003cp\u003e\u003cb\u003eCHAPTER 2: CREATING BASIC WEBGL EXAMPLES 45\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eDrawing a Triangle 46\u003c\/p\u003e \u003cp\u003eCreating the WebGL Context 49\u003c\/p\u003e \u003cp\u003eCreating the Vertex Shader and the Fragment Shader 51\u003c\/p\u003e \u003cp\u003eCompiling the Shaders 52\u003c\/p\u003e \u003cp\u003eCreating the Program Object and Linking the Shaders 53\u003c\/p\u003e \u003cp\u003eSetting Up the Buffers 54\u003c\/p\u003e \u003cp\u003eDrawing the Scene 56\u003c\/p\u003e \u003cp\u003eUnderstanding the WebGL Coding Style 57\u003c\/p\u003e \u003cp\u003eDebugging Your WebGL Application 58\u003c\/p\u003e \u003cp\u003eUsing Chrome Developer Tools 58\u003c\/p\u003e \u003cp\u003eUsing Firebug 65\u003c\/p\u003e \u003cp\u003eWebGL Error Handling and Error Codes 67\u003c\/p\u003e \u003cp\u003eWebGL Inspector 70\u003c\/p\u003e \u003cp\u003eTroubleshooting WebGL 76\u003c\/p\u003e \u003cp\u003eUsing the DOM API to Load Your Shaders 78\u003c\/p\u003e \u003cp\u003ePutting It Together in a Slightly More Advanced Example 80\u003c\/p\u003e \u003cp\u003eExperimenting with Code 83\u003c\/p\u003e \u003cp\u003eSummary 84\u003c\/p\u003e \u003cp\u003e\u003cb\u003eCHAPTER 3: DRAWING 85\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eWebGL Drawing Primitives and Drawing Methods 86\u003c\/p\u003e \u003cp\u003ePrimitives 86\u003c\/p\u003e \u003cp\u003eUnderstanding the Importance of Winding Order 91\u003c\/p\u003e \u003cp\u003eWebGL’s Drawing Methods 93\u003c\/p\u003e \u003cp\u003eTyped Arrays 99\u003c\/p\u003e \u003cp\u003eBuffer and View 100\u003c\/p\u003e \u003cp\u003eSupported View Types 101\u003c\/p\u003e \u003cp\u003eExploring Different Ways to Draw 102\u003c\/p\u003e \u003cp\u003egl.drawArrays() and gl.TRIANGLES 103\u003c\/p\u003e \u003cp\u003egl.drawArrays() and gl.TRIANGLE_STRIP 105\u003c\/p\u003e \u003cp\u003egl.drawElements() and gl.TRIANGLES 106\u003c\/p\u003e \u003cp\u003egl.drawElements() and gl.TRIANGLE_STRIP 108\u003c\/p\u003e \u003cp\u003eConclusions of the Comparison 111\u003c\/p\u003e \u003cp\u003ePre-Transform Vertex Cache and Post-Transform Vertex Cache 111\u003c\/p\u003e \u003cp\u003eInterleaving Your Vertex Data for Improved Performance 114\u003c\/p\u003e \u003cp\u003eUsing an Array of Structures 115\u003c\/p\u003e \u003cp\u003eUsing a Vertex Array or Constant Vertex Data 123\u003c\/p\u003e \u003cp\u003eA Last Example to Wind Things Up 124\u003c\/p\u003e \u003cp\u003eSome Things to Experiment With 134\u003c\/p\u003e \u003cp\u003eSummary 134\u003c\/p\u003e \u003cp\u003e\u003cb\u003eCHAPTER 4: COMPACT JAVASCRIPT LIBRARIES AND TRANSFORMATIONS 137\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eWorking with Matrices and Vectors in JavaScript 138\u003c\/p\u003e \u003cp\u003eSylvester 139\u003c\/p\u003e \u003cp\u003eWebGL-mjs 142\u003c\/p\u003e \u003cp\u003eglMatrix 146\u003c\/p\u003e \u003cp\u003eUsing Transformations 150\u003c\/p\u003e \u003cp\u003eHow Transformations Are Used 150\u003c\/p\u003e \u003cp\u003eUnderstanding the Complete Transformation Pipeline 157\u003c\/p\u003e \u003cp\u003eGetting Practical with Transformations 158\u003c\/p\u003e \u003cp\u003eSetting Up Buffers with Object Coordinates 159\u003c\/p\u003e \u003cp\u003eCreating Transformation Matrices with JavaScript and Uploading Them to the Shader 160\u003c\/p\u003e \u003cp\u003eUploading the Transformation Matrices to the Vertex Shader in the GPU 161\u003c\/p\u003e \u003cp\u003eCalling Your Drawing Methods 162\u003c\/p\u003e \u003cp\u003eUnderstanding the Importance of Transformation Order 162\u003c\/p\u003e \u003cp\u003eUsing a Grand, Fixed Coordinate System 163\u003c\/p\u003e \u003cp\u003eUsing a Moving, Local Coordinate System 165\u003c\/p\u003e \u003cp\u003ePushing and Popping Transformation Matrices 167\u003c\/p\u003e \u003cp\u003eA Complete Example: Drawing Several Transformed Objects 171\u003c\/p\u003e \u003cp\u003eCreating a Cube with WebGL 173\u003c\/p\u003e \u003cp\u003eOrganization of the View Transformation and the Model Transformation 175\u003c\/p\u003e \u003cp\u003eSummary 176\u003c\/p\u003e \u003cp\u003e\u003cb\u003eCHAPTER 5: TEXTURING 177\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUnderstanding Lost Context 178\u003c\/p\u003e \u003cp\u003eUnderstanding the Setup Required to Handle Lost Context 179\u003c\/p\u003e \u003cp\u003eFactors to Consider When Handling Lost Context 181\u003c\/p\u003e \u003cp\u003eIntroducing 2D Textures and Cubemap Textures 183\u003c\/p\u003e \u003cp\u003eLoading Your Textures 185\u003c\/p\u003e \u003cp\u003eCreating a WebGLTexture Object 185\u003c\/p\u003e \u003cp\u003eBinding Your Texture 185\u003c\/p\u003e \u003cp\u003eLoading the Image Data 186\u003c\/p\u003e \u003cp\u003eUploading the Texture to the GPU 187\u003c\/p\u003e \u003cp\u003eSpecifying Texture Parameters 189\u003c\/p\u003e \u003cp\u003eUnderstanding the Complete Procedure of Loading a Texture 190\u003c\/p\u003e \u003cp\u003eDefi ning Your Texture Coordinates 193\u003c\/p\u003e \u003cp\u003eUsing Your Textures in Shaders 195\u003c\/p\u003e \u003cp\u003eWorking with Texture Image Units 197\u003c\/p\u003e \u003cp\u003eWorking with Texture Filtering 198\u003c\/p\u003e \u003cp\u003eUnderstanding Magnifi cation 199\u003c\/p\u003e \u003cp\u003eUnderstanding Minifi cation 200\u003c\/p\u003e \u003cp\u003eUnderstanding Mipmapping 200\u003c\/p\u003e \u003cp\u003eUnderstanding Texture Coordinate Wrapping 203\u003c\/p\u003e \u003cp\u003eUsing the gl.REPEAT Wrap Mode 203\u003c\/p\u003e \u003cp\u003eUsing the gl.MIRRORED_REPEAT Wrap Mode 205\u003c\/p\u003e \u003cp\u003eUsing the gl.CLAMP_TO_EDGE Wrap Mode 206\u003c\/p\u003e \u003cp\u003eA Complete Texture Example 207\u003c\/p\u003e \u003cp\u003eUsing Images for Your Textures 210\u003c\/p\u003e \u003cp\u003eDownloading Free Textures 210\u003c\/p\u003e \u003cp\u003eBasing Textures on Your Own Photos 211\u003c\/p\u003e \u003cp\u003eDrawing Images 211\u003c\/p\u003e \u003cp\u003eBuying Textures 211\u003c\/p\u003e \u003cp\u003eUnderstanding Same-Origin Policy and Cross-Origin Resource Sharing 212\u003c\/p\u003e \u003cp\u003eUnderstanding Same-Origin Policy for Images in General 212\u003c\/p\u003e \u003cp\u003eUnderstanding Same-Origin Policy for Textures 214\u003c\/p\u003e \u003cp\u003eUnderstanding Cross-Origin Resource Sharing 215\u003c\/p\u003e \u003cp\u003eSummary 217\u003c\/p\u003e \u003cp\u003e\u003cb\u003eCHAPTER 6: ANIMATIONS AND USER INPUT 219\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eAnimating the Scene 219\u003c\/p\u003e \u003cp\u003eUsing setInterval() and setTimeout() 221\u003c\/p\u003e \u003cp\u003eUsing requestAnimationFrame() 222\u003c\/p\u003e \u003cp\u003eCompensating Movement for Different Frame Rates 225\u003c\/p\u003e \u003cp\u003eCreating an FPS Counter to Measure the Smoothness of Your Animation 226\u003c\/p\u003e \u003cp\u003eUnderstanding the Disadvantages of Using FPS as a Measurement 228\u003c\/p\u003e \u003cp\u003eEvent Handling for User Interaction 230\u003c\/p\u003e \u003cp\u003eBasic Event Handling with DOM Level 0 231\u003c\/p\u003e \u003cp\u003eAdvanced Event Handling with DOM Level 2 232\u003c\/p\u003e \u003cp\u003eKey Input 234\u003c\/p\u003e \u003cp\u003eMouse Input 239\u003c\/p\u003e \u003cp\u003eApplying Your New Knowledge 240\u003c\/p\u003e \u003cp\u003eSummary 246\u003c\/p\u003e \u003cp\u003e\u003cb\u003eCHAPTER 7: LIGHTING 249\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUnderstanding Light 249\u003c\/p\u003e \u003cp\u003eWorking with a Local Lighting Model 250\u003c\/p\u003e \u003cp\u003eUnderstanding the Phong Reflection Model 251\u003c\/p\u003e \u003cp\u003eAmbient Reflection 252\u003c\/p\u003e \u003cp\u003eDiff use Reflection 253\u003c\/p\u003e \u003cp\u003eSpecular Reflection 255\u003c\/p\u003e \u003cp\u003eUnderstanding the Complete Equation and Shaders for the Phong Reflection Model 259\u003c\/p\u003e \u003cp\u003eUsing Lighting with Texturing 263\u003c\/p\u003e \u003cp\u003eUnderstanding the JavaScript Code Needed for WebGL Lighting 267\u003c\/p\u003e \u003cp\u003eSetting Up Buffers with Vertex Normals 268\u003c\/p\u003e \u003cp\u003eCalculating and Uploading the Normal Matrix to the Shader 270\u003c\/p\u003e \u003cp\u003eUploading the Light Information to the Shader 270\u003c\/p\u003e \u003cp\u003eUsing Different Interpolation Techniques for Shading 271\u003c\/p\u003e \u003cp\u003eFlat Shading 272\u003c\/p\u003e \u003cp\u003eGouraud Shading 273\u003c\/p\u003e \u003cp\u003ePhong Shading 274\u003c\/p\u003e \u003cp\u003eUnderstanding the Vectors That Must Be Normalized 278\u003c\/p\u003e \u003cp\u003eNormalization in the Vertex Shader 278\u003c\/p\u003e \u003cp\u003eNormalization in the Fragment Shader 279\u003c\/p\u003e \u003cp\u003eUsing Different Types of Lights 279\u003c\/p\u003e \u003cp\u003eDirectional Lights 280\u003c\/p\u003e \u003cp\u003ePoint Lights 280\u003c\/p\u003e \u003cp\u003eSpot Lights 281\u003c\/p\u003e \u003cp\u003eUnderstanding the Attenuation of Light 284\u003c\/p\u003e \u003cp\u003eUnderstanding Light Mapping 288\u003c\/p\u003e \u003cp\u003eSummary 289\u003c\/p\u003e \u003cp\u003e\u003cb\u003eCHAPTER 8: WEBGL PERFORMANCE OPTIMIZATIONS 291\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eWebGL under the Hood 292\u003c\/p\u003e \u003cp\u003eHardware that Powers WebGL 292\u003c\/p\u003e \u003cp\u003eKey Software Components 294\u003c\/p\u003e \u003cp\u003eWebGL Performance Optimizations 296\u003c\/p\u003e \u003cp\u003eAvoiding a Typical Beginner’s Mistake 296\u003c\/p\u003e \u003cp\u003eLocating the Bottleneck 298\u003c\/p\u003e \u003cp\u003eGeneral Performance Advice 302\u003c\/p\u003e \u003cp\u003ePerformance Advice for CPU-Limited WebGL 305\u003c\/p\u003e \u003cp\u003ePerformance Advice for Vertex-Limited WebGL 307\u003c\/p\u003e \u003cp\u003ePerformance Advice for Pixel-Limited WebGL 308\u003c\/p\u003e \u003cp\u003eA Closer Look at Blending 310\u003c\/p\u003e \u003cp\u003eIntroducing Blending 310\u003c\/p\u003e \u003cp\u003eSetting the Blending Functions 311\u003c\/p\u003e \u003cp\u003eUnderstanding Drawing Order and the Depth Buffer 314\u003c\/p\u003e \u003cp\u003eDrawing a Scene with Both Opaque and Semi-Transparent Objects 315\u003c\/p\u003e \u003cp\u003eChanging the Default Operator for the Blend Equation 315\u003c\/p\u003e \u003cp\u003eUsing Premultiplied Alpha 316\u003c\/p\u003e \u003cp\u003eTaking WebGL Further 317\u003c\/p\u003e \u003cp\u003eUsing WebGL Frameworks 317\u003c\/p\u003e \u003cp\u003ePublishing to the Google Chrome Web Store 318\u003c\/p\u003e \u003cp\u003eUsing Additional Resources 318\u003c\/p\u003e \u003cp\u003eSummary 319\u003c\/p\u003e \u003cp\u003eIndex 321\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003eSubject Areas: Business applications [\u003ca title=\"See our other books on Business applications\" href=\"https:\/\/freshlyprintedbooks.co.uk\/search?q=%22Business%20applications%20%5BUF%5D%22\"\u003eUF\u003c\/a\u003e]\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\r\n\u003c\/font\u003e","brand":"Wrox","offers":[{"title":"Brand New","offer_id":52509179871512,"sku":"9781119968863","price":21.59,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0730\/2037\/5320\/files\/9781119968863.jpg?v=1786496300","url":"https:\/\/freshlyprintedbooks.co.uk\/products\/professional-webgl-programming-developing-3d-graphics-for-the-web-paperback-softback-9781119968863","provider":"Freshly Printed Books","version":"1.0","type":"link"}