SlideShare a Scribd company logo
1 of 56
Download to read offline
2
(What happens when you Refresh the AssetDatabase)
Overview
3
Intro to new AssetDatabase
What happens when you Refresh()
Ideas behind Fast Platform Switch
Tips and tricks of ADB
Q&A!
About me
4
Been making games since 2004
Have worked on PS2, Nintendo DS, MMORPGs for PC, many Flash
Games, Android, iOS
Been with the Asset Pipeline team for a year now
5
Re-written AssetDatabase
6
— API Compatibility with Version 1
– Updated API reference to have more code examples!
— Guiding Principles:
– Determinism
– Dependency tracking
– Deterministic importers
— Will mention Cache Server in this talk, but won’t go into too much detail
– Supports dynamic dependencies
AssetDatabase Jargon
7
— Import Results & Artifacts
Artifacts/
Library/
0a3d2c7a0e9410b7e6a0603db99202d2
9c261a0511b00763080511c82b43dd93
...
0a/
9c/
— This is what is stored in the Library folder
— Terms are interchangeable
AssetDatabase Jargon
8
— Hashing
– In the context of the AssetDatabase
– Taking an arbitrary data stream and producing a 128 bit Hash from it
Array of bytes:
41 73 73 65 74
44 61 74 61 62
61 73 65 2E 47
65 74 42 75 69
6C 74 69 6E 45
78 74 72 61 52
65 73 6F 75 72
Hashing
128 bit Hash:
0a0086cbb18a3416
b88c52e7b8a6fc84
1
— Dependencies
– Things we determine that could have an effect on the
import result
9
Dependencies
2
3
...
Import
Import
Result
AssetDatabase Jargon
10
— Dependency tracking
– Static and Dynamic dependencies
– More on these later
1
Dependencies
2
...
Import
Import
Result
AssetDatabase Jargon
11
— Determinism
– We give you the confidence that for a particular input the
same output is always* produced
public void NonDeterministic(Object asset, string path01, string path02)
{
AssetDatabase.CreateAsset(asset, path01);
var result = AssetDatabase.MoveAsset(path01, path02);
Debug.Log(result);
}
public void Deterministic(Object asset, string path01, string path02)
{
if (AssetDatabase.AssetPathToGUID(path01) != string.Empty)
AssetDatabase.DeleteAsset(path01);
if (AssetDatabase.AssetPathToGUID(path02) != string.Empty)
AssetDatabase.DeleteAsset(path02);
AssetDatabase.CreateAsset(asset, path01);
var result = AssetDatabase.MoveAsset(path01, path02);
Debug.Log(result);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
AssetDatabase Jargon
12
— Deterministic importers
– Ensure that when importing an Asset, the Import Result is
the same given all the dependencies are the same
– Same across machines
– Very important for Caching data remotely
AssetDatabase Jargon
13
The AssetDatabase
— AssetDatabase split into 2 Databases
– Source Asset Database
– Artifact Database
— Memory mapped Databases
– Transactional, so harder to corrupt
14
Source Asset Database
— Contains information about your source assets
– Last modified date
– 128 bit Hash of source file
– GUIDs
– Other meta-information
15
Artifact Database
— Information about the import results
— Each entry contains
– Import dependency information
– Artifact meta information
– List of artifact file paths
– .info files
– .res files
Ready for Refresh!
16
17
18
There are multiple ways to trigger a refresh
– Auto-refresh
– Assets -> Refresh (Menu Item + Shortcut)
– From C#: AssetDatabase.Refresh();
– Various APIs calls that trigger a Refresh internally
What is a Refresh?
19
Triggering a Refresh
— Auto-refresh
– Special, only Refresh that Forces Synchronization
20
— Assets -> Refresh (Menu Item or Shortcut)
Triggering a Refresh
21
— From C#:
– AssetDatabase.Refresh();
public void Foo()
{
...
AssetDatabase.Refresh();
...
}
1
2
3
4
5
6
Triggering a Refresh
22
— Various APIs calls that trigger a Refresh internally
– Internal filters limit importing to specific Assets
public void Bar()
{
...
AssetDatabase.CreateAsset(asset, path);
...
AssetDatabase.ImportAsset(otherPath);
...
}
1
2
3
4
5
6
7
8
Triggering a Refresh
23
AssetDatabase.Refresh()
— Scan
— Categorize Assets
— Compile Scripts
— Import
— Post Process All Assets
24
— Enumerate files in Assets folder
– Detect changed files
– Hash content of changed files, store in
database
— Enumerate all files Packages folder
– Hash content of files, store in database
– Only done once, as Packages are immutable
Assets/
hash(content)
com.unity.ai/
com.unity.foo-bar/
hash(content)
hash(content)
hash(content)
Scan
25
— Generate a list of all relevant assets
— Upcoming feature: Directory Monitor
– Talk tomorrow by Jonas Drewsen: Speed up your asset
imports for big projects
Scan
26
— Purpose
– Determine if the dependencies of an Asset are up to date
– Usual split by
– Source Code
– Source Assets
– Necessary to have this split as code may affect imports
— Matching the Asset
– Static dependencies
– Dynamic Dependencies
Categorize Assets
27
— What are static dependencies?
– Things we know ahead of time
Static Dependencies
Static Dependencies
Asset Name
Importer ID
Importer Version
Build Target
28
Dynamic Dependencies
— What are dynamic dependencies?
– Dependencies we don’t know ahead of time
29
— A Nested Prefab
— Prefab03.prefab
– GameObject
– PrefabInstance (Prefab02)
— Prefab02.prefab
– GameObject
– PrefabInstance (Prefab01)
— Prefab01.prefab
– GameObject
Dynamic Dependencies
— Prefab 01 is now a Dynamic
Dependency of Prefab03
30
Dynamic Dependencies
Dynamic Dependencies
Color Space
Graphics API
Scripting Runtime
Version
Hash of Source Asset
Texture Compression
State
31
Metal
OpenGL
Vulkan
DirectX
...
Dynamic Dependencies
Dynamic Dependencies
Color Space
Graphics API
Scripting Runtime
Version
Hash of Source Asset
Texture Compression
State
32
Dynamic Dependencies
Dynamic Dependencies
Color Space
Graphics API
Scripting Runtime
Version
Hash of Source Asset
Texture Compression
State
33
Texture Compression
{
Uncompressed,
Compressed,
NotSupported
}
Dynamic Dependencies
Dynamic Dependencies
Color Space
Graphics API
Scripting Runtime
Version
Hash of Source Asset
Texture Compression
State
34
Source Asset:
41 73 73 65 74
44 61 74 61 62
61 73 65 2E 47
65 74 42 75 68
Hashing
Hash of Source Asset:
0a0086cbb18a3416b8
8c52e7b8a6fc84
Dynamic Dependencies
Dynamic Dependencies
Color Space
Graphics API
Scripting Runtime
Version
Hash of Source Asset
Texture Compression
State
35
— Give Script changes to the Script Compilation
Pipeline
– Plugins (*.dll)
– Assembly Definition files (*.asmdef)
– Assembly Reference files (*.asmref)
– Scripts (*.cs)
– Response Files (*.rsp)
Compile & Assembly Reload
36
— Assembly Reload
– Restart Refresh if necessary
– Here’s where you can start seeing see Iteration … on
the progress bar
Compile & Assembly Reload
37
— Native Importers
— Scripted Importers
— Preprocessor callbacks
— Postprocessor callbacks
Import
38
— You receive
– Imported Assets
– Deleted Assets
– Moved Assets & Moved From Asset Paths
— Changes here can cause unintentional iterations to be triggered
– AssetDatabase.ForceReserializeAssets()
– AssetImporter.SaveAndReimport()
Post Process All Assets
39
At least for the Refresh side of things!
— Scan
— Categorize Assets
— Compile Scripts
— Import
— Post Process All Assets
That’s all!
40
41
— QA found a bug on Android
– Your project is currently on PC
– Take at least ~30mins to switch platforms
— QA found another bug on PC!
– Switch back to PC
– Wait at least another ~30mins to re-import project
— Light at the end of the tunnel!
Scenario
42
— Any changes to dependencies will result in a new file
– Switching platforms changes (usually) one dependency
– Library folder made up of import results with Hash as their file name
– We keep Import Results around
– With occasional garbage collection (upon restart of Unity)
— The in memory database tracks these hashes
Hash is the File Name
43
Static Dependencies
Asset Name
Importer ID
Importer Version
Build Target
Dynamic Dependencies
Color Space
Graphics API
Scripting Runtime
Version
Hash of Source Asset
Texture Compression
State
Gathering Dependencies
44
Static Dependencies
Build Target*
Dynamic Dependencies
Hashing
Content Hash:
9c261a0511b00763080511c82b43dd93
Gathering Dependencies
45
Artifacts/
Library/
9c261a0511b00763080511c82b43dd93
9c/
Gathering Dependencies
Static Dependencies
Build Target*
Dynamic Dependencies
Hashing
Content Hash:
9c261a0511b00763080511c82b43dd93
46
— Requirements
– Already imported once
— Also works with Cache Server
Fast Platform Switch
47
48
— What happens to the import result if I modify my asset?
– With AssetDatabase V1
– Artifact path was based on the GUID
– Example:
– Prefab03.prefab.meta
– guid: f0374bcd9f7348540a29154e223c8ff1
Tips & Tricks of the AssetDatabase
Modify
Prefab03.prefab
Artifacts/
Library/
f0374bcd9f7...
f0/
Artifacts/
Library/
f0374bcd9f7...
f0/
49
— What happens to the import result if I modify my asset?
– With AssetDatabase V2
– Artifact path is the Content Hash
– If your asset changes, a new File will be generated
– Content Hash: 61cd23f1db101a0956eb0a15ff67fbb1
Tips & Tricks of the AssetDatabase
Artifacts/
Library/
a5f54bcd9f7...
a5/
Modify
Prefab03.prefab
Artifacts/
Library/
61cd23f1db...
61/
5050
— Experimental feature: AssetDatabase Counters
– Expose more information the state of the AssetDatabase
– Import Counters
– Assets imported (application lifetime)
– Number of refreshes
– Number of Assembly Reloads
– Delta & Total for each field
– Cache Server counters available too!
Tips & Tricks of the AssetDatabase
51
— AssetDatabase Counters Usage
using UnityEditor.Experimental;
public void FooBar()
{
var countersBefore = AssetDatabaseExperimental.counters.import;
var totalImported = countersBefore.imported.total;
Debug.Log("Total imported assets: " + totalImported);
var textAsset = new TextAsset("test");
var savePath = "Assets/textAsset.txt";
AssetDatabase.CreateAsset(textAsset, savePath);
var countersAfter = AssetDatabaseExperimental.counters.import;
totalImported = countersAfter.imported.total;
Debug.Log("Newly imported asset count: " + totalImported);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Tips & Tricks of the AssetDatabase
52
— AssetDatabase.CreateAsset()
- Slow because of callbacks
public void Bar(Object[] assets, string[] paths)
{
for(int i = 0; i < assets.Length; ++i)
{
AssetDatabase.CreateAsset(assets[i], paths[i]);
}
...
}
1
2
3
4
5
6
7
8
- Main Issue
- Callbacks being triggered
- OnPostProcessAllAssets called N times
- Pre/PostProcessor Callbacks invoked
Tips & Tricks of the AssetDatabase
53
Batching CreateAsset
public void Baz(Object[] assets, string[] paths)
{
try
{
AssetDatabase.StartAssetEditing();
for(int i = 0; i < assets.Length; ++i)
AssetDatabase.CreateAsset(assets[i], paths[i]);
}
finally
{
AssetDatabase.StopAssetEditing();
}
...
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
- StartAssetEditing puts AssetDatabase into wait state
- StopAssetEditing tells AssetDatabase an import can begin
- Pending assets are imported, Callbacks are triggered
Tips & Tricks of the AssetDatabase
— For certain workflows, you might want to ignore a folder and its
contents
– Adding a “~” at the end of a folder name will ignore it and its contents
54
Materials/
Assets/
Materials~/
Will be imported
Will be ignored
Tips & Tricks of the AssetDatabase
55
— Asset Database Rewritten
— Refresh and Importing
— Fast Platform Switch
— Tips and tricks
— Now available on 2019.3 Beta!
Summary
Javier Abud
Twitter: @jav_dev

More Related Content

What's hot

Stable SSAO in Battlefield 3 with Selective Temporal Filtering
Stable SSAO in Battlefield 3 with Selective Temporal FilteringStable SSAO in Battlefield 3 with Selective Temporal Filtering
Stable SSAO in Battlefield 3 with Selective Temporal FilteringElectronic Arts / DICE
 
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術Unity Technologies Japan K.K.
 
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...Unity Technologies
 
West Coast DevCon 2014: The Slate UI Framework (Part 1) - Introduction
West Coast DevCon 2014: The Slate UI Framework (Part 1) - IntroductionWest Coast DevCon 2014: The Slate UI Framework (Part 1) - Introduction
West Coast DevCon 2014: The Slate UI Framework (Part 1) - IntroductionGerke Max Preussner
 
그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , Batch! Let's take a look at Batching! -...
그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , Batch! Let's take a look at Batching! -...그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , Batch! Let's take a look at Batching! -...
그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , Batch! Let's take a look at Batching! -...ozlael ozlael
 
Building a turn-based game prototype using ECS - Unite Copenhagen 2019
Building a turn-based game prototype using ECS - Unite Copenhagen 2019Building a turn-based game prototype using ECS - Unite Copenhagen 2019
Building a turn-based game prototype using ECS - Unite Copenhagen 2019Unity Technologies
 
Best practices: Async vs. coroutines - Unite Copenhagen 2019
Best practices: Async vs. coroutines - Unite Copenhagen 2019Best practices: Async vs. coroutines - Unite Copenhagen 2019
Best practices: Async vs. coroutines - Unite Copenhagen 2019Unity Technologies
 
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説Unity Technologies Japan K.K.
 
The Guerrilla Guide to Game Code
The Guerrilla Guide to Game CodeThe Guerrilla Guide to Game Code
The Guerrilla Guide to Game CodeGuerrilla
 
Game development Pre-Production
Game development Pre-ProductionGame development Pre-Production
Game development Pre-ProductionKevin Duggan
 
Deep Dive async/await in Unity with UniTask(EN)
Deep Dive async/await in Unity with UniTask(EN)Deep Dive async/await in Unity with UniTask(EN)
Deep Dive async/await in Unity with UniTask(EN)Yoshifumi Kawai
 
Unreal python
Unreal pythonUnreal python
Unreal pythonTonyCms
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>エピック・ゲームズ・ジャパン Epic Games Japan
 
[IGC 2016] 골드로쉬 김현석 - 왜 항상 기획자는 욕을 들어야만 하는 걸까? –게임 기획의 포지션 변화-
[IGC 2016] 골드로쉬 김현석 - 왜 항상 기획자는 욕을 들어야만 하는 걸까? –게임 기획의 포지션 변화-[IGC 2016] 골드로쉬 김현석 - 왜 항상 기획자는 욕을 들어야만 하는 걸까? –게임 기획의 포지션 변화-
[IGC 2016] 골드로쉬 김현석 - 왜 항상 기획자는 욕을 들어야만 하는 걸까? –게임 기획의 포지션 변화-강 민우
 
【Unite Tokyo 2018】実践的なパフォーマンス分析と最適化
【Unite Tokyo 2018】実践的なパフォーマンス分析と最適化【Unite Tokyo 2018】実践的なパフォーマンス分析と最適化
【Unite Tokyo 2018】実践的なパフォーマンス分析と最適化Unity Technologies Japan K.K.
 
Putting the AI Back Into Air: Navigating the Air Space of Horizon Zero Dawn
Putting the AI Back Into Air: Navigating the Air Space of Horizon Zero DawnPutting the AI Back Into Air: Navigating the Air Space of Horizon Zero Dawn
Putting the AI Back Into Air: Navigating the Air Space of Horizon Zero DawnGuerrilla
 
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017devCAT Studio, NEXON
 
The Next Generation of PhyreEngine
The Next Generation of PhyreEngineThe Next Generation of PhyreEngine
The Next Generation of PhyreEngineSlide_N
 

What's hot (20)

Stable SSAO in Battlefield 3 with Selective Temporal Filtering
Stable SSAO in Battlefield 3 with Selective Temporal FilteringStable SSAO in Battlefield 3 with Selective Temporal Filtering
Stable SSAO in Battlefield 3 with Selective Temporal Filtering
 
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
 
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...
 
West Coast DevCon 2014: The Slate UI Framework (Part 1) - Introduction
West Coast DevCon 2014: The Slate UI Framework (Part 1) - IntroductionWest Coast DevCon 2014: The Slate UI Framework (Part 1) - Introduction
West Coast DevCon 2014: The Slate UI Framework (Part 1) - Introduction
 
그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , Batch! Let's take a look at Batching! -...
그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , Batch! Let's take a look at Batching! -...그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , Batch! Let's take a look at Batching! -...
그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , Batch! Let's take a look at Batching! -...
 
Game balancing
Game balancingGame balancing
Game balancing
 
Building a turn-based game prototype using ECS - Unite Copenhagen 2019
Building a turn-based game prototype using ECS - Unite Copenhagen 2019Building a turn-based game prototype using ECS - Unite Copenhagen 2019
Building a turn-based game prototype using ECS - Unite Copenhagen 2019
 
Best practices: Async vs. coroutines - Unite Copenhagen 2019
Best practices: Async vs. coroutines - Unite Copenhagen 2019Best practices: Async vs. coroutines - Unite Copenhagen 2019
Best practices: Async vs. coroutines - Unite Copenhagen 2019
 
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
 
The Guerrilla Guide to Game Code
The Guerrilla Guide to Game CodeThe Guerrilla Guide to Game Code
The Guerrilla Guide to Game Code
 
Game development Pre-Production
Game development Pre-ProductionGame development Pre-Production
Game development Pre-Production
 
Deep Dive async/await in Unity with UniTask(EN)
Deep Dive async/await in Unity with UniTask(EN)Deep Dive async/await in Unity with UniTask(EN)
Deep Dive async/await in Unity with UniTask(EN)
 
Unreal python
Unreal pythonUnreal python
Unreal python
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
 
[IGC 2016] 골드로쉬 김현석 - 왜 항상 기획자는 욕을 들어야만 하는 걸까? –게임 기획의 포지션 변화-
[IGC 2016] 골드로쉬 김현석 - 왜 항상 기획자는 욕을 들어야만 하는 걸까? –게임 기획의 포지션 변화-[IGC 2016] 골드로쉬 김현석 - 왜 항상 기획자는 욕을 들어야만 하는 걸까? –게임 기획의 포지션 변화-
[IGC 2016] 골드로쉬 김현석 - 왜 항상 기획자는 욕을 들어야만 하는 걸까? –게임 기획의 포지션 변화-
 
【Unite Tokyo 2018】実践的なパフォーマンス分析と最適化
【Unite Tokyo 2018】実践的なパフォーマンス分析と最適化【Unite Tokyo 2018】実践的なパフォーマンス分析と最適化
【Unite Tokyo 2018】実践的なパフォーマンス分析と最適化
 
Putting the AI Back Into Air: Navigating the Air Space of Horizon Zero Dawn
Putting the AI Back Into Air: Navigating the Air Space of Horizon Zero DawnPutting the AI Back Into Air: Navigating the Air Space of Horizon Zero Dawn
Putting the AI Back Into Air: Navigating the Air Space of Horizon Zero Dawn
 
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017
 
The Next Generation of PhyreEngine
The Next Generation of PhyreEngineThe Next Generation of PhyreEngine
The Next Generation of PhyreEngine
 
DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3
 

Similar to Refresh what you know about AssetDatabase.Refresh()- Unite Copenhagen 2019

PCIC Data Portal 2.0
PCIC Data Portal 2.0PCIC Data Portal 2.0
PCIC Data Portal 2.0James Hiebert
 
Paris Data Geek - Spark Streaming
Paris Data Geek - Spark Streaming Paris Data Geek - Spark Streaming
Paris Data Geek - Spark Streaming Djamel Zouaoui
 
Storage Engine Considerations for Your Apache Spark Applications with Mladen ...
Storage Engine Considerations for Your Apache Spark Applications with Mladen ...Storage Engine Considerations for Your Apache Spark Applications with Mladen ...
Storage Engine Considerations for Your Apache Spark Applications with Mladen ...Spark Summit
 
Pivotal Real Time Data Stream Analytics
Pivotal Real Time Data Stream AnalyticsPivotal Real Time Data Stream Analytics
Pivotal Real Time Data Stream Analyticskgshukla
 
Logging for Production Systems in The Container Era
Logging for Production Systems in The Container EraLogging for Production Systems in The Container Era
Logging for Production Systems in The Container EraSadayuki Furuhashi
 
Creating a scalable & cost efficient BI infrastructure for a startup in the A...
Creating a scalable & cost efficient BI infrastructure for a startup in the A...Creating a scalable & cost efficient BI infrastructure for a startup in the A...
Creating a scalable & cost efficient BI infrastructure for a startup in the A...vcrisan
 
HUG France Feb 2016 - Migration de données structurées entre Hadoop et RDBMS ...
HUG France Feb 2016 - Migration de données structurées entre Hadoop et RDBMS ...HUG France Feb 2016 - Migration de données structurées entre Hadoop et RDBMS ...
HUG France Feb 2016 - Migration de données structurées entre Hadoop et RDBMS ...Modern Data Stack France
 
What's New in Apache Spark 2.3 & Why Should You Care
What's New in Apache Spark 2.3 & Why Should You CareWhat's New in Apache Spark 2.3 & Why Should You Care
What's New in Apache Spark 2.3 & Why Should You CareDatabricks
 
Technical Overview of Apache Drill by Jacques Nadeau
Technical Overview of Apache Drill by Jacques NadeauTechnical Overview of Apache Drill by Jacques Nadeau
Technical Overview of Apache Drill by Jacques NadeauMapR Technologies
 
Migrating structured data between Hadoop and RDBMS
Migrating structured data between Hadoop and RDBMSMigrating structured data between Hadoop and RDBMS
Migrating structured data between Hadoop and RDBMSBouquet
 
High quality ap is with api platform
High quality ap is with api platformHigh quality ap is with api platform
High quality ap is with api platformNelson Kopliku
 
Ducksboard - A real-time data oriented webservice architecture
Ducksboard - A real-time data oriented webservice architectureDucksboard - A real-time data oriented webservice architecture
Ducksboard - A real-time data oriented webservice architectureDucksboard
 
Real time analytics at uber @ strata data 2019
Real time analytics at uber @ strata data 2019Real time analytics at uber @ strata data 2019
Real time analytics at uber @ strata data 2019Zhenxiao Luo
 
Building Scalable Data Pipelines - 2016 DataPalooza Seattle
Building Scalable Data Pipelines - 2016 DataPalooza SeattleBuilding Scalable Data Pipelines - 2016 DataPalooza Seattle
Building Scalable Data Pipelines - 2016 DataPalooza SeattleEvan Chan
 
Four Things to Know About Reliable Spark Streaming with Typesafe and Databricks
Four Things to Know About Reliable Spark Streaming with Typesafe and DatabricksFour Things to Know About Reliable Spark Streaming with Typesafe and Databricks
Four Things to Know About Reliable Spark Streaming with Typesafe and DatabricksLegacy Typesafe (now Lightbend)
 
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDKBigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDKnagachika t
 

Similar to Refresh what you know about AssetDatabase.Refresh()- Unite Copenhagen 2019 (20)

20170126 big data processing
20170126 big data processing20170126 big data processing
20170126 big data processing
 
PCIC Data Portal 2.0
PCIC Data Portal 2.0PCIC Data Portal 2.0
PCIC Data Portal 2.0
 
Paris Data Geek - Spark Streaming
Paris Data Geek - Spark Streaming Paris Data Geek - Spark Streaming
Paris Data Geek - Spark Streaming
 
Storage Engine Considerations for Your Apache Spark Applications with Mladen ...
Storage Engine Considerations for Your Apache Spark Applications with Mladen ...Storage Engine Considerations for Your Apache Spark Applications with Mladen ...
Storage Engine Considerations for Your Apache Spark Applications with Mladen ...
 
Pivotal Real Time Data Stream Analytics
Pivotal Real Time Data Stream AnalyticsPivotal Real Time Data Stream Analytics
Pivotal Real Time Data Stream Analytics
 
Logging for Production Systems in The Container Era
Logging for Production Systems in The Container EraLogging for Production Systems in The Container Era
Logging for Production Systems in The Container Era
 
Creating a scalable & cost efficient BI infrastructure for a startup in the A...
Creating a scalable & cost efficient BI infrastructure for a startup in the A...Creating a scalable & cost efficient BI infrastructure for a startup in the A...
Creating a scalable & cost efficient BI infrastructure for a startup in the A...
 
HUG France Feb 2016 - Migration de données structurées entre Hadoop et RDBMS ...
HUG France Feb 2016 - Migration de données structurées entre Hadoop et RDBMS ...HUG France Feb 2016 - Migration de données structurées entre Hadoop et RDBMS ...
HUG France Feb 2016 - Migration de données structurées entre Hadoop et RDBMS ...
 
What's New in Apache Spark 2.3 & Why Should You Care
What's New in Apache Spark 2.3 & Why Should You CareWhat's New in Apache Spark 2.3 & Why Should You Care
What's New in Apache Spark 2.3 & Why Should You Care
 
Technical Overview of Apache Drill by Jacques Nadeau
Technical Overview of Apache Drill by Jacques NadeauTechnical Overview of Apache Drill by Jacques Nadeau
Technical Overview of Apache Drill by Jacques Nadeau
 
Migrating structured data between Hadoop and RDBMS
Migrating structured data between Hadoop and RDBMSMigrating structured data between Hadoop and RDBMS
Migrating structured data between Hadoop and RDBMS
 
Gdce 2010 dx11
Gdce 2010 dx11Gdce 2010 dx11
Gdce 2010 dx11
 
Remix
RemixRemix
Remix
 
High quality ap is with api platform
High quality ap is with api platformHigh quality ap is with api platform
High quality ap is with api platform
 
Ducksboard - A real-time data oriented webservice architecture
Ducksboard - A real-time data oriented webservice architectureDucksboard - A real-time data oriented webservice architecture
Ducksboard - A real-time data oriented webservice architecture
 
Real time analytics at uber @ strata data 2019
Real time analytics at uber @ strata data 2019Real time analytics at uber @ strata data 2019
Real time analytics at uber @ strata data 2019
 
Spark streaming
Spark streamingSpark streaming
Spark streaming
 
Building Scalable Data Pipelines - 2016 DataPalooza Seattle
Building Scalable Data Pipelines - 2016 DataPalooza SeattleBuilding Scalable Data Pipelines - 2016 DataPalooza Seattle
Building Scalable Data Pipelines - 2016 DataPalooza Seattle
 
Four Things to Know About Reliable Spark Streaming with Typesafe and Databricks
Four Things to Know About Reliable Spark Streaming with Typesafe and DatabricksFour Things to Know About Reliable Spark Streaming with Typesafe and Databricks
Four Things to Know About Reliable Spark Streaming with Typesafe and Databricks
 
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDKBigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
 

More from Unity Technologies

Build Immersive Worlds in Virtual Reality
Build Immersive Worlds  in Virtual RealityBuild Immersive Worlds  in Virtual Reality
Build Immersive Worlds in Virtual RealityUnity Technologies
 
Augmenting reality: Bring digital objects into the real world
Augmenting reality: Bring digital objects into the real worldAugmenting reality: Bring digital objects into the real world
Augmenting reality: Bring digital objects into the real worldUnity Technologies
 
Let’s get real: An introduction to AR, VR, MR, XR and more
Let’s get real: An introduction to AR, VR, MR, XR and moreLet’s get real: An introduction to AR, VR, MR, XR and more
Let’s get real: An introduction to AR, VR, MR, XR and moreUnity Technologies
 
Using synthetic data for computer vision model training
Using synthetic data for computer vision model trainingUsing synthetic data for computer vision model training
Using synthetic data for computer vision model trainingUnity Technologies
 
The Tipping Point: How Virtual Experiences Are Transforming Global Industries
The Tipping Point: How Virtual Experiences Are Transforming Global IndustriesThe Tipping Point: How Virtual Experiences Are Transforming Global Industries
The Tipping Point: How Virtual Experiences Are Transforming Global IndustriesUnity Technologies
 
Unity Roadmap 2020: Live games
Unity Roadmap 2020: Live games Unity Roadmap 2020: Live games
Unity Roadmap 2020: Live games Unity Technologies
 
Unity Roadmap 2020: Core Engine & Creator Tools
Unity Roadmap 2020: Core Engine & Creator ToolsUnity Roadmap 2020: Core Engine & Creator Tools
Unity Roadmap 2020: Core Engine & Creator ToolsUnity Technologies
 
How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...
How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...
How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...Unity Technologies
 
Unity XR platform has a new architecture – Unite Copenhagen 2019
Unity XR platform has a new architecture – Unite Copenhagen 2019Unity XR platform has a new architecture – Unite Copenhagen 2019
Unity XR platform has a new architecture – Unite Copenhagen 2019Unity Technologies
 
Turn Revit Models into real-time 3D experiences
Turn Revit Models into real-time 3D experiencesTurn Revit Models into real-time 3D experiences
Turn Revit Models into real-time 3D experiencesUnity Technologies
 
How Daimler uses mobile mixed realities for training and sales - Unite Copenh...
How Daimler uses mobile mixed realities for training and sales - Unite Copenh...How Daimler uses mobile mixed realities for training and sales - Unite Copenh...
How Daimler uses mobile mixed realities for training and sales - Unite Copenh...Unity Technologies
 
How Volvo embraced real-time 3D and shook up the auto industry- Unite Copenha...
How Volvo embraced real-time 3D and shook up the auto industry- Unite Copenha...How Volvo embraced real-time 3D and shook up the auto industry- Unite Copenha...
How Volvo embraced real-time 3D and shook up the auto industry- Unite Copenha...Unity Technologies
 
QA your code: The new Unity Test Framework – Unite Copenhagen 2019
QA your code: The new Unity Test Framework – Unite Copenhagen 2019QA your code: The new Unity Test Framework – Unite Copenhagen 2019
QA your code: The new Unity Test Framework – Unite Copenhagen 2019Unity Technologies
 
Engineering.com webinar: Real-time 3D and digital twins: The power of a virtu...
Engineering.com webinar: Real-time 3D and digital twins: The power of a virtu...Engineering.com webinar: Real-time 3D and digital twins: The power of a virtu...
Engineering.com webinar: Real-time 3D and digital twins: The power of a virtu...Unity Technologies
 
Supplying scalable VR training applications with Innoactive - Unite Copenhage...
Supplying scalable VR training applications with Innoactive - Unite Copenhage...Supplying scalable VR training applications with Innoactive - Unite Copenhage...
Supplying scalable VR training applications with Innoactive - Unite Copenhage...Unity Technologies
 
XR and real-time 3D in automotive digital marketing strategies | Visionaries ...
XR and real-time 3D in automotive digital marketing strategies | Visionaries ...XR and real-time 3D in automotive digital marketing strategies | Visionaries ...
XR and real-time 3D in automotive digital marketing strategies | Visionaries ...Unity Technologies
 
Real-time CG animation in Unity: unpacking the Sherman project - Unite Copenh...
Real-time CG animation in Unity: unpacking the Sherman project - Unite Copenh...Real-time CG animation in Unity: unpacking the Sherman project - Unite Copenh...
Real-time CG animation in Unity: unpacking the Sherman project - Unite Copenh...Unity Technologies
 
Creating next-gen VR and MR experiences using Varjo VR-1 and XR-1 - Unite Cop...
Creating next-gen VR and MR experiences using Varjo VR-1 and XR-1 - Unite Cop...Creating next-gen VR and MR experiences using Varjo VR-1 and XR-1 - Unite Cop...
Creating next-gen VR and MR experiences using Varjo VR-1 and XR-1 - Unite Cop...Unity Technologies
 
What's ahead for film and animation with Unity 2020 - Unite Copenhagen 2019
What's ahead for film and animation with Unity 2020 - Unite Copenhagen 2019What's ahead for film and animation with Unity 2020 - Unite Copenhagen 2019
What's ahead for film and animation with Unity 2020 - Unite Copenhagen 2019Unity Technologies
 
How to Improve Visual Rendering Quality in VR - Unite Copenhagen 2019
How to Improve Visual Rendering Quality in VR - Unite Copenhagen 2019How to Improve Visual Rendering Quality in VR - Unite Copenhagen 2019
How to Improve Visual Rendering Quality in VR - Unite Copenhagen 2019Unity Technologies
 

More from Unity Technologies (20)

Build Immersive Worlds in Virtual Reality
Build Immersive Worlds  in Virtual RealityBuild Immersive Worlds  in Virtual Reality
Build Immersive Worlds in Virtual Reality
 
Augmenting reality: Bring digital objects into the real world
Augmenting reality: Bring digital objects into the real worldAugmenting reality: Bring digital objects into the real world
Augmenting reality: Bring digital objects into the real world
 
Let’s get real: An introduction to AR, VR, MR, XR and more
Let’s get real: An introduction to AR, VR, MR, XR and moreLet’s get real: An introduction to AR, VR, MR, XR and more
Let’s get real: An introduction to AR, VR, MR, XR and more
 
Using synthetic data for computer vision model training
Using synthetic data for computer vision model trainingUsing synthetic data for computer vision model training
Using synthetic data for computer vision model training
 
The Tipping Point: How Virtual Experiences Are Transforming Global Industries
The Tipping Point: How Virtual Experiences Are Transforming Global IndustriesThe Tipping Point: How Virtual Experiences Are Transforming Global Industries
The Tipping Point: How Virtual Experiences Are Transforming Global Industries
 
Unity Roadmap 2020: Live games
Unity Roadmap 2020: Live games Unity Roadmap 2020: Live games
Unity Roadmap 2020: Live games
 
Unity Roadmap 2020: Core Engine & Creator Tools
Unity Roadmap 2020: Core Engine & Creator ToolsUnity Roadmap 2020: Core Engine & Creator Tools
Unity Roadmap 2020: Core Engine & Creator Tools
 
How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...
How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...
How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...
 
Unity XR platform has a new architecture – Unite Copenhagen 2019
Unity XR platform has a new architecture – Unite Copenhagen 2019Unity XR platform has a new architecture – Unite Copenhagen 2019
Unity XR platform has a new architecture – Unite Copenhagen 2019
 
Turn Revit Models into real-time 3D experiences
Turn Revit Models into real-time 3D experiencesTurn Revit Models into real-time 3D experiences
Turn Revit Models into real-time 3D experiences
 
How Daimler uses mobile mixed realities for training and sales - Unite Copenh...
How Daimler uses mobile mixed realities for training and sales - Unite Copenh...How Daimler uses mobile mixed realities for training and sales - Unite Copenh...
How Daimler uses mobile mixed realities for training and sales - Unite Copenh...
 
How Volvo embraced real-time 3D and shook up the auto industry- Unite Copenha...
How Volvo embraced real-time 3D and shook up the auto industry- Unite Copenha...How Volvo embraced real-time 3D and shook up the auto industry- Unite Copenha...
How Volvo embraced real-time 3D and shook up the auto industry- Unite Copenha...
 
QA your code: The new Unity Test Framework – Unite Copenhagen 2019
QA your code: The new Unity Test Framework – Unite Copenhagen 2019QA your code: The new Unity Test Framework – Unite Copenhagen 2019
QA your code: The new Unity Test Framework – Unite Copenhagen 2019
 
Engineering.com webinar: Real-time 3D and digital twins: The power of a virtu...
Engineering.com webinar: Real-time 3D and digital twins: The power of a virtu...Engineering.com webinar: Real-time 3D and digital twins: The power of a virtu...
Engineering.com webinar: Real-time 3D and digital twins: The power of a virtu...
 
Supplying scalable VR training applications with Innoactive - Unite Copenhage...
Supplying scalable VR training applications with Innoactive - Unite Copenhage...Supplying scalable VR training applications with Innoactive - Unite Copenhage...
Supplying scalable VR training applications with Innoactive - Unite Copenhage...
 
XR and real-time 3D in automotive digital marketing strategies | Visionaries ...
XR and real-time 3D in automotive digital marketing strategies | Visionaries ...XR and real-time 3D in automotive digital marketing strategies | Visionaries ...
XR and real-time 3D in automotive digital marketing strategies | Visionaries ...
 
Real-time CG animation in Unity: unpacking the Sherman project - Unite Copenh...
Real-time CG animation in Unity: unpacking the Sherman project - Unite Copenh...Real-time CG animation in Unity: unpacking the Sherman project - Unite Copenh...
Real-time CG animation in Unity: unpacking the Sherman project - Unite Copenh...
 
Creating next-gen VR and MR experiences using Varjo VR-1 and XR-1 - Unite Cop...
Creating next-gen VR and MR experiences using Varjo VR-1 and XR-1 - Unite Cop...Creating next-gen VR and MR experiences using Varjo VR-1 and XR-1 - Unite Cop...
Creating next-gen VR and MR experiences using Varjo VR-1 and XR-1 - Unite Cop...
 
What's ahead for film and animation with Unity 2020 - Unite Copenhagen 2019
What's ahead for film and animation with Unity 2020 - Unite Copenhagen 2019What's ahead for film and animation with Unity 2020 - Unite Copenhagen 2019
What's ahead for film and animation with Unity 2020 - Unite Copenhagen 2019
 
How to Improve Visual Rendering Quality in VR - Unite Copenhagen 2019
How to Improve Visual Rendering Quality in VR - Unite Copenhagen 2019How to Improve Visual Rendering Quality in VR - Unite Copenhagen 2019
How to Improve Visual Rendering Quality in VR - Unite Copenhagen 2019
 

Recently uploaded

Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 

Recently uploaded (20)

Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 

Refresh what you know about AssetDatabase.Refresh()- Unite Copenhagen 2019

  • 1.
  • 2. 2 (What happens when you Refresh the AssetDatabase)
  • 3. Overview 3 Intro to new AssetDatabase What happens when you Refresh() Ideas behind Fast Platform Switch Tips and tricks of ADB Q&A!
  • 4. About me 4 Been making games since 2004 Have worked on PS2, Nintendo DS, MMORPGs for PC, many Flash Games, Android, iOS Been with the Asset Pipeline team for a year now
  • 5. 5
  • 6. Re-written AssetDatabase 6 — API Compatibility with Version 1 – Updated API reference to have more code examples! — Guiding Principles: – Determinism – Dependency tracking – Deterministic importers — Will mention Cache Server in this talk, but won’t go into too much detail – Supports dynamic dependencies
  • 7. AssetDatabase Jargon 7 — Import Results & Artifacts Artifacts/ Library/ 0a3d2c7a0e9410b7e6a0603db99202d2 9c261a0511b00763080511c82b43dd93 ... 0a/ 9c/ — This is what is stored in the Library folder — Terms are interchangeable
  • 8. AssetDatabase Jargon 8 — Hashing – In the context of the AssetDatabase – Taking an arbitrary data stream and producing a 128 bit Hash from it Array of bytes: 41 73 73 65 74 44 61 74 61 62 61 73 65 2E 47 65 74 42 75 69 6C 74 69 6E 45 78 74 72 61 52 65 73 6F 75 72 Hashing 128 bit Hash: 0a0086cbb18a3416 b88c52e7b8a6fc84
  • 9. 1 — Dependencies – Things we determine that could have an effect on the import result 9 Dependencies 2 3 ... Import Import Result AssetDatabase Jargon
  • 10. 10 — Dependency tracking – Static and Dynamic dependencies – More on these later 1 Dependencies 2 ... Import Import Result AssetDatabase Jargon
  • 11. 11 — Determinism – We give you the confidence that for a particular input the same output is always* produced public void NonDeterministic(Object asset, string path01, string path02) { AssetDatabase.CreateAsset(asset, path01); var result = AssetDatabase.MoveAsset(path01, path02); Debug.Log(result); } public void Deterministic(Object asset, string path01, string path02) { if (AssetDatabase.AssetPathToGUID(path01) != string.Empty) AssetDatabase.DeleteAsset(path01); if (AssetDatabase.AssetPathToGUID(path02) != string.Empty) AssetDatabase.DeleteAsset(path02); AssetDatabase.CreateAsset(asset, path01); var result = AssetDatabase.MoveAsset(path01, path02); Debug.Log(result); } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 AssetDatabase Jargon
  • 12. 12 — Deterministic importers – Ensure that when importing an Asset, the Import Result is the same given all the dependencies are the same – Same across machines – Very important for Caching data remotely AssetDatabase Jargon
  • 13. 13 The AssetDatabase — AssetDatabase split into 2 Databases – Source Asset Database – Artifact Database — Memory mapped Databases – Transactional, so harder to corrupt
  • 14. 14 Source Asset Database — Contains information about your source assets – Last modified date – 128 bit Hash of source file – GUIDs – Other meta-information
  • 15. 15 Artifact Database — Information about the import results — Each entry contains – Import dependency information – Artifact meta information – List of artifact file paths – .info files – .res files
  • 17. 17
  • 18. 18 There are multiple ways to trigger a refresh – Auto-refresh – Assets -> Refresh (Menu Item + Shortcut) – From C#: AssetDatabase.Refresh(); – Various APIs calls that trigger a Refresh internally What is a Refresh?
  • 19. 19 Triggering a Refresh — Auto-refresh – Special, only Refresh that Forces Synchronization
  • 20. 20 — Assets -> Refresh (Menu Item or Shortcut) Triggering a Refresh
  • 21. 21 — From C#: – AssetDatabase.Refresh(); public void Foo() { ... AssetDatabase.Refresh(); ... } 1 2 3 4 5 6 Triggering a Refresh
  • 22. 22 — Various APIs calls that trigger a Refresh internally – Internal filters limit importing to specific Assets public void Bar() { ... AssetDatabase.CreateAsset(asset, path); ... AssetDatabase.ImportAsset(otherPath); ... } 1 2 3 4 5 6 7 8 Triggering a Refresh
  • 23. 23 AssetDatabase.Refresh() — Scan — Categorize Assets — Compile Scripts — Import — Post Process All Assets
  • 24. 24 — Enumerate files in Assets folder – Detect changed files – Hash content of changed files, store in database — Enumerate all files Packages folder – Hash content of files, store in database – Only done once, as Packages are immutable Assets/ hash(content) com.unity.ai/ com.unity.foo-bar/ hash(content) hash(content) hash(content) Scan
  • 25. 25 — Generate a list of all relevant assets — Upcoming feature: Directory Monitor – Talk tomorrow by Jonas Drewsen: Speed up your asset imports for big projects Scan
  • 26. 26 — Purpose – Determine if the dependencies of an Asset are up to date – Usual split by – Source Code – Source Assets – Necessary to have this split as code may affect imports — Matching the Asset – Static dependencies – Dynamic Dependencies Categorize Assets
  • 27. 27 — What are static dependencies? – Things we know ahead of time Static Dependencies Static Dependencies Asset Name Importer ID Importer Version Build Target
  • 28. 28 Dynamic Dependencies — What are dynamic dependencies? – Dependencies we don’t know ahead of time
  • 29. 29 — A Nested Prefab — Prefab03.prefab – GameObject – PrefabInstance (Prefab02) — Prefab02.prefab – GameObject – PrefabInstance (Prefab01) — Prefab01.prefab – GameObject Dynamic Dependencies — Prefab 01 is now a Dynamic Dependency of Prefab03
  • 30. 30 Dynamic Dependencies Dynamic Dependencies Color Space Graphics API Scripting Runtime Version Hash of Source Asset Texture Compression State
  • 31. 31 Metal OpenGL Vulkan DirectX ... Dynamic Dependencies Dynamic Dependencies Color Space Graphics API Scripting Runtime Version Hash of Source Asset Texture Compression State
  • 32. 32 Dynamic Dependencies Dynamic Dependencies Color Space Graphics API Scripting Runtime Version Hash of Source Asset Texture Compression State
  • 33. 33 Texture Compression { Uncompressed, Compressed, NotSupported } Dynamic Dependencies Dynamic Dependencies Color Space Graphics API Scripting Runtime Version Hash of Source Asset Texture Compression State
  • 34. 34 Source Asset: 41 73 73 65 74 44 61 74 61 62 61 73 65 2E 47 65 74 42 75 68 Hashing Hash of Source Asset: 0a0086cbb18a3416b8 8c52e7b8a6fc84 Dynamic Dependencies Dynamic Dependencies Color Space Graphics API Scripting Runtime Version Hash of Source Asset Texture Compression State
  • 35. 35 — Give Script changes to the Script Compilation Pipeline – Plugins (*.dll) – Assembly Definition files (*.asmdef) – Assembly Reference files (*.asmref) – Scripts (*.cs) – Response Files (*.rsp) Compile & Assembly Reload
  • 36. 36 — Assembly Reload – Restart Refresh if necessary – Here’s where you can start seeing see Iteration … on the progress bar Compile & Assembly Reload
  • 37. 37 — Native Importers — Scripted Importers — Preprocessor callbacks — Postprocessor callbacks Import
  • 38. 38 — You receive – Imported Assets – Deleted Assets – Moved Assets & Moved From Asset Paths — Changes here can cause unintentional iterations to be triggered – AssetDatabase.ForceReserializeAssets() – AssetImporter.SaveAndReimport() Post Process All Assets
  • 39. 39 At least for the Refresh side of things! — Scan — Categorize Assets — Compile Scripts — Import — Post Process All Assets That’s all!
  • 40. 40
  • 41. 41 — QA found a bug on Android – Your project is currently on PC – Take at least ~30mins to switch platforms — QA found another bug on PC! – Switch back to PC – Wait at least another ~30mins to re-import project — Light at the end of the tunnel! Scenario
  • 42. 42 — Any changes to dependencies will result in a new file – Switching platforms changes (usually) one dependency – Library folder made up of import results with Hash as their file name – We keep Import Results around – With occasional garbage collection (upon restart of Unity) — The in memory database tracks these hashes Hash is the File Name
  • 43. 43 Static Dependencies Asset Name Importer ID Importer Version Build Target Dynamic Dependencies Color Space Graphics API Scripting Runtime Version Hash of Source Asset Texture Compression State Gathering Dependencies
  • 44. 44 Static Dependencies Build Target* Dynamic Dependencies Hashing Content Hash: 9c261a0511b00763080511c82b43dd93 Gathering Dependencies
  • 45. 45 Artifacts/ Library/ 9c261a0511b00763080511c82b43dd93 9c/ Gathering Dependencies Static Dependencies Build Target* Dynamic Dependencies Hashing Content Hash: 9c261a0511b00763080511c82b43dd93
  • 46. 46 — Requirements – Already imported once — Also works with Cache Server Fast Platform Switch
  • 47. 47
  • 48. 48 — What happens to the import result if I modify my asset? – With AssetDatabase V1 – Artifact path was based on the GUID – Example: – Prefab03.prefab.meta – guid: f0374bcd9f7348540a29154e223c8ff1 Tips & Tricks of the AssetDatabase Modify Prefab03.prefab Artifacts/ Library/ f0374bcd9f7... f0/ Artifacts/ Library/ f0374bcd9f7... f0/
  • 49. 49 — What happens to the import result if I modify my asset? – With AssetDatabase V2 – Artifact path is the Content Hash – If your asset changes, a new File will be generated – Content Hash: 61cd23f1db101a0956eb0a15ff67fbb1 Tips & Tricks of the AssetDatabase Artifacts/ Library/ a5f54bcd9f7... a5/ Modify Prefab03.prefab Artifacts/ Library/ 61cd23f1db... 61/
  • 50. 5050 — Experimental feature: AssetDatabase Counters – Expose more information the state of the AssetDatabase – Import Counters – Assets imported (application lifetime) – Number of refreshes – Number of Assembly Reloads – Delta & Total for each field – Cache Server counters available too! Tips & Tricks of the AssetDatabase
  • 51. 51 — AssetDatabase Counters Usage using UnityEditor.Experimental; public void FooBar() { var countersBefore = AssetDatabaseExperimental.counters.import; var totalImported = countersBefore.imported.total; Debug.Log("Total imported assets: " + totalImported); var textAsset = new TextAsset("test"); var savePath = "Assets/textAsset.txt"; AssetDatabase.CreateAsset(textAsset, savePath); var countersAfter = AssetDatabaseExperimental.counters.import; totalImported = countersAfter.imported.total; Debug.Log("Newly imported asset count: " + totalImported); } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Tips & Tricks of the AssetDatabase
  • 52. 52 — AssetDatabase.CreateAsset() - Slow because of callbacks public void Bar(Object[] assets, string[] paths) { for(int i = 0; i < assets.Length; ++i) { AssetDatabase.CreateAsset(assets[i], paths[i]); } ... } 1 2 3 4 5 6 7 8 - Main Issue - Callbacks being triggered - OnPostProcessAllAssets called N times - Pre/PostProcessor Callbacks invoked Tips & Tricks of the AssetDatabase
  • 53. 53 Batching CreateAsset public void Baz(Object[] assets, string[] paths) { try { AssetDatabase.StartAssetEditing(); for(int i = 0; i < assets.Length; ++i) AssetDatabase.CreateAsset(assets[i], paths[i]); } finally { AssetDatabase.StopAssetEditing(); } ... } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 - StartAssetEditing puts AssetDatabase into wait state - StopAssetEditing tells AssetDatabase an import can begin - Pending assets are imported, Callbacks are triggered Tips & Tricks of the AssetDatabase
  • 54. — For certain workflows, you might want to ignore a folder and its contents – Adding a “~” at the end of a folder name will ignore it and its contents 54 Materials/ Assets/ Materials~/ Will be imported Will be ignored Tips & Tricks of the AssetDatabase
  • 55. 55 — Asset Database Rewritten — Refresh and Importing — Fast Platform Switch — Tips and tricks — Now available on 2019.3 Beta! Summary