Code architecture and organisation
|
|
- Veronica Alexia Sanders
- 5 years ago
- Views:
Transcription
1 RenderDoc Code architecture and organisation This document covers RenderDoc at a high level, giving you an idea of how the UI is separated from the rest of the code and generally how the capture & replay method flows. I ll go over the three main flows or organisations of the code (capture, local replaying and remote replaying - which isn t too different). At each stage I ll point out the files that correspond to the systems I m talking about so you can match up and get a better idea of where the different bits of code sit. Since it s more complex and harder to intuit, this will mostly focus on the core renderdoc library rather than anything much on the renderdocui application.
2 Capturing structure (1) We start with the capture flow. The application marked in green is whatever the target application is - it could be a game or program, anything that s using a 3D API that renderdoc supports. If you look at the arrow marked with (1), we start off with the application loading the renderdoc library (dll on windows). If the application is launched through the UI directly as indicated in the diagram, the method varies by OS - e.g. on Linux we just launch with LD_PRELOAD= and any other environment variables set. On Windows process is launched suspended, and several threads are injected into it to first load the dll, then call out to set any capture options and such. This is handled inside OS-specific code as an implementation of Process::InjectIntoProcess or Process::CreateAndInjectIntoProcess - See renderdoc/os/win32/win32_process.cpp or renderdoc/os/linux/linux_process. cpp. It s also possible that the application voluntarily hooks itself by loading the renderdoc library without the UI intervening at all.
3 Capturing structure (2) (2) marks the API hooks that are inserted. From the library initialisation point - DllMain or attribute ((constructor)) - we set up any API-level hooking. See: renderdoc/hooks/*_libentry.cpp This will depend on what support is built into the version of the renderdoc library, but e.g. for GL we ll hook various dll-exported functions and in particular wgl/glxgetprocaddress so that we can return our own function pointers. For D3D11 we ll hook D3D11CreateDevice and DXGICreateSwapChain and other entry points like that. Each API has its own hook implementation, see: renderdoc/hooks/*_hooks.cpp These are set up immediately and must be set up before the application calls into them, as otherwise it s too late - this is the reason that when attaching to a process right now you need to do it before the process has invoked any API calls (because these hooks are only attached then).
4 Capturing structure (3) (3) is optional and will depend on the API - e.g. D3D11 uses wrapped API objects heavily to wrap all of the COM interfaces returned to the application code. There are a few bits of common utility code that aid in this. See: renderdoc/common/wrapped_pool.h and renderdoc/core/resource_manager.h When the API entry points like D3D11CreateDevice are called into the hooked version creates an instance of our implementation of ID3D11Device which is returned to the user, and in turn it creates our own implementation of ID3D11Texture2D, etc etc. More details of the D3D back-end s implementation details are available on the github wiki.
5 Capturing structure (4) (4) is the meat of the capturing system. Through whatever means make most sense for the API, it s hooked into the application and is now sitting as a man-in-the-middle between the application and the real API. I call this layer the driver. See: renderdoc/drivers/* All that s required of the driver implementation is that it produces an RDC capture file in the appropriate format at the end. Details are in the next slide but the important part is that it s made up of a series of chunks. A typical implementation such as D3D will do a couple of things: 1) It will track live resources and organise API access that relates to these resources separately into bundles of chunks, e.g. data upload or parameter setting on a texture, render target creation, etc. 2) It will also track dependencies between textures such as copies. Doing this it will be able to discard bundles once the resources are released, and it can keep track of which resources are referenced when a given frame is captured, and only include those bundles in the final file. The usual organisation is friendly to the replay side - it first writes out heavyweight chunks (6) that contain resource creation, initialisation and any other pre-frame actions needed to set up for the initial state of the frame. Other things like resource setting and draws from previous frames are never captured and so omitted from the log. This initial stream of chunks takes up most of the log, and then at the end of the log the API events from the frame capture (7) itself live. This is convenient for the replay side as then after initial loading only the memory for the last part of the log needs to be kept in persistent memory.
6 Capturing structure (5) The RDC capture file (5) is fairly loosely defined. It has a small header that contains things like version, length information. Beyond that, everything in the file is stored as a series of chunks - each chunk has an integer type, a length, and optionally a callstack. See: renderdoc/serialise/serialise.* We define a few chunks that must always be present at the start of a RDC file as standard - there s a chunk that includes the capture thumbnail (provided by the API driver implementation) which can be easily read out without much processing e.g. to provide file previews. Then follows a chunk that defines which API the log contains as well as an API-defined set of initialisation parameters. These chunks are used so that renderdoc can identify and do things with logs even when it has no API implementation to process the rest of the log. See: renderdoc/core/core.cpp and specifically RenderDoc::OpenWriteSerialiser and RenderDoc::FillInitParams
7 Local replay structure (1) Now we look at the replay side of the picture. As I mentioned, we won t be focussing on the UI code much, but instead looking at how the code flows through the main library. (1a) the C# UI uses P/Invoke to call into the mostly-c interface on the replay layer. See: renderdocui/interop (1b) renderdoccmd is a small C++ utility app that does a few different things and is mostly used for testing functionality, but it links directly against the renderdoc library and so calls straight into the C interface. See: renderdoccmd/renderdoccmd.cpp
8 Local replay structure (2) The inventively-named replay layer (2) presents a high-level interface to whatever UI or program is built on top of it - it will open a log, replay to given point, do analysis like give me the histogram of values for this texture or display this texture, within the range 5-10, on this window handle. See: renderdoc/replay/renderdoc.h and renderdoc/replay/replay_renderer.h The replay layer is actually fairly slim and most of its work is passed along elsewhere. It can feel like an unnecessary set of duplication at times, but it removes a lot of the drudgery of preparing things for passing across the external interface as well as doing some API-agnostic bookkeeping. When the replay layer is asked to load a log, it figures out which API is used in the log and depending on what functionality is built into the library it will call out to a replay driver creator that s registered for that API. See: renderdoc/core/core.h struct DriverRegistration / enum RDCDriver for the principle and renderdoc/driver/d3d11/d3d11_replay.cpp for an implementation This creator is responsible for taking the log + initialisation parameters and returning an implementation of the API interface that sits between the replay layer and the actual driver implementation in the above diagram. The replay layer then talks to this API interface to actually do all concrete operations on the log. See: renderdoc/replay/replay_driver.h for the interface and renderdoc/driver/d3d11/d3d11_replay.h for an implementation
9 Local replay structure (3) The API driver that we first saw in the capture flow also appears here (3) in the replay flow. Much of the same code is executed to go through the serialisation in reverse to read out of the API chunks the parameters, data, etc. Exactly what the driver does with this data is implementation-dependent but usually it will read out the initial data and chunks once, then keep the frame chunks in memory for repeated access. This part of the code has a lot of overlap with the driver implementation for the capture side, and is mostly responsible for keeping the replay from diverging, replaying any subsets of the frame that are requested, and returning things like texture metadata and other information gleaned directly from the log. For D3D11 see: renderdoc/driver/d3d11/d3d11_device* and renderdoc/driver/d3d11/d3d11_context*, although there are other files involved. More info in the D3D implementation details in the github wiki.
10 Local replay structure (4) In replay mode, an additional set of code in the driver implementation gets used (4) for doing analysis and debugging beyond the scope of capturing. Things like calculating histograms, displaying meshes, fetching post-transform data out of shaders etc isn t used at all during capture and is only done on replay. Again this code is used to implement the other functions in the API interface which the replay layer will call into. For D3D11 see renderdoc/driver/d3d11/d3d11_analyse.cpp and renderdoc/driver/d3d11/d3d11_debug.cpp, as well as all of the shader disassembly and debugging code in renderdoc/driver/d3d11/shaders/*. More info in the D3D implementation details in the github wiki.
11 Remote replay structure (3) When a log uses an API that doesn t have support built into the local library version, the UI is responsible for querying for this and asking the user how they d like to proceed. If the user chooses to replay the log via a remote host, then the UI will invoke the replay layer (2) asking it to replay on a remote host instead of loading the log locally. When this happens, a bridge class is used to implement the API interface, so that as far as the replay layer and above are concerned nothing is different to a locallysupported log from this point on. See: renderdoc/core/replay_proxy.cpp
12 Remote replay structure (4) The remote bridge will connect to the network host (launching the replay program on the remote host is beyond the scope of renderdoc, although this can be supported by plugins. For this explanation we assume that the replay program is already running). The network host is essentially running the renderdoc library as-is, but instead of exposing the replay layer it listens on a network port for a connection that will transfer a log and it will immediately try to load it locally. The remote host if it supports the API only has to provide a subset of the API interface functionality - that functionality that requires knowledge of the specifics of the API and replaying. See: the distinction between IRemoteDriver and IReplayDriver in renderdoc/replay/replay_driver.h - note an IReplayDriver is a superset of IRemoteDriver functionality. This remote replay then behaves as before in the local replay case, providing this subset of functionality and serialising across the network to the remote bridge.
13 Remote replay structure (5) So that the remote bridge can implement the whole of the API interface (3) it also creates a local proxy. This local proxy is one of the locally supported APIs the implements all of the API interface functionality. Although this local proxy doesn t support the API from the log, all of that functionality is implemented remotely across the network link, and so it is left to do things like render texture data to windows, perform any generic analysis like producing texture histograms, displaying textures with a given range or channel masking, etc. Above the remote bridge, this split and network link is invisible (beyond the inevitable network latency and throughput limitations), as the remote bridge acts just like a catch-all API driver that implements any API that isn t supported locally.
14 The end If you have any questions feel free to ask! Contact details, source, everything is linked from github:
RenderMonkey SDK Version 1.71
RenderMonkey SDK Version 1.71 OVERVIEW... 3 RENDERMONKEY PLUG-IN ARCHITECTURE PHILOSOPHY... 3 IMPORTANT CHANGES WHEN PORTING EXISTING PLUG-INS... 3 GENERAL... 4 GENERATING A RENDERMONKEY PLUG-IN FRAMEWORK...
More informationIntroduction to the Graphics Module Framework
Introduction to the Graphics Module Framework Introduction Unlike the C++ module, which required nothing beyond what you typed in, the graphics module examples rely on lots of extra files - shaders, textures,
More informationBlackfin Online Learning & Development
Presentation Title: Multimedia Starter Kit Presenter Name: George Stephan Chapter 1: Introduction Sub-chapter 1a: Overview Chapter 2: Blackfin Starter Kits Sub-chapter 2a: What is a Starter Kit? Sub-chapter
More informationMention driver developers in the room. Because of time this will be fairly high level, feel free to come talk to us afterwards
1 Introduce Mark, Michael Poll: Who is a software developer or works for a software company? Who s in management? Who knows what the OpenGL ARB standards body is? Mention driver developers in the room.
More informationAdding content to your Blackboard 9.1 class
Adding content to your Blackboard 9.1 class There are quite a few options listed when you click the Build Content button in your class, but you ll probably only use a couple of them most of the time. Note
More informationStreaming Massive Environments From Zero to 200MPH
FORZA MOTORSPORT From Zero to 200MPH Chris Tector (Software Architect Turn 10 Studios) Turn 10 Internal studio at Microsoft Game Studios - we make Forza Motorsport Around 70 full time staff 2 Why am I
More informationRIS shading Series #2 Meet The Plugins
RIS shading Series #2 Meet The Plugins In this tutorial I will be going over what each type of plugin is, what their uses are, and the basic layout of each. By the end you should understand the three basic
More informationIn the previous presentation, Erik Sintorn presented methods for practically constructing a DAG structure from a voxel data set.
1 In the previous presentation, Erik Sintorn presented methods for practically constructing a DAG structure from a voxel data set. This presentation presents how such a DAG structure can be accessed immediately
More informationOne of the fundamental kinds of websites that SharePoint 2010 allows
Chapter 1 Getting to Know Your Team Site In This Chapter Requesting a new team site and opening it in the browser Participating in a team site Changing your team site s home page One of the fundamental
More informationCSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich
CSCD01 Engineering Large Software Systems Design Patterns Joe Bettridge Winter 2018 With thanks to Anya Tafliovich Design Patterns Design patterns take the problems consistently found in software, and
More informationGearing Up for Development CS130(0)
Gearing Up for Development CS130(0) Development Development is a coding heavy assignment! You will need to create application using React.js (a Javascript Library). This application will display a list
More informationLet me begin by introducing myself. I have been a Progress Application Partner since 1986 and for many years I was the architect and chief developer
Let me begin by introducing myself. I have been a Progress Application Partner since 1986 and for many years I was the architect and chief developer for our ERP application. In recent years, I have refocused
More informationCombining the C Library and Native File System APIs in a Single NET+OS Application
Combining the C Library and Native File System APIs in a Single NET+OS Application 1 Document History Date Version Change Description 7/29/09 V1.0 Initial entry 7/31/09 V1.1 First Edits 7/31 V1.2 Add in
More informationApplying Code Generation Approach in Fabrique Kirill Kalishev, JetBrains
november 2004 Applying Code Generation Approach in Fabrique This paper discusses ideas on applying the code generation approach to help the developer to focus on high-level models rather than on routine
More informationCHAPTER 1 COPYRIGHTED MATERIAL. Getting to Know AutoCAD. Opening a new drawing. Getting familiar with the AutoCAD and AutoCAD LT Graphics windows
CHAPTER 1 Getting to Know AutoCAD Opening a new drawing Getting familiar with the AutoCAD and AutoCAD LT Graphics windows Modifying the display Displaying and arranging toolbars COPYRIGHTED MATERIAL 2
More informationProcesses, Threads and Processors
1 Processes, Threads and Processors Processes and Threads From Processes to Threads Don Porter Portions courtesy Emmett Witchel Hardware can execute N instruction streams at once Ø Uniprocessor, N==1 Ø
More informationA-Z Object Creation in TSR Workshop V0.02. TSR Workshop: Step by step guide to creating your new object. Written by: Apple
A-Z Object Creation in TSR Workshop V0.02 TSR Workshop: Step by step guide to creating your new object Written by: Apple The Sims Resource A-Z Workshop: Introduction Welcome! Welcome to this guide to the
More information(Refer Slide Time: 0:48)
Mobile Computing Professor Pushpendra Singh Indraprastha Institute of Information Technology Delhi Lecture 10 Android Studio Last week gave you a quick introduction to android program. You develop a simple
More informationCustom Component Development Using RenderMonkey SDK. Natalya Tatarchuk 3D Application Research Group ATI Research, Inc
Custom Component Development Using RenderMonkey SDK Natalya Tatarchuk 3D Application Research Group ATI Research, Inc Overview Motivation Introduction to the SDK SDK Functionality Overview Conclusion 2
More informationChapter01.fm Page 1 Monday, August 23, :52 PM. Part I of Change. The Mechanics. of Change
Chapter01.fm Page 1 Monday, August 23, 2004 1:52 PM Part I The Mechanics of Change The Mechanics of Change Chapter01.fm Page 2 Monday, August 23, 2004 1:52 PM Chapter01.fm Page 3 Monday, August 23, 2004
More informationSoftware Engineering /48
Software Engineering 1 /48 Topics 1. The Compilation Process and You 2. Polymorphism and Composition 3. Small Functions 4. Comments 2 /48 The Compilation Process and You 3 / 48 1. Intro - How do you turn
More informationSoftware MEIC. (Lesson 12)
Software Architecture @ MEIC (Lesson 12) Last class The Fenix case study, from business problem to architectural design Today Scenarios and Tactics for the Graphite system Graphite Scenarios + Tactics
More informationCSE 461: Computer Networks John Zahorjan Justin Chan Rajalakshmi Nandkumar CJ Park
CSE 461: Computer Networks John Zahorjan zahorjan@cs Justin Chan jucha@cs Rajalakshmi Nandkumar rajaln@cs CJ Park cjparkuw@cs Course Staff Grading Assignments/Projects/Homeworks: 55% Midterm: 15% Final:
More informationReverse Engineering Swift Apps. Michael Gianarakis Rootcon X 2016
Reverse Engineering Swift Apps Michael Gianarakis Rootcon X 2016 # whoami @mgianarakis Director of SpiderLabs APAC at Trustwave SecTalks Organiser (@SecTalks_BNE) Flat Duck Justice Warrior #ducksec Motivation
More informationViewport 2.0 API Porting Guide for Locators
Viewport 2.0 API Porting Guide for Locators Introduction This document analyzes the choices for porting plug-in locators (MPxLocatorNode) to Viewport 2.0 mostly based on the following factors. Portability:
More informationMaking a PowerPoint Accessible
Making a PowerPoint Accessible Purpose The purpose of this document is to help you to create an accessible PowerPoint, or to take a nonaccessible PowerPoint and make it accessible. You are probably reading
More informationExplicit Multi GPU Programming with DirectX 12. Juha Sjöholm Developer Technology Engineer NVIDIA
Explicit Multi GPU Programming with DirectX 12 Juha Sjöholm Developer Technology Engineer NVIDIA Agenda What is explicit Multi GPU API Introduction Engine Requirements Frame Pipelining Case Study Problem
More informationBringing AAA graphics to mobile platforms. Niklas Smedberg Senior Engine Programmer, Epic Games
Bringing AAA graphics to mobile platforms Niklas Smedberg Senior Engine Programmer, Epic Games Who Am I A.k.a. Smedis Platform team at Epic Games Unreal Engine 15 years in the industry 30 years of programming
More informationPHY Microprocessor Interfacing Techniques LabVIEW Tutorial - Part I Beginning at the Beginning
PHY 406 - Microprocessor Interfacing Techniques LabVIEW Tutorial - Part I Beginning at the Beginning Introduction One of the main objectives of this course is to teach you how to gather data using computers
More informationYOUR GUIDE TO. Skype for Business
YOUR GUIDE TO Skype for Business Welcome to Skype for Business This is the Skype for Business app Your profile picture, status & location (you can change these) Your options Your contacts and groups (you
More informationLearn to make desktop LE
HACKING WITH SWIFT COMPLETE TUTORIAL COURSE Learn to make desktop LE P apps with real-worldam S Swift projects REEPaul Hudson F Project 1 Storm Viewer Get started coding in Swift by making an image viewer
More information[2:3] Linked Lists, Stacks, Queues
[2:3] Linked Lists, Stacks, Queues Helpful Knowledge CS308 Abstract data structures vs concrete data types CS250 Memory management (stack) Pointers CS230 Modular Arithmetic !!!!! There s a lot of slides,
More informationConcept - first iteration DAM 2.0 & CMIS
Concept - first iteration DAM 2.0 & CMIS CAUTION: this page simply describes the ideas and discussion of the first iteration of the DAM 2.0 & CMIS implementation effort. Some things are still up to date
More informationGrade 6 Math Circles November 6 & Relations, Functions, and Morphisms
Faculty of Mathematics Waterloo, Ontario N2L 3G1 Centre for Education in Mathematics and Computing Relations Let s talk about relations! Grade 6 Math Circles November 6 & 7 2018 Relations, Functions, and
More informationinsight3d quick tutorial
insight3d quick tutorial What can it do? insight3d lets you create 3D models from photographs. You give it a series of photos of a real scene (e.g., of a building), it automatically matches them and then
More informationRuntime Asset Management
Runtime Asset Management Prior to 4.16, UE4 has not provided much support for runtime loading/unloading of assets. There were bits and pieces in StreamableManager, ObjectLibrary, and the Map streaming
More informationThis wouldn t work without the previous declaration of X. This wouldn t work without the previous declaration of y
Friends We want to explicitly grant access to a function that isn t a member of the current class/struct. This is accomplished by declaring that function (or an entire other struct) as friend inside the
More informationRECORD. Published : License : None
RECORD Published : 2011-03-12 License : None 1 Record Activity 1. Introduction 2. Starting Record 3. Somebody Should Set The Title For This Chapter! 4. Overview of Record 5. Audio 6. Taking Photos 7. Video
More informationIntroduction to File Systems
Introduction to File Systems CS-3013 Operating Systems Hugh C. Lauer (Slides include materials from Slides include materials from Modern Operating Systems, 3 rd ed., by Andrew Tanenbaum and from Operating
More informationCentura is Dynamic Gianluca Pivato F
Pro Centura TM Visit us at www.propublishing.com! Hot Ideas for Centura Developers The Secret s Out: Centura is Dynamic Gianluca Pivato F or years developers have had to find creative ways to overcome
More informationHOW TO BUILD YOUR FIRST ROBOT
Kofax Kapow TM HOW TO BUILD YOUR FIRST ROBOT INSTRUCTION GUIDE Table of Contents How to Make the Most of This Tutorial Series... 1 Part 1: Installing and Licensing Kofax Kapow... 2 Install the Software...
More informationVANSTEENKISTE LEO DAE GD ENG UNFOLD SHADER. Introduction
VANSTEENKISTE LEO 2015 G E O M E T RY S H A D E R 2 DAE GD ENG UNFOLD SHADER Introduction Geometry shaders are a powerful tool for technical artists, but they always seem to be used for the same kind of
More informationedoc Builder Templates SPECIFIC CARD TUTORIAL
edoc Builder Templates SPECIFIC CARD TUTORIAL 1. The files you need are located: J:\Customers Files\D\DocketManager\Templates\MOSH_Tutorial 2. Open the Corel File. If you need to install the fonts on your
More informationTrash in the Dock. May 21, 2017, Beginners SIG The Dock (Part 3 of 3)
Note: This discussion is based on MacOS, 10.12.4 (Sierra). Some illustrations may differ when using other versions of macos or OS X. Credit: http://tidbits.com/e/17088 ( macos Hidden Treasures: Dominate
More informationExpected talk length: 30 minutes
Expected talk length: 30 minutes Welcome to Bringing Borderlands 2 and Pre-Sequel to The SHIELD Platform. My name is Justin Kim, and I am an engineer with NVIDIA s Developer Technology group. Our group
More informationGetting the most out of Microsoft Edge
Microsoft IT Showcase Getting the most out of Microsoft Edge Microsoft Edge, the new browser in Windows 10, is designed to deliver a better web experience. It s faster, safer, and more productive designed
More informationshortcut Tap into learning NOW! Visit for a complete list of Short Cuts. Your Short Cut to Knowledge
shortcut Your Short Cut to Knowledge The following is an excerpt from a Short Cut published by one of the Pearson Education imprints. Short Cuts are short, concise, PDF documents designed specifically
More informationTextures and UV Mapping in Blender
Textures and UV Mapping in Blender Categories : Uncategorised Date : 21st November 2017 1 / 25 (See below for an introduction to UV maps and unwrapping) Jim s Notes regarding Blender objects, the UV Editor
More informationProgramming Data Structures and Algorithms Prof. Shankar Balachandran Department of Computer Science Indian Institute of Technology, Madras
Programming Data Structures and Algorithms Prof. Shankar Balachandran Department of Computer Science Indian Institute of Technology, Madras Module 12B Lecture - 41 Brief introduction to C++ Hello, welcome
More informationAzon Master Class. By Ryan Stevenson Guidebook #5 WordPress Usage
Azon Master Class By Ryan Stevenson https://ryanstevensonplugins.com/ Guidebook #5 WordPress Usage Table of Contents 1. Widget Setup & Usage 2. WordPress Menu System 3. Categories, Posts & Tags 4. WordPress
More informationShadows for Many Lights sounds like it might mean something, but In fact it can mean very different things, that require very different solutions.
1 2 Shadows for Many Lights sounds like it might mean something, but In fact it can mean very different things, that require very different solutions. 3 We aim for something like the numbers of lights
More informationECE Creativity Applications for Mobile Devices January Programming Assignment P1, for Programmers
ECE 1778 - Creativity Applications for Mobile Devices January 2015 Programming Assignment P1, for Programmers Introducing Yourself & Development Environment & Simple Widgets PART I A key part of this course
More informationData Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi.
Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture 18 Tries Today we are going to be talking about another data
More informationMicrosoft SharePoint 2010
BrainStorm Quick Start Card for Microsoft SharePoint 2010 Getting Started Microsoft SharePoint 2010 brings together your organization s people, documents, information, and ideas in a customizable space
More informationPart 1. Summary of For Loops and While Loops
NAME EET 2259 Lab 5 Loops OBJECTIVES -Understand when to use a For Loop and when to use a While Loop. -Write LabVIEW programs using each kind of loop. -Write LabVIEW programs with one loop inside another.
More informationCS354 gdb Tutorial Written by Chris Feilbach
CS354 gdb Tutorial Written by Chris Feilbach Purpose This tutorial aims to show you the basics of using gdb to debug C programs. gdb is the GNU debugger, and is provided on systems that
More informationCS12020 (Computer Graphics, Vision and Games) Worksheet 1
CS12020 (Computer Graphics, Vision and Games) Worksheet 1 Jim Finnis (jcf1@aber.ac.uk) 1 Getting to know your shield First, book out your shield. This might take a little time, so be patient. Make sure
More informationJavaScript Fundamentals_
JavaScript Fundamentals_ HackerYou Course Syllabus CLASS 1 Intro to JavaScript Welcome to JavaScript Fundamentals! Today we ll go over what programming languages are, JavaScript syntax, variables, and
More informationCOSC 2P95. Introduction. Week 1. Brock University. Brock University (Week 1) Introduction 1 / 18
COSC 2P95 Introduction Week 1 Brock University Brock University (Week 1) Introduction 1 / 18 Lectures and Labs Lectures are Thursdays, from 3pm 5pm (AS/STH 217) There are two lab sections Lab 1 is Mondays,
More informationArt-based Rendering with Graftals
: Interactive Computer Graphics Art-based Rendering with Graftals 1 Introduction Due: 3/13/10, 11:59 PM Between Ray in 123 and Photon Mapping that you just did, you ve now had a good deal of exposure to
More informationLearn Linux in a Month of Lunches by Steven Ovadia
Learn Linux in a Month of Lunches by Steven Ovadia Sample Chapter 17 Copyright 2017 Manning Publications brief contents PART 1 GETTING LINUX UP AND RUNNING... 1 1 Before you begin 3 2 Getting to know Linux
More informationBreaking Down Barriers: An Intro to GPU Synchronization. Matt Pettineo Lead Engine Programmer Ready At Dawn Studios
Breaking Down Barriers: An Intro to GPU Synchronization Matt Pettineo Lead Engine Programmer Ready At Dawn Studios Who am I? Ready At Dawn for 9 years Lead Engine Programmer for 5 I like GPUs and APIs!
More informationProject 1 Balanced binary
CMSC262 DS/Alg Applied Blaheta Project 1 Balanced binary Due: 7 September 2017 You saw basic binary search trees in 162, and may remember that their weakness is that in the worst case they behave like
More informationPractice Problems for the Final
ECE-250 Algorithms and Data Structures (Winter 2012) Practice Problems for the Final Disclaimer: Please do keep in mind that this problem set does not reflect the exact topics or the fractions of each
More informationGrand Central Dispatch and NSOperation. CSCI 5828: Foundations of Software Engineering Lecture 28 12/03/2015
Grand Central Dispatch and NSOperation CSCI 5828: Foundations of Software Engineering Lecture 28 12/03/2015 1 Credit Where Credit Is Due Most of the examples in this lecture were inspired by example code
More informationVBA Foundations, Part 12
As quickly as you can Snatch the Pebble from my hand, he had said as he extended his hand toward you. You reached for the pebble but you opened it only to find that it was indeed still empty. Looking down
More informationMARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Midterm #2 Examination 12:30 noon, Thursday, March 15, 2012
MARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Midterm #2 Examination 12:30 noon, Thursday, March 15, 2012 Instructor: K. S. Booth Time: 70 minutes (one hour ten minutes)
More informationCS 111. Operating Systems Peter Reiher
Operating System Principles: File Systems Operating Systems Peter Reiher Page 1 Outline File systems: Why do we need them? Why are they challenging? Basic elements of file system design Designing file
More informationException Namespaces C Interoperability Templates. More C++ David Chisnall. March 17, 2011
More C++ David Chisnall March 17, 2011 Exceptions A more fashionable goto Provides a second way of sending an error condition up the stack until it can be handled Lets intervening stack frames ignore errors
More informationParallel Programming on Larrabee. Tim Foley Intel Corp
Parallel Programming on Larrabee Tim Foley Intel Corp Motivation This morning we talked about abstractions A mental model for GPU architectures Parallel programming models Particular tools and APIs This
More informationgalileo Design Document Solomon Boulos
galileo Design Document Solomon Boulos 1 Contents 1 Introduction 3 2 Overview 3 3 Code Organization 4 3.1 Core.................................................. 4 3.1.1 API..............................................
More informationAfter a lecture on cosmology and the structure of the solar system, William James was accosted by a little old lady.
Introduction After a lecture on cosmology and the structure of the solar system, William James was accosted by a little old lady. Your theory that the sun is the centre of the solar system, and the earth
More informationAGENDA. DEX450: Programmatic Development Using Apex and Visualforce. Day One
Day One 15 minutes Introductions 60 minutes Welcome to AW Computing Watch Me 1-1 (5 min): Explore the Certification App Join Me 1-2 (5 min): Prepare Your Training Org Join Me 1-3 (5 min): Create a Sandbox
More informationLow-Overhead Rendering with Direct3D. Evan Hart Principal Engineer - NVIDIA
Low-Overhead Rendering with Direct3D Evan Hart Principal Engineer - NVIDIA Ground Rules No DX9 Need to move fast Big topic in 30 minutes Assuming experienced audience Everything is a tradeoff These are
More informationRecall: Address Space Map. 13: Memory Management. Let s be reasonable. Processes Address Space. Send it to disk. Freeing up System Memory
Recall: Address Space Map 13: Memory Management Biggest Virtual Address Stack (Space for local variables etc. For each nested procedure call) Sometimes Reserved for OS Stack Pointer Last Modified: 6/21/2004
More informationMicrosoft Windows SharePoint Services
Microsoft Windows SharePoint Services SITE ADMIN USER TRAINING 1 Introduction What is Microsoft Windows SharePoint Services? Windows SharePoint Services (referred to generically as SharePoint) is a tool
More informationAzure Integration Services
Azure Integration Services 2018 Microsoft Corporation. All rights reserved. This document is provided "as-is." Information and views expressed in this document, including URL and other Internet Web site
More informationCheck out FilesAndExceptions from SVN. Exam 2 Review File I/O, Exceptions Vector Graphics Project
Check out FilesAndExceptions from SVN Exam 2 Review File I/O, Exceptions Vector Graphics Project Exam 2 review File I/O and Exceptions Vector Graphics project kickoff Exam is in class tomorrow Test on
More informationSAMPLE CHAPTER. Using Electron and NW.js. Paul B. Jensen. FOREWORD BY Cheng Zhao MANNING
SAMPLE CHAPTER Using Electron and NW.js Paul B. Jensen FOREWORD BY Cheng Zhao MANNING Cross-Platform Desktop Applications Using Electron and NW.js by Paul Jensen Chapter 6 Copyright 2017 Manning Publications
More informationOut of Sight, Out of Mind: Improving Visualization of AI Info. Mika Vehkala Principal Game Tech Guerrilla Games
Out of Sight, Out of Mind: Improving Visualization of AI Info Mika Vehkala Principal Game Tech Programmer @ Guerrilla Games Contents Introduction Part I Visualizing Runtime Flow Part II Record and Playback
More informationLink native libraries from a.net application
Link native libraries from a.net application Walter Hoolwerf (Radboud University, The Netherlands walto@vaag.cx) Mark Jans (Radboud University, The Netherlands mjans@home.nl) Abstract: To be written. Key
More informationProduct Requirements Document Boundless Workspace
Product Requirements Document Boundless Workspace Paul Yoo Peyton Mash Yingru Alan Feng Tianqi Wang yoosehy@gmail.com peyton.mash@gmail.com yingru97@uw.edu tianqiw27@gmail.com October 19, 2018 Summary
More information12 Duplicate Clips and Virtual Clips
12 Duplicate Clips and Virtual Clips Duplicate clips and virtual clips are two powerful tools for assembling a video program in Premiere. Duplicate clips can be useful for splitting clips into a number
More informationTable of Laplace Transforms
Table of Laplace Transforms 1 1 2 3 4, p > -1 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Heaviside Function 27 28. Dirac Delta Function 29 30. 31 32. 1 33 34. 35 36. 37 Laplace Transforms
More informationProject Zygote. Rapid prototyping for the Internet of Things
Project Zygote Rapid prototyping for the Internet of Things The Problem we set out to solve How to make interconnecting things easier? What IoT means to us Seamless interconnection between any IoT enabled
More informationSub-Second Response Times with New In-Memory Analytics in MicroStrategy 10. Onur Kahraman
Sub-Second Response Times with New In-Memory Analytics in MicroStrategy 10 Onur Kahraman High Performance Is No Longer A Nice To Have In Analytical Applications Users expect Google Like performance from
More informationApacheCon NA How to Avoid Common Mistakes in OFBiz Development Presented by Adrian Crum
ApacheCon NA 2015 How to Avoid Common Mistakes in OFBiz Development Presented by Adrian Crum 1Tech, Ltd. 29 Harley Street, London, W1G 9QR, UK www.1tech.eu 1 Overview Common Getting Started Problems Common
More informationHow to Properly Blame Things for Causing Latency
How to Properly Blame Things for Causing Latency An introduction to Distributed Tracing and Zipkin @adrianfcole works at Pivotal works on Zipkin Introduction introduction understanding latency distributed
More informationWelcome Back! Without further delay, let s get started! First Things First. If you haven t done it already, download Turbo Lister from ebay.
Welcome Back! Now that we ve covered the basics on how to use templates and how to customise them, it s time to learn some more advanced techniques that will help you create outstanding ebay listings!
More informationLab Exercise Protocol Layers
Lab Exercise Protocol Layers Objective To learn how protocols and layering are represented in packets. They are key concepts for structuring networks that are covered in 1.3 and 1.4 of your text. Review
More informationECE 1778 Creative Applications for Mobile Devices January Programming Assignment P1, for Programmers
ECE 1778 Creative Applications for Mobile Devices January 2016 Programming Assignment P1, for Programmers Introducing Yourself & Development Environment & Touch Buttons PART I A key part of this course
More informationWidgets. Overview. Widget. Widgets Widget toolkits Lightweight vs. heavyweight widgets Swing Widget Demo
Widgets Overview Widgets Widget toolkits Lightweight vs. heavyweight widgets Swing Widget Demo Widget Widget is a generic name for parts of an interface that have their own behavior: buttons, progress
More informationSoftware Testing Prof. Meenakshi D Souza Department of Computer Science and Engineering International Institute of Information Technology, Bangalore
Software Testing Prof. Meenakshi D Souza Department of Computer Science and Engineering International Institute of Information Technology, Bangalore Lecture 04 Software Test Automation: JUnit as an example
More informationUnifer Documentation. Release V1.0. Matthew S
Unifer Documentation Release V1.0 Matthew S July 28, 2014 Contents 1 Unifer Tutorial - Notes Web App 3 1.1 Setting up................................................. 3 1.2 Getting the Template...........................................
More informationUsing GitHub to Share with SparkFun a
Using GitHub to Share with SparkFun a learn.sparkfun.com tutorial Available online at: http://sfe.io/t52 Contents Introduction Gitting Started Forking a Repository Committing, Pushing and Pulling Syncing
More informationCould you make the XNA functions yourself?
1 Could you make the XNA functions yourself? For the second and especially the third assignment, you need to globally understand what s going on inside the graphics hardware. You will write shaders, which
More informationCS 31: Intro to Systems Pointers and Memory. Martin Gagne Swarthmore College February 16, 2016
CS 31: Intro to Systems Pointers and Memory Martin Gagne Swarthmore College February 16, 2016 So we declared a pointer How do we make it point to something? 1. Assign it the address of an existing variable
More informationCOSC 2P95. Procedural Abstraction. Week 3. Brock University. Brock University (Week 3) Procedural Abstraction 1 / 26
COSC 2P95 Procedural Abstraction Week 3 Brock University Brock University (Week 3) Procedural Abstraction 1 / 26 Procedural Abstraction We ve already discussed how to arrange complex sets of actions (e.g.
More informationThere will be duplication of information as we detail GoZ for Modeler here, but also in the Layout manual
GoZ Interchange GoZ Setting Up GoZ for LightWave LightWave support of GoZ by ZBrush GoZ for Modeler GoZ for Layout Example: Using ZBrush to Edit Morph Maps Example: Converting ZBrush Fibermeshes to FiberFX
More informationIntroduction to OpenMP
Introduction to OpenMP p. 1/?? Introduction to OpenMP Simple SPMD etc. Nick Maclaren nmm1@cam.ac.uk September 2017 Introduction to OpenMP p. 2/?? Terminology I am badly abusing the term SPMD tough The
More information