Slang: Language Mechanisms for Extensible Real-Time Shading Systems

Total Page:16

File Type:pdf, Size:1020Kb

Slang: Language Mechanisms for Extensible Real-Time Shading Systems Slang: language mechanisms for extensible real-time shading systems YONG HE, Carnegie Mellon University KAYVON FATAHALIAN, Stanford University TIM FOLEY, NVIDIA Designers of real-time rendering engines must balance the conicting goals and GPU eciently, and minimizing CPU overhead using the new of maintaining clear, extensible shading systems and achieving high render- parameter binding model oered by the modern Direct3D 12 and ing performance. In response, engine architects have established eective de- Vulkan graphics APIs. sign patterns for authoring shading systems, and developed engine-specic To help navigate the tension between performance and maintain- code synthesis tools, ranging from preprocessor hacking to domain-specic able/extensible code, engine architects have established eective shading languages, to productively implement these patterns. The problem is design patterns for authoring shading systems, and developed code that proprietary tools add signicant complexity to modern engines, lack ad- vanced language features, and create additional challenges for learning and synthesis tools, ranging from preprocessor hacking, to metapro- adoption. We argue that the advantages of engine-specic code generation gramming, to engine-proprietary domain-specic languages (DSLs) tools can be achieved using the underlying GPU shading language directly, [Tatarchuk and Tchou 2017], for implementing these patterns. For provided the shading language is extended with a small number of best- example, the idea of shader components [He et al. 2017] was recently practice principles from modern, well-established programming languages. presented as a pattern for achieving both high rendering perfor- We identify that adding generics with interface constraints, associated types, mance and maintainable code structure when specializing shader and interface/structure extensions to existing C-like GPU shading languages code to coarse-grained features such as a surface material pattern or enables real-time renderer developers to build shading systems that are a tessellation eect. The idea of shader components is to drive both extensible, maintainable, and execute eciently on modern GPUs without code specialization and CPU-GPU communication using the same the need for additional domain-specic tools. We embody these ideas in an granularity of decomposition, but the implementation of this idea extension of HLSL called Slang, and provide a reference design for a large, extensible shader library implemented using Slang’s features. We rearchitect was coupled to a custom DSL, which presents a barrier to adoption. an open source renderer to use this library and Slang’s compiler services, Beyond the coarse-grained specialization addressed by shader and demonstrate the resulting shading system is substantially simpler, easier components, a modern shading system must be extensible to in- to extend with new features, and achieves higher rendering performance clude new features and to assemble collections of shading eects than the original HLSL-based implementation. into statically optimized GPU shaders. (Examples include: com- posing dierent types of lights, decoupling material patterns from Additional Key Words and Phrases: shading languages, real-time rendering reectance models, adopting closed-form solutions and approxima- ACM Reference format: tions for specic surface-light interactions.) AAA graphics engines Yong He, Kayvon Fatahalian, and Tim Foley. 2018. Slang: language mech- implement proprietary code generation tools to aid with these tasks. anisms for extensible real-time shading systems. ACM Trans. Graph. 37, 4, Unfortunately, metaprogramming tools add complexity on top of Article 1 (August 2018), 13 pages. the underlying shading language, and thus create additional chal- https://doi.org/10.1145/3197517.3201380 lenges for learning and adoption. Engine-specic DSLs often lack advanced language features, and create the problem that shader 1 INTRODUCTION code and learned skills do not transfer between engines. Designers of real-time rendering engines must balance the conict- In this paper we argue that the advantages of specialized DSLs ing goals of facilitating developer productivity and achieving high (both the Spire language used to implement shader components [He rendering performance. Code maintainability and extensibility are et al. 2017] and other proprietary, engine-specic tools) can be key aspects of productivity, particularly since popular commercial achieved using the underlying GPU shading language directly, pro- engines such as Unreal [Epic Games 2015] or Unity [2017] feature vided the shading language is extended with a small number of best- large shader libraries used across many titles, each requiring dif- practice principles from modern, well-established programming ferent shading features. At the same time, to achieve high GPU languages. Our key contribution is to identify the necessary set of rendering performance, an engine must perform key optimizations general-purpose modern programming language features that, when such as statically specializing shader code to the rendering features added to existing C-like GPU shading languages (GLSL/HLSL/Metal), in use, communicating shader parameter data between the CPU can be used by real-time rendering engines to build shading systems that are extensible, maintainable, and execute eciently on modern Permission to make digital or hard copies of all or part of this work for personal or GPUs without the need for additional layered DSLs. Specically, we: classroom use is granted without fee provided that copies are not made or distributed Propose the design of the Slang shading language, a variant of for prot or commercial advantage and that copies bear this notice and the full citation • on the rst page. Copyrights for components of this work owned by others than the HLSL extended with the following general-purpose language author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specic permission features: generics with interface bounds, associated types, and/or a fee. Request permissions from [email protected]. and interface/structure extensions. The choice of features is © 2018 Copyright held by the owner/author(s). Publication rights licensed to Association intended as a minimal set of extensions to meet our perfor- for Computing Machinery. 0730-0301/2018/8-ART1 $15.00 mance and productivity goals, while providing an incremental https://doi.org/10.1145/3197517.3201380 path of adoption for current HLSL developers. ACM Transactions on Graphics, Vol. 37, No. 4, Article 1. Publication date: August 2018. 1:2 • He, Foley, and Fatahalian Engine Framework User Application Shader Library (HLSL) Host Code (C++) Shader Code (HLSL) Host Code (C++) struct Camera { Camera.hlsl class Camera { Camera.h struct MyMaterial { MyMaterial.hlsl class MyMaterial: Material MyMaterial.h float3 worldPos; void setWorldPos(float3 p); Texture2D albedoTex; { float4x4 viewProj; ... SamplerState sampler; Texture* albedoTex; ... void bindParams(Program p); }; Sampler* sampler; }; }; typedef Lambertian MyMatPattern; String getTypeName() struct Lambertian { Lambertian.hlsl class Material { Material.h { float3 albedo; virtual String getTypeName(); MyMatPattern evalPattern( return "MyMaterial"; }; virtual void bindParams(Program p); MyMaterial mat, } float3 evalBxDF( }; SurfaceGeometry geom) void bindParams(Program p) Lambertian bxdf, { { float3 wi, float3 wo) class Lambertian : Material Lambertian.h MyMatPattern pat; p->setParam("albedoTex", { return albedo / PI; } { float3 albedo; pat.albedo = mat.albedoTex albedoTex); String getTypeName() {"Lambertian"} .Sample(mat.sampler, geom.uv); ... ... DisneyBRDF.hlsl void bindParams(p) { return pat; } p->setParam("albedo", albedo); } } }; ... SkinBRDF.hlsl }; QuadLight.hlsl QuadLight.h struct PointLight PointLight.hlsl class Light { Light.h struct QuadLight class QuadLight : Light { virtual String getTypeName(); { float3 vertices[4]; }; { float3 pos; virtual void bindParams(Program p); float3 evalLight( float3 vertices[4]; float3 intensity; }; QuadLight light, String getTypename() }; class LightEnv { MaterialPattern bxdf, { float3 evalLight( Array<Light*> lights; float3 wo) return "QuadLight"; PointLight light, }; { // integrateQuadLight() provided } ...) // by BxDF implementation void bindParams(Program p) { ... } class PointLight : Light { PointLight.h return integarteQuadLight( { ... } float3 pos; float3 intensity; bxdf, light, wo); }; } ... DirectionalLight.hlsl String getTypeName() { return "PointLight"; } int main(...) { main.cpp ... CascadedShadowMap.hlsl }; Camera* cam = new Camera(); Material* mat = new MyMaterial(); ForwardPass.hlsl Program.h Camera gCamera; class Program { LightEnv* lights = new LightEnv(); Material gMaterial; String getFileName(); lights->add(new QuadLight(...)); LightEnv gLights; }; ... float3 forwardPass( ForwardPass* fwd = new ForwardPass(); class ForwardPass ForwardPass.h SurfaceGeometry geom) { context->bindProgram(fwd); : Program float3 V = gCamera.worldPos – geom.P; camera->bindParams(fwd, "gCamera"); { MaterialPattern pat = evalPattern( mat->bindParams(fwd, “gMaterial”); String getFileName() { gMaterial, geometry); lights->bindParams(fwd, “gLights”); return "ForwardPass.hlsl" } return illuminate(gLights, pat, V); context->draw(...); }; } } Fig. 1. An example shading system architecture using HLSL and C++. Le: the framework provides modules
Recommended publications
  • GLSL 4.50 Spec
    The OpenGL® Shading Language Language Version: 4.50 Document Revision: 7 09-May-2017 Editor: John Kessenich, Google Version 1.1 Authors: John Kessenich, Dave Baldwin, Randi Rost Copyright (c) 2008-2017 The Khronos Group Inc. All Rights Reserved. This specification is protected by copyright laws and contains material proprietary to the Khronos Group, Inc. It or any components may not be reproduced, republished, distributed, transmitted, displayed, broadcast, or otherwise exploited in any manner without the express prior written permission of Khronos Group. You may use this specification for implementing the functionality therein, without altering or removing any trademark, copyright or other notice from the specification, but the receipt or possession of this specification does not convey any rights to reproduce, disclose, or distribute its contents, or to manufacture, use, or sell anything that it may describe, in whole or in part. Khronos Group grants express permission to any current Promoter, Contributor or Adopter member of Khronos to copy and redistribute UNMODIFIED versions of this specification in any fashion, provided that NO CHARGE is made for the specification and the latest available update of the specification for any version of the API is used whenever possible. Such distributed specification may be reformatted AS LONG AS the contents of the specification are not changed in any way. The specification may be incorporated into a product that is sold as long as such product includes significant independent work developed by the seller. A link to the current version of this specification on the Khronos Group website should be included whenever possible with specification distributions.
    [Show full text]
  • 009NAG – September 2012
    SOUTH AFRICA’S LEADING GAMING, COMPUTER & TECHNOLOGY MAGAZINE VOL 15 ISSUE 6 BORDERLANDS 2 COMPETITION Stuff you can’t buy anywhere! PC / PLAYSTATION / XBOX / NINTENDO PREVIEWS Sleeping Dogs Beyond: Two Souls Pikmin 3 Injustice: Gods among Us ENEMY UNKNOWN Is that a plasma rifl e in your pocket, or are you just happy to see me? ULTIMATE GAMING LOUNGE What your lounge should look like Contents Editor Michael “RedTide“ James Regulars [email protected] 10 Ed’s Note Assistant editor 12 Inbox Geoff “GeometriX“ Burrows 16 Bytes Staff writer Dane “Barkskin “ Remendes Opinion 16 I, Gamer Contributing editor Lauren “Guardi3n “ Das Neves 18 The Game Stalkerer 20 The Indie Investigatorgator Technical writer 22 Miktar’s Meanderingsrings Neo “ShockG“ Sibeko 83 Hardwired 98 Game Over Features International correspondent Miktar “Miktar” Dracon 30 TOPTOP 8 HOLYHOLY SH*TSH*T MOMENTS IN GAMING Contributors Previews Throughout gaming’s relatively short history, we’ve Rodain “Nandrew” Joubert 44 Sleeping Dogs been treated to a number of moments that very nearly Walt “Ramjet” Pretorius 46 Injustice: Gods Among Us made our minds explode out the back of our heads. Miklós “Mikit0707 “ Szecsei Find out what those are. Pippa “UnexpectedGirl” Tshabalala 48 Beyond: Two Souls Tarryn “Azimuth “ Van Der Byl 50 Pikmin 3 Adam “Madman” Liebman 52 The Cave 32 THE ULTIMATE GAMING LOUNGE Tired of your boring, traditional lounge fi lled with Art director boring, traditional lounge stuff ? Then read this! Chris “SAVAGE“ Savides Reviews Photography 60 Reviews: Introduction 36 READER U Chris “SAVAGE“ Savides The results of our recent reader survey have been 61 Short Reviews: Dreamstime.com tallied and weighed by humans better at mathematics Fotolia.com Death Rally / Deadlight and number-y stuff than we pretend to be! We’d like 62 The Secret World to share some of the less top-secret results with you.
    [Show full text]
  • Opengl Shading Languag 2Nd Edition (Orange Book)
    OpenGL® Shading Language, Second Edition By Randi J. Rost ............................................... Publisher: Addison Wesley Professional Pub Date: January 25, 2006 Print ISBN-10: 0-321-33489-2 Print ISBN-13: 978-0-321-33489-3 Pages: 800 Table of Contents | Index "As the 'Red Book' is known to be the gold standard for OpenGL, the 'Orange Book' is considered to be the gold standard for the OpenGL Shading Language. With Randi's extensive knowledge of OpenGL and GLSL, you can be assured you will be learning from a graphics industry veteran. Within the pages of the second edition you can find topics from beginning shader development to advanced topics such as the spherical harmonic lighting model and more." David Tommeraasen, CEO/Programmer, Plasma Software "This will be the definitive guide for OpenGL shaders; no other book goes into this detail. Rost has done an excellent job at setting the stage for shader development, what the purpose is, how to do it, and how it all fits together. The book includes great examples and details, and good additional coverage of 2.0 changes!" Jeffery Galinovsky, Director of Emerging Market Platform Development, Intel Corporation "The coverage in this new edition of the book is pitched just right to help many new shader- writers get started, but with enough deep information for the 'old hands.'" Marc Olano, Assistant Professor, University of Maryland "This is a really great book on GLSLwell written and organized, very accessible, and with good real-world examples and sample code. The topics flow naturally and easily, explanatory code fragments are inserted in very logical places to illustrate concepts, and all in all, this book makes an excellent tutorial as well as a reference." John Carey, Chief Technology Officer, C.O.R.E.
    [Show full text]
  • Opengl 4.0 Shading Language Cookbook
    OpenGL 4.0 Shading Language Cookbook Over 60 highly focused, practical recipes to maximize your use of the OpenGL Shading Language David Wolff BIRMINGHAM - MUMBAI OpenGL 4.0 Shading Language Cookbook Copyright © 2011 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: July 2011 Production Reference: 1180711 Published by Packt Publishing Ltd. 32 Lincoln Road Olton Birmingham, B27 6PA, UK. ISBN 978-1-849514-76-7 www.packtpub.com Cover Image by Fillipo ([email protected]) Credits Author Project Coordinator David Wolff Srimoyee Ghoshal Reviewers Proofreader Martin Christen Bernadette Watkins Nicolas Delalondre Indexer Markus Pabst Hemangini Bari Brandon Whitley Graphics Acquisition Editor Nilesh Mohite Usha Iyer Valentina J. D’silva Development Editor Production Coordinators Chris Rodrigues Kruthika Bangera Technical Editors Adline Swetha Jesuthas Kavita Iyer Cover Work Azharuddin Sheikh Kruthika Bangera Copy Editor Neha Shetty About the Author David Wolff is an associate professor in the Computer Science and Computer Engineering Department at Pacific Lutheran University (PLU).
    [Show full text]
  • Graphics Shaders Mike Hergaarden January 2011, VU Amsterdam
    Graphics shaders Mike Hergaarden January 2011, VU Amsterdam [Source: http://unity3d.com/support/documentation/Manual/Materials.html] Abstract Shaders are the key to finalizing any image rendering, be it computer games, images or movies. Shaders have greatly improved the output of computer generated media; from photo-realistic computer generated humans to more vivid cartoon movies. Furthermore shaders paved the way to general-purpose computation on GPU (GPGPU). This paper introduces shaders by discussing the theory and practice. Introduction A shader is a piece of code that is executed on the Graphics Processing Unit (GPU), usually found on a graphics card, to manipulate an image before it is drawn to the screen. Shaders allow for various kinds of rendering effect, ranging from adding an X-Ray view to adding cartoony outlines to rendering output. The history of shaders starts at LucasFilm in the early 1980’s. LucasFilm hired graphics programmers to computerize the special effects industry [1]. This proved a success for the film/ rendering industry, especially at Pixars Toy Story movie launch in 1995. RenderMan introduced the notion of Shaders; “The Renderman Shading Language allows material definitions of surfaces to be described in not only a simple manner, but also highly complex and custom manner using a C like language. Using this method as opposed to a pre-defined set of materials allows for complex procedural textures, new shading models and programmable lighting. Another thing that sets the renderers based on the RISpec apart from many other renderers, is the ability to output arbitrary variables as an image—surface normals, separate lighting passes and pretty much anything else can be output from the renderer in one pass.” [1] The term shader was first only used to refer to “pixel shaders”, but soon enough new uses of shaders such as vertex and geometry shaders were introduced, making the term shaders more general.
    [Show full text]
  • Create an Endless Running Game in Unity
    Zhang Yancan Create an Endless Running Game in Unity Bachelor’s Thesis Information Technology May 2016 DESCRIPTION Date of the bachelor's thesis 2/Dec/2016 Author(s) Degree programme and option Zhang Yancan Information Technology Name of the bachelor's thesis Create an Endless Running Game in Unity The fundamental purpose of the study is to explore how to create a game with Unity3D game engine. Another aim is to get familiar with the basic processes of making a game. By the end of the study, all the research objectives were achieved. In this study, the researcher firstly studied the theoretical frameworks of game engine and mainly focused on the Unity3D game engine. Then the theoretical knowledge was applied into practice. The project conducted during the research is to generate an endless running game, which allows the players getting points by keep moving on the ground and colleting coins that appeared during the game. In addition, the players need to dodge the enemies and pay attention to the gaps emerged on the ground. The outcomes of the study have accomplished the research purposes. The game created is able to function well during the gameplay as the researcher expected. All functions have displayed in game. Subject headings, (keywords) Unity3D, Endless running game, C# Pages Language URN 34 English Remarks, notes on appendices Tutor Bachelor’s thesis assigned by Mikkeli University of Applied Sciences (change Reijo Vuohelainen to a company name, if applicable) CONTENTS 1 INTRODUCTION................................................................................................ 1 2 THEORETICAL OF BACKGROUND GAME DESIGN .................................. 2 2.1 Game strategy design .................................................................................. 2 2.2 Game balance .............................................................................................
    [Show full text]
  • Experiments on Flow and Learning in Games : Creating Services to Support Efficient Serious Games Development
    Experiments on flow and learning in games : creating services to support efficient serious games development Citation for published version (APA): Pranantha Dolar, D. (2015). Experiments on flow and learning in games : creating services to support efficient serious games development. Technische Universiteit Eindhoven. https://doi.org/10.6100/IR783192 DOI: 10.6100/IR783192 Document status and date: Published: 01/01/2015 Document Version: Publisher’s PDF, also known as Version of Record (includes final page, issue and volume numbers) Please check the document version of this publication: • A submitted manuscript is the version of the article upon submission and before peer-review. There can be important differences between the submitted version and the official published version of record. People interested in the research are advised to contact the author for the final version of the publication, or visit the DOI to the publisher's website. • The final author version and the galley proof are versions of the publication after peer review. • The final published version features the final layout of the paper including the volume, issue and page numbers. Link to publication General rights Copyright and moral rights for the publications made accessible in the public portal are retained by the authors and/or other copyright owners and it is a condition of accessing publications that users recognise and abide by the legal requirements associated with these rights. • Users may download and print one copy of any publication from the public portal for the purpose of private study or research. • You may not further distribute the material or use it for any profit-making activity or commercial gain • You may freely distribute the URL identifying the publication in the public portal.
    [Show full text]
  • From a Programmable Pipeline to an Efficient Stream Processor
    Computation on GPUs: From a Programmable Pipeline to an Efficient Stream Processor João Luiz Dihl Comba 1 Carlos A. Dietrich1 Christian A. Pagot1 Carlos E. Scheidegger1 Resumo: O recente desenvolvimento de hardware gráfico apresenta uma mu- dança na implementação do pipeline gráfico, de um conjunto fixo de funções, para programas especiais desenvolvidos pelo usuário que são executados para cada vértice ou fragmento. Esta programabilidade permite implementações de diversos algoritmos diretamente no hardware gráfico. Neste tutorial serão apresentados as principais técnicas relacionadas a implementação de algoritmos desta forma. Serão usados exemplos baseados em artigos recentemente publicados. Através da revisão e análise da contribuição dos mesmos, iremos explicar as estratégias por trás do desenvolvimento de algoritmos desta forma, formando uma base que permita ao leitor criar seus próprios algoritmos. Palavras-chave: Hardware Gráfico Programável, GPU, Pipeline Gráfico Abstract: The recent development of graphics hardware is presenting a change in the implementation of the graphics pipeline, from a fixed set of functions, to user- developed special programs to be executed on a per-vertex or per-fragment basis. This programmability allows the efficient implementation of different algorithms directly on the graphics hardware. In this tutorial we will present the main techniques that are involved in implementing algorithms in this fashion. We use several test cases based on recently published pa- pers. By reviewing and analyzing their contribution, we explain the reasoning behind the development of the algorithms, establishing a common ground that allow readers to create their own novel algorithms. Keywords: Programmable Graphics Hardware, GPU, Graphics Pipeline 1UFRGS, Instituto de Informática, Caixa Postal 15064, 91501-970 Porto Alegre/RS, Brasil e-mail: {comba, cadietrich, capagot, carlossch}@inf.ufrgs.br Este trabalho foi parcialmente financiado pela CAPES, CNPq e FAPERGS.
    [Show full text]
  • Game Engines
    Game Engines Martin Samuelčík VIS GRAVIS, s.r.o. [email protected] http://www.sccg.sk/~samuelcik Game Engine • Software framework (set of tools, API) • Creation of video games, interactive presentations, simulations, … (2D, 3D) • Combining assets (models, sprites, textures, sounds, …) and programs, scripts • Rapid-development tools (IDE, editors) vs coding everything • Deployment on many platforms – Win, Linux, Mac, Android, iOS, Web, Playstation, XBOX, … Game Engines 2 Martin Samuelčík Game Engine Assets Modeling, scripting, compiling Running compiled assets + scripts + engine Game Engines 3 Martin Samuelčík Game Engine • Rendering engine • Scripting engine • User input engine • Audio engine • Networking engine • AI engine • Scene engine Game Engines 4 Martin Samuelčík Rendering Engine • Creating final picture on screen • Many methods: rasterization, ray-tracing,.. • For interactive application, rendering of one picture < 33ms = 30 FPS • Usually based on low level APIs – GDI, SDL, OpenGL, DirectX, … • Accelerated using hardware • Graphics User Interface, HUD Game Engines 5 Martin Samuelčík Scripting Engine • Adding logic to objects in scene • Controlling animations, behaviors, artificial intelligence, state changes, graphics effects, GUI, audio execution, … • Languages: C, C++, C#, Java, JavaScript, Python, Lua, … • Central control of script executions – game consoles Game Engines 6 Martin Samuelčík User input Engine • Detecting input from devices • Detecting actions or gestures • Mouse, keyboard, multitouch display, gamepads, Kinect
    [Show full text]
  • The Opengl ES Shading Language
    The OpenGL ES® Shading Language Language Version: 3.20 Document Revision: 12 246 JuneAugust 2015 Editor: Robert J. Simpson, Qualcomm OpenGL GLSL editor: John Kessenich, LunarG GLSL version 1.1 Authors: John Kessenich, Dave Baldwin, Randi Rost 1 Copyright (c) 2013-2015 The Khronos Group Inc. All Rights Reserved. This specification is protected by copyright laws and contains material proprietary to the Khronos Group, Inc. It or any components may not be reproduced, republished, distributed, transmitted, displayed, broadcast, or otherwise exploited in any manner without the express prior written permission of Khronos Group. You may use this specification for implementing the functionality therein, without altering or removing any trademark, copyright or other notice from the specification, but the receipt or possession of this specification does not convey any rights to reproduce, disclose, or distribute its contents, or to manufacture, use, or sell anything that it may describe, in whole or in part. Khronos Group grants express permission to any current Promoter, Contributor or Adopter member of Khronos to copy and redistribute UNMODIFIED versions of this specification in any fashion, provided that NO CHARGE is made for the specification and the latest available update of the specification for any version of the API is used whenever possible. Such distributed specification may be reformatted AS LONG AS the contents of the specification are not changed in any way. The specification may be incorporated into a product that is sold as long as such product includes significant independent work developed by the seller. A link to the current version of this specification on the Khronos Group website should be included whenever possible with specification distributions.
    [Show full text]
  • 3D Graphics Technologies for Web Applications an Evaluation from the Perspective of a Real World Application
    Institutionen för systemteknik Department of Electrical Engineering Examensarbete 3D Graphics Technologies for Web Applications An Evaluation from the Perspective of a Real World Application Master thesis performed in information coding by Klara Waern´er LiTH-ISY-EX--12/4562--SE Link¨oping 2012-06-19 Department of Electrical Engineering Linköpings tekniska högskola Linköpings universitet Linköpings universitet SE-581 83 Linköping, Sweden 581 83 Linköping 3D Graphics Technologies for Web Applications An Evaluation from the Perspective of a Real World Application Master thesis in information coding at Link¨oping Institute of Technology by Klara Waern´er LiTH-ISY-EX--12/4562--SE Supervisors: Fredrik Bennet SICK IVP AB Jens Ogniewski ISY, Link¨opingUniversity Examiner: Ingemar Ragnemalm ISY, Link¨opingUniversity Link¨oping2012-06-19 Presentation Date Department and Division 2012-05-31 Department of Electrical Engineering Publishing Date (Electronic version) 2012-06-19 Language Type of Publication ISBN (Licentiate thesis) X English Licentiate thesis ISRN: LiTH-ISY-EX--12/4562--SE Other (specify below) X Degree thesis Thesis C-level Title of series (Licentiate thesis) Thesis D-level Report Number of Pages Other (specify below) Series number/ISSN (Licentiate thesis) 90 URL, Electronic Version http://urn.kb.se/resolve?urn=urn:nbn:se:liu:diva-78726 Publication Title 3D Graphics Technologies for Web Applications: An Evaluation from the Perspective of a Real World Application Publication Title (Swedish) Tekniker för 3D-grafik i webbapplikationer: En utvärdering sedd utifrån en riktig applikations perspektiv Author(s) Klara Waernér Abstract Web applications are becoming increasingly sophisticated and functionality that was once exclusive to regular desktop applications can now be found in web applications as well.
    [Show full text]
  • "Shader Metaprogramming"
    An Embedded Shading Language by Zheng Qin A thesis presented to the University of Waterloo in fulfilment of the thesis requirement for the degree of Master of Mathematics in Computer Science Waterloo, Ontario, Canada, 2004 c Zheng Qin 2004 Author’s Declaration for Electronic Submission of a Thesis I hereby declare that I am the sole author of this thesis. This is a true copy of the thesis, including any required final revisions, as accepted by my examiners. I understand that my thesis may be made electronically available to the public. ii Abstract Modern graphics accelerators have embedded programmable components in the form of vertex and fragment shading units. Current APIs permit specification of the programs for these components using an assembly-language level interface. Compilers for high-level shading languages are available but these read in an exter- nal string specification, which can be inconvenient. It is possible, using standard C++, to define an embedded high-level shading language. Such a language can be nearly indistinguishable from a special-purpose shading language, yet permits more direct interaction with the specification of textures and parameters, simplifies implementation, and enables on-the-fly gener- ation, manipulation, and specification of shader programs. An embedded shading language also permits the lifting of C++ host language type, modularity, and scop- ing constructs into the shading language without any additional implementation effort. iii Acknowledgements I would like to thank my supervisor Michael D. McCool for his help throughout my study in Waterloo. I was always very excited by his continuous stream of new ideas. It was my great pleasure to study under his supervision.
    [Show full text]