Home > Computing and Information Technology > Graphical and digital media applications > Web graphics and design > WebGL Programming Guide: Interactive 3D Graphics Programming with WebGL(OpenGL)
11%
WebGL Programming Guide: Interactive 3D Graphics Programming with WebGL(OpenGL)

WebGL Programming Guide: Interactive 3D Graphics Programming with WebGL(OpenGL)

          
5
4
3
2
1

Out of Stock


Premium quality
Premium quality
Bookswagon upholds the quality by delivering untarnished books. Quality, services and satisfaction are everything for us!
Easy Return
Easy return
Not satisfied with this product! Keep it in original condition and packaging to avail easy return policy.
Certified product
Certified product
First impression is the last impression! Address the book’s certification page, ISBN, publisher’s name, copyright page and print quality.
Secure Checkout
Secure checkout
Security at its finest! Login, browse, purchase and pay, every step is safe and secured.
Money back guarantee
Money-back guarantee:
It’s all about customers! For any kind of bad experience with the product, get your actual amount back after returning the product.
On time delivery
On-time delivery
At your doorstep on time! Get this book delivered without any delay.
Notify me when this book is in stock
Add to Wishlist

About the Book

Using WebGL®, you can create sophisticated interactive 3D graphics inside web browsers, without plug-ins. WebGL makes it possible to build a new generation of 3D web games, user interfaces, and information visualization solutions that will run on any standard web browser, and on PCs, smartphones, tablets, game consoles, or other devices. WebGL Programming Guide will help you get started quickly with interactive WebGL 3D programming, even if you have no prior knowledge of HTML5, JavaScript, 3D graphics, mathematics, or OpenGL.   You’ll learn step-by-step, through realistic examples, building your skills as you move from simple to complex solutions for building visually appealing web pages and 3D applications with WebGL. Media, 3D graphics, and WebGL pioneers Dr. Kouichi Matsuda and Dr. Rodger Lea offer easy-to-understand tutorials on key aspects of WebGL, plus 100 downloadable sample programs, each demonstrating a specific WebGL topic.   You’ll move from basic techniques such as rendering, animating, and texturing triangles, all the way to advanced techniques such as fogging, shadowing, shader switching, and displaying 3D models generated by Blender or other authoring tools. This book won’t just teach you WebGL best practices, it will give you a library of code to jumpstart your own projects.   Coverage includes: • WebGL’s origin, core concepts, features, advantages, and integration with other web standards • How and basic WebGL functions work together to deliver 3D graphics • Shader development with OpenGL ES Shading Language (GLSL ES) • 3D scene drawing: representing user views, controlling space volume, clipping, object creation, and perspective • Achieving greater realism through lighting and hierarchical objects • Advanced techniques: object manipulation, heads-up displays, alpha blending, shader switching, and more • Valuable reference appendixes covering key issues ranging from coordinate systems to matrices and shader loading to web browser settings   This is the newest text in the OpenGL Technical Library, Addison-Wesley’s definitive collection of programming guides an reference manuals for OpenGL and its related technologies. The Library enables programmers to gain a practical understanding of OpenGL and the other Khronos application-programming libraries including OpenGL ES and OpenCL. All of the technologies in the OpenGL Technical Library evolve under the auspices of the Khronos Group, the industry consortium guiding the evolution of modern, open-standards media APIs.

Table of Contents:
Preface     xvii   1. Overview of WebGL     1 Advantages of WebGL     3    You Can Start Developing 3D Graphics Applications Using Only a Text Editor     3    Publishing Your 3D Graphics Applications Is Easy     4    You Can Leverage the Full Functionality of the Browser     5    Learning and Using WebGL Is Easy     5 Origins of WebGL     5 Structure of WebGL Applications     6 Summary     7   2. Your First Step with WebGL     9 What Is a Canvas?     9    Using the Tag     11    DrawRectangle.js     13 The World’s Shortest WebGL Program: Clear Drawing Area     16    The HTML File (HelloCanvas.html)      17    JavaScript Program (HelloCanvas.js)      18    Experimenting with the Sample Program      23 Draw a Point (Version 1)     23    HelloPoint1.html     25    HelloPoint1.js      25    What Is a Shader?      27    The Structure of a WebGL Program that Uses Shaders      28    Initializing Shaders      30    Vertex Shader      33    Fragment Shader      35    The Draw Operation      36    The WebGL Coordinate System     38    Experimenting with the Sample Program      40 Draw a Point (Version 2)      41    Using Attribute Variables      41    Sample Program (HelloPoint2.js)      42    Getting the Storage Location of an Attribute Variable      44    Assigning a Value to an Attribute Variable      45    Family Methods of gl.vertexAttrib3f()      47    Experimenting with the Sample Program      49 Draw a Point with a Mouse Click      50    Sample Program (ClickedPoints.js)      50    Register Event Handlers      52    Handling Mouse Click Events      53    Experimenting with the Sample Program      57 Change the Point Color      58    Sample Program (ColoredPoints.js)      59    Uniform Variables      61    Retrieving the Storage Location of a Uniform Variable      62    Assigning a Value to a Uniform Variable      63    Family Methods of gl.uniform4f()      65 Summary      66   3. Drawing and Transforming Triangles     67 Drawing Multiple Points     68    Sample Program (MultiPoint.js)      70    Using Buffer Objects      72    Create a Buffer Object (gl.createBuffer())      74    Bind a Buffer Object to a Target (gl.bindBuffer())      75    Write Data into a Buffer Object (gl.bufferData())      76    Typed Arrays      78    Assign the Buffer Object to an Attribute Variable (gl.vertexAttribPointer())     79    Enable the Assignment to an Attribute Variable (gl.enableVertexAttribArray())      81    The Second and Third Parameters of gl.drawArrays()      82    Experimenting with the Sample Program      84 Hello Triangle      85    Sample Program (HelloTriangle.js)      85    Basic Shapes      87    Experimenting with the Sample Program      89    Hello Rectangle (HelloQuad)      89    Experimenting with the Sample Program      91 Moving, Rotating, and Scaling      91    Translation      92    Sample Program (TranslatedTriangle.js)      93    Rotation      96    Sample Program (RotatedTriangle.js)      99    Transformation Matrix: Rotation      102    Transformation Matrix: Translation      105    Rotation Matrix, Again      106    Sample Program (RotatedTriangle_Matrix.js)      107    Reusing the Same Approach for Translation      111    Transformation Matrix: Scaling      111 Summary      113   4. More Transformations and Basic Animation     115 Translate and Then Rotate      115    Transformation Matrix Library: cuon-matrix.js      116    Sample Program (RotatedTriangle_Matrix4.js)      117    Combining Multiple Transformation      119    Sample Program (RotatedTranslatedTriangle.js)      121    Experimenting with the Sample Program      123 Animation      124    The Basics of Animation      125    Sample Program (RotatingTriangle.js)      126    Repeatedly Call the Drawing Function (tick())     129    Draw a Triangle with the Specified Rotation Angle (draw())      130    Request to Be Called Again (requestAnimationFrame())      131    Update the Rotation Angle (animate())      133    Experimenting with the Sample Program      135 Summary      136   5. Using Colors and Texture Images     137 Passing Other Types of Information to Vertex Shaders      137    Sample Program (MultiAttributeSize.js)      139    Create Multiple Buffer Objects      140    The gl.vertexAttribPointer() Stride and Offset Parameters      141    Sample Program (MultiAttributeSize_Interleaved.js)      142    Modifying the Color (Varying Variable)     146    Sample Program (MultiAttributeColor.js)      147    Experimenting with the Sample Program      150 Color Triangle (ColoredTriangle.js)      151    Geometric Shape Assembly and Rasterization      151    Fragment Shader Invocations      155    Experimenting with the Sample Program      156    Functionality of Varying Variables and the Interpolation Process      157 Pasting an Image onto a Rectangle      160    Texture Coordinates      162    Pasting Texture Images onto the Geometric Shape      162    Sample Program (TexturedQuad.js)      163    Using Texture Coordinates (initVertexBuffers())      166    Setting Up and Loading Images (initTextures())      166    Make the Texture Ready to Use in the WebGL System (loadTexture())      170    Flip an Image’s Y-Axis      170    Making a Texture Unit Active (gl.activeTexture())      171    Binding a Texture Object to a Target (gl.bindTexture())      173    Set the Texture Parameters of a Texture Object (gl.texParameteri())      174    Assigning a Texture Image to a Texture Object (gl.texImage2D())      177    Pass the Texture Unit to the Fragment Shader (gl.uniform1i())      179    Passing Texture Coordinates from the Vertex Shader to the Fragment Shader      180    Retrieve the Texel Color in a Fragment Shader (texture2D())      181    Experimenting with the Sample Program      182 Pasting Multiple Textures to a Shape      183    Sample Program (MultiTexture.js)      184 Summary      189   6. The OpenGL ES Shading Language (GLSL ES)     191 Recap of Basic Shader Programs      191 Overview of GLSL ES      192 Hello Shader!      193    Basics      193    Order of Execution      193    Comments      193 Data (Numerical and Boolean Values)      194 Variables      194 GLSL ES Is a Type Sensitive Language      195 Basic Types      195    Assignment and Type Conversion      196    Operations      197 Vector Types and Matrix Types      198    Assignments and Constructors      199    Access to Components      201    Operations      204 Structures      207    Assignments and Constructors      207    Access to Members      207    Operations      208 Arrays      208 Samplers      209 Precedence of Operators      210 Conditional Control Flow and Iteration      211    if Statement and if-else Statement      211    for Statement      211    continue, break, discard Statements      212 Functions      213    Prototype Declarations      214    Parameter Qualifiers      214 Built-In Functions      215 Global Variables and Local Variables      216 Storage Qualifiers      217    const Variables      217    Attribute Variables     218    Uniform Variables      218    Varying Variables      219 Precision Qualifiers      219 Preprocessor Directives      221 Summary      223   7. Toward the 3D World     225 What’s Good for Triangles Is Good for Cubes      225 Specifying the Viewing Direction       226    Eye Point, Look-At Point, and Up Direction      227    Sample Program (LookAtTriangles.js)      229    Comparing LookAtTriangles.js with RotatedTriangle_Matrix4.js      232    Looking at Rotated Triangles from a Specified Position      234    Sample Program (LookAtRotatedTriangles.js)      235    Experimenting with the Sample Program      236    Changing the Eye Point Using the Keyboard      238    Sample Program (LookAtTrianglesWithKeys.js)      238    Missing Parts      241 Specifying the Visible Range (Box Type)      241    Specify the Viewing Volume      242    Defining a Box-Shaped Viewing Volume      243    Sample Program (OrthoView.html)      245    Sample Program (OrthoView.js)      246    Modifying an HTML Element Using JavaScript      247    The Processing Flow of the Vertex Shader      248    Changing Near or Far      250    Restoring the Clipped Parts of the Triangles (LookAtTrianglesWithKeys_ViewVolume.js)     251    Experimenting with the Sample Program      253 Specifying the Visible Range Using a Quadrangular Pyramid      254    Setting the Quadrangular Pyramid Viewing Volume      256    Sample Program (PerspectiveView.js)      258    The Role of the Projection Matrix      260    Using All the Matrices (Model Matrix, View Matrix, and Projection Matrix) ......262    Sample Program (PerspectiveView_mvp.js)      263    Experimenting with the Sample Program      266 Correctly Handling Foreground and Background Objects      267    Hidden Surface Removal      270    Sample Program (DepthBuffer.js)      272    Z Fighting      273 Hello Cube      275    Drawing the Object with Indices and Vertices Coordinates      277    Sample Program (HelloCube.js)      278    Writing Vertex Coordinates, Colors, and Indices to the Buffer Object      281    Adding Color to Each Face of a Cube      284    Sample Program (ColoredCube.js)      285    Experimenting with the Sample Program      287 Summary      289   8. Lighting Objects     291 Lighting 3D Objects      291    Types of Light Source      293    Types of Reflected Light      294    Shading Due to Directional Light and Its Diffuse Reflection      296    Calculating Diffuse Reflection Using the Light Direction and the Orientation of a Surface     297    The Orientation of a Surface: What Is the Normal?      299    Sample Program (LightedCube.js)      302    Add Shading Due to Ambient Light      307    Sample Program (LightedCube_ambient.js)      308 Lighting the Translated-Rotated Object      310    The Magic Matrix: Inverse Transpose Matrix      311    Sample Program (LightedTranslatedRotatedCube.js)      312 Using a Point Light Object      314    Sample Program (PointLightedCube.js)      315    More Realistic Shading: Calculating the Color per Fragment      319    Sample Program (PointLightedCube_perFragment.js)      319 Summary      321   9. Hierarchical Objects     323 Drawing and Manipulating Objects Composed of Other Objects      324    Hierarchical Structure     325    Single Joint Model      326    Sample Program (JointModel.js)      328    Draw the Hierarchical Structure (draw())      332    A Multijoint Model      334    Sample Program (MultiJointModel.js)      335    Draw Segments (drawBox())      339    Draw Segments (drawSegment())      340 Shader and Program Objects: The Role of initShaders()      344    Create Shader Objects (gl.createShader())      345    Store the Shader Source Code in the Shader Objects (g.shaderSource())     346    Compile Shader Objects (gl.compileShader())      347    Create a Program Object (gl.createProgram())      349    Attach the Shader Objects to the Program Object (gl.attachShader())      350    Link the Program Object (gl.linkProgram())      351    Tell the WebGL System Which Program Object to Use (gl.useProgram())      353    The Program Flow of initShaders()      353 Summary      356   10. Advanced Techniques     357 Rotate an Object with the Mouse      357    How to Implement Object Rotation      358    Sample Program (RotateObject.js)      358 Select an Object      360    How to Implement Object Selection      361    Sample Program (PickObject.js)      362    Select the Face of the Object      365    Sample Program (PickFace.js)      366 HUD (Head Up Display)      368    How to Implement a HUD     369    Sample Program (HUD.html)      369    Sample Program (HUD.js)      370    Display a 3D Object on a Web Page (3DoverWeb)      372 Fog (Atmospheric Effect)      372    How to Implement Fog      373    Sample Program (Fog.js)      374    Use the w Value (Fog_w.js)      376 Make a Rounded Point      377    How to Implement a Rounded Point      377    Sample Program (RoundedPoints.js)      378 Alpha Blending      380    How to Implement Alpha Blending      380    Sample Program (LookAtBlendedTriangles.js)      381    Blending Function      382    Alpha Blend 3D Objects (BlendedCube.js)      384    How to Draw When Alpha Values Coexist      385 Switching Shaders      386    How to Implement Switching Shaders      387    Sample Program (ProgramObject.js)      387 Use What You’ve Drawn as a Texture Image      392    Framebuffer Object and Renderbuffer Object      392    How to Implement Using a Drawn Object as a Texture      394    Sample Program (FramebufferObjectj.js)      395    Create Frame Buffer Object (gl.createFramebuffer())      397    Create Texture Object and Set Its Size and Parameters      397    Create Renderbuffer Object (gl.createRenderbuffer())      398    Bind Renderbuffer Object to Target and Set Size (gl.bindRenderbuffer(),  gl.renderbufferStorage())     399    Set Texture Object to Framebuffer Object (gl.bindFramebuffer(), gl.framebufferTexture2D())     400    Set Renderbuffer Object to Framebuffer Object (gl.framebufferRenderbuffer())     401    Check Configuration of Framebuffer Object (gl.checkFramebufferStatus())      402    Draw Using the Framebuffer Object      403 Display Shadows      405    How to Implement Shadows      405    Sample Program (Shadow.js)      406    Increasing Precision      412    Sample Program (Shadow_highp.js)      413 Load and Display 3D Models      414    The OBJ File Format      417    The MTL File Format      418    Sample Program (OBJViewer.js)      419    User-Defined Object      422    Sample Program (Parser Code in OBJViewer.js)      423 Handling Lost Context      430    How to Implement Handling Lost Context      431    Sample Program (RotatingTriangle_contextLost.js)      432 Summary      434   A. No Need to Swap Buffers in WebGL     437   B. Built-in Functions of GLSL ES 1.0     441 Angle and Trigonometry Functions      441 Exponential Functions      443 Common Functions      444 Geometric Functions      447 Matrix Functions      448 Vector Functions      449 Texture Lookup Functions      451   C. Projection Matrices     453 Orthogonal Projection Matrix      453 Perspective Projection Matrix      453   D. WebGL/OpenGL: Left or Right Handed?     455 Sample Program CoordinateSystem.js      456 Hidden Surface Removal and the Clip Coordinate System      459 The Clip Coordinate System and the Viewing Volume     460 What Is Correct?      462 Summary      464   E. The Inverse Transpose Matrix     465   F. Load Shader Programs from Files     471   G. World Coordinate System Versus Local Coordinate System     473 The Local Coordinate System      474 The World Coordinate System      475 Transformations and the Coordinate Systems     477   H. Web Browser Settings for WebGL     479 Glossary     481 References      485 Index     487


Best Sellers


Product Details
  • ISBN-13: 9780321902924
  • Publisher: Pearson Education (US)
  • Publisher Imprint: Addison-Wesley Educational Publishers Inc
  • Depth: 32
  • Height: 233 mm
  • No of Pages: 552
  • Series Title: OpenGL
  • Sub Title: Interactive 3D Graphics Programming with WebGL
  • Width: 179 mm
  • ISBN-10: 0321902920
  • Publisher Date: 25 Jul 2013
  • Binding: Paperback
  • Edition: PAP/PSC
  • Language: English
  • Returnable: N
  • Spine Width: 30 mm
  • Weight: 856 gr


Similar Products

How would you rate your experience shopping for books on Bookswagon?

Add Photo
Add Photo

Customer Reviews

REVIEWS           
Click Here To Be The First to Review this Product
WebGL Programming Guide: Interactive 3D Graphics Programming with WebGL(OpenGL)
Pearson Education (US) -
WebGL Programming Guide: Interactive 3D Graphics Programming with WebGL(OpenGL)
Writing guidlines
We want to publish your review, so please:
  • keep your review on the product. Review's that defame author's character will be rejected.
  • Keep your review focused on the product.
  • Avoid writing about customer service. contact us instead if you have issue requiring immediate attention.
  • Refrain from mentioning competitors or the specific price you paid for the product.
  • Do not include any personally identifiable information, such as full names.

WebGL Programming Guide: Interactive 3D Graphics Programming with WebGL(OpenGL)

Required fields are marked with *

Review Title*
Review
    Add Photo Add up to 6 photos
    Would you recommend this product to a friend?
    Tag this Book
    Read more
    Does your review contain spoilers?
    What type of reader best describes you?
    I agree to the terms & conditions
    You may receive emails regarding this submission. Any emails will include the ability to opt-out of future communications.

    CUSTOMER RATINGS AND REVIEWS AND QUESTIONS AND ANSWERS TERMS OF USE

    These Terms of Use govern your conduct associated with the Customer Ratings and Reviews and/or Questions and Answers service offered by Bookswagon (the "CRR Service").


    By submitting any content to Bookswagon, you guarantee that:
    • You are the sole author and owner of the intellectual property rights in the content;
    • All "moral rights" that you may have in such content have been voluntarily waived by you;
    • All content that you post is accurate;
    • You are at least 13 years old;
    • Use of the content you supply does not violate these Terms of Use and will not cause injury to any person or entity.
    You further agree that you may not submit any content:
    • That is known by you to be false, inaccurate or misleading;
    • That infringes any third party's copyright, patent, trademark, trade secret or other proprietary rights or rights of publicity or privacy;
    • That violates any law, statute, ordinance or regulation (including, but not limited to, those governing, consumer protection, unfair competition, anti-discrimination or false advertising);
    • That is, or may reasonably be considered to be, defamatory, libelous, hateful, racially or religiously biased or offensive, unlawfully threatening or unlawfully harassing to any individual, partnership or corporation;
    • For which you were compensated or granted any consideration by any unapproved third party;
    • That includes any information that references other websites, addresses, email addresses, contact information or phone numbers;
    • That contains any computer viruses, worms or other potentially damaging computer programs or files.
    You agree to indemnify and hold Bookswagon (and its officers, directors, agents, subsidiaries, joint ventures, employees and third-party service providers, including but not limited to Bazaarvoice, Inc.), harmless from all claims, demands, and damages (actual and consequential) of every kind and nature, known and unknown including reasonable attorneys' fees, arising out of a breach of your representations and warranties set forth above, or your violation of any law or the rights of a third party.


    For any content that you submit, you grant Bookswagon a perpetual, irrevocable, royalty-free, transferable right and license to use, copy, modify, delete in its entirety, adapt, publish, translate, create derivative works from and/or sell, transfer, and/or distribute such content and/or incorporate such content into any form, medium or technology throughout the world without compensation to you. Additionally,  Bookswagon may transfer or share any personal information that you submit with its third-party service providers, including but not limited to Bazaarvoice, Inc. in accordance with  Privacy Policy


    All content that you submit may be used at Bookswagon's sole discretion. Bookswagon reserves the right to change, condense, withhold publication, remove or delete any content on Bookswagon's website that Bookswagon deems, in its sole discretion, to violate the content guidelines or any other provision of these Terms of Use.  Bookswagon does not guarantee that you will have any recourse through Bookswagon to edit or delete any content you have submitted. Ratings and written comments are generally posted within two to four business days. However, Bookswagon reserves the right to remove or to refuse to post any submission to the extent authorized by law. You acknowledge that you, not Bookswagon, are responsible for the contents of your submission. None of the content that you submit shall be subject to any obligation of confidence on the part of Bookswagon, its agents, subsidiaries, affiliates, partners or third party service providers (including but not limited to Bazaarvoice, Inc.)and their respective directors, officers and employees.

    Accept

    New Arrivals


    Inspired by your browsing history


    Your review has been submitted!

    You've already reviewed this product!
    ASK VIDYA