Code architecture and organisation

Size: px
Start display at page:

Download "Code architecture and organisation"

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 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 information

Introduction to the Graphics Module Framework

Introduction 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 information

Blackfin Online Learning & Development

Blackfin 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 information

Mention driver developers in the room. Because of time this will be fairly high level, feel free to come talk to us afterwards

Mention 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 information

Adding content to your Blackboard 9.1 class

Adding 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 information

Streaming Massive Environments From Zero to 200MPH

Streaming 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 information

RIS shading Series #2 Meet The Plugins

RIS 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 information

In the previous presentation, Erik Sintorn presented methods for practically constructing a DAG structure from a voxel data set.

In 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 information

One of the fundamental kinds of websites that SharePoint 2010 allows

One 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 information

CSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich

CSCD01 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 information

Gearing Up for Development CS130(0)

Gearing 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 information

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

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 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 information

Combining 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 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 information

Applying Code Generation Approach in Fabrique Kirill Kalishev, JetBrains

Applying 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 information

CHAPTER 1 COPYRIGHTED MATERIAL. Getting to Know AutoCAD. Opening a new drawing. Getting familiar with the AutoCAD and AutoCAD LT Graphics windows

CHAPTER 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 information

Processes, Threads and Processors

Processes, 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 information

A-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 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)

(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 information

Custom 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 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 information

Chapter01.fm Page 1 Monday, August 23, :52 PM. Part I of Change. The Mechanics. of Change

Chapter01.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 information

Software Engineering /48

Software 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 information

Software MEIC. (Lesson 12)

Software 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 information

CSE 461: Computer Networks John Zahorjan Justin Chan Rajalakshmi Nandkumar CJ Park

CSE 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 information

Reverse Engineering Swift Apps. Michael Gianarakis Rootcon X 2016

Reverse 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 information

Viewport 2.0 API Porting Guide for Locators

Viewport 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 information

Making a PowerPoint Accessible

Making 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 information

Explicit 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 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 information

Bringing 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 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 information

PHY Microprocessor Interfacing Techniques LabVIEW Tutorial - Part I Beginning at the Beginning

PHY 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 information

YOUR GUIDE TO. Skype for Business

YOUR 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 information

Learn to make desktop LE

Learn 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 [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 information

Concept - first iteration DAM 2.0 & CMIS

Concept - 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 information

Grade 6 Math Circles November 6 & Relations, Functions, and Morphisms

Grade 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 information

insight3d quick tutorial

insight3d 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 information

Runtime Asset Management

Runtime 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 information

This wouldn t work without the previous declaration of X. This wouldn t work without the previous declaration of y

This 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 information

RECORD. Published : License : None

RECORD. 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 information

Introduction to File Systems

Introduction 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 information

Centura is Dynamic Gianluca Pivato F

Centura 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 information

HOW TO BUILD YOUR FIRST ROBOT

HOW 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 information

VANSTEENKISTE LEO DAE GD ENG UNFOLD SHADER. Introduction

VANSTEENKISTE 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 information

edoc Builder Templates SPECIFIC CARD TUTORIAL

edoc 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 information

Trash in the Dock. May 21, 2017, Beginners SIG The Dock (Part 3 of 3)

Trash 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 information

Expected talk length: 30 minutes

Expected 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 information

Getting the most out of Microsoft Edge

Getting 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 information

shortcut Tap into learning NOW! Visit for a complete list of Short Cuts. Your Short Cut to Knowledge

shortcut 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 information

Textures and UV Mapping in Blender

Textures 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 information

Programming 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 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 information

Azon Master Class. By Ryan Stevenson Guidebook #5 WordPress Usage

Azon 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 information

Shadows for Many Lights sounds like it might mean something, but In fact it can mean very different things, that require very different solutions.

Shadows 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 information

ECE Creativity Applications for Mobile Devices January Programming Assignment P1, for Programmers

ECE 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 information

Data 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. 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 information

Microsoft SharePoint 2010

Microsoft 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 information

Part 1. Summary of For Loops and While Loops

Part 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 information

CS354 gdb Tutorial Written by Chris Feilbach

CS354 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 information

CS12020 (Computer Graphics, Vision and Games) Worksheet 1

CS12020 (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 information

JavaScript Fundamentals_

JavaScript 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 information

COSC 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 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 information

Art-based Rendering with Graftals

Art-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 information

Learn Linux in a Month of Lunches by Steven Ovadia

Learn 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 information

Breaking 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 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 information

Project 1 Balanced binary

Project 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 information

Practice Problems for the Final

Practice 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 information

Grand 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 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 information

VBA Foundations, Part 12

VBA 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 information

MARKING 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 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 information

CS 111. Operating Systems Peter Reiher

CS 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 information

Exception Namespaces C Interoperability Templates. More C++ David Chisnall. March 17, 2011

Exception 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 information

Parallel Programming on Larrabee. Tim Foley Intel Corp

Parallel 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 information

galileo Design Document Solomon Boulos

galileo 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 information

After a lecture on cosmology and the structure of the solar system, William James was accosted by a little old lady.

After 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 information

AGENDA. DEX450: Programmatic Development Using Apex and Visualforce. Day One

AGENDA. 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 information

Low-Overhead Rendering with Direct3D. Evan Hart Principal Engineer - NVIDIA

Low-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 information

Recall: 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. 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 information

Microsoft Windows SharePoint Services

Microsoft 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 information

Azure Integration Services

Azure 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 information

Check 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 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 information

SAMPLE 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 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 information

Out 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 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 information

Link native libraries from a.net application

Link 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 information

Product Requirements Document Boundless Workspace

Product 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 information

12 Duplicate Clips and Virtual Clips

12 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 information

Table of Laplace Transforms

Table 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 information

Project Zygote. Rapid prototyping for the Internet of Things

Project 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 information

Sub-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 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 information

ApacheCon NA How to Avoid Common Mistakes in OFBiz Development Presented by Adrian Crum

ApacheCon 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 information

How to Properly Blame Things for Causing Latency

How 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 information

Welcome 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! 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 information

Lab Exercise Protocol Layers

Lab 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 information

ECE 1778 Creative Applications for Mobile Devices January Programming Assignment P1, for Programmers

ECE 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 information

Widgets. Overview. Widget. Widgets Widget toolkits Lightweight vs. heavyweight widgets Swing Widget Demo

Widgets. 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 information

Software 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 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 information

Unifer Documentation. Release V1.0. Matthew S

Unifer 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 information

Using GitHub to Share with SparkFun a

Using 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 information

Could you make the XNA functions yourself?

Could 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 information

CS 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 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 information

COSC 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 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 information

There will be duplication of information as we detail GoZ for Modeler here, but also in the Layout manual

There 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 information

Introduction to OpenMP

Introduction 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