유니티 그래픽 최적화, 어디까지 해봤니 (optimizing unity graphics) ndc15 ver

76
그래픽 최적화 어디까지 해봤니 - Unity Field Engineer 오지현

Upload: ozlael-ozlael

Post on 20-Jul-2015

2.289 views

Category:

Technology


8 download

TRANSCRIPT

Page 1: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

그래픽최적화어디까지해봤니

- Unity Field Engineer 오지현

Page 2: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Image : 무사, Implosion, Z-rush, 히어로즈아레나

Page 3: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Bottleneck

Draw Call

Batching (Pros, Cons)

Profiling

Profiling Sample

Level Of Detail

Lighting (Image Based Lighting)

Physically Based Rendering

Page 4: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Image : volvo

Page 5: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Bottleneck

Draw Call

Batching (Pros, Cons)

Profiling

Profiling Sample

Level Of Detail

Lighting (Image Based Lighting)

Physically Based Rendering

Page 6: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Optimization = Removing Bottleneck

Page 7: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

CPU

GPU

Frame

End

Frame

start

Bottleneck?

Page 8: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

CPU

GPU

Frame

End

Frame

start

Page 9: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

CPU boundary VS GPU boundary

CPU

GPU

Frame

End

Frame

start

Page 10: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Logic AI Physics

Loading GC ...

CPU boundary

Page 11: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

GPU boundary

Polygon Texture Filtering

Lighting Framebuffer

Shader Overdraw ...

Page 12: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Bottleneck

Draw Call

Batching (Pros, Cons)

Profiling

Profiling Sample

Level Of Detail

Lighting (Image Based Lighting)

Physically Based Rendering

Page 13: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

CPU

DRAW!

Draw Call in a narrow sense

GPU

OK

Page 14: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

CPU

DRAW!

TEXTURE!

SHADER!

VERTEX BUFFER!

ALPHA BLENDING!

TRANSFORM

CHANGE STATES

Draw Call in a broad sense

GPU...

USE Z-BUFFER!

Page 15: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

CPU (App)

GPU

COMMAND COMMAND COMMAND COMMAND COMMAND

Set Texture Set Shader

Use BlendingSet VBO

Draw

Command Buffer

Page 16: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

+Draw CallLogic AI Physics

Loading GC …

CPU boundary

Page 17: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Bottleneck

Draw Call

Batching (Pros, Cons)

Profiling

Profiling Sample

Level Of Detail

Lighting (Image Based Lighting)

Physically Based Rendering

Page 18: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Batch(in Rendering Statistics Window)

= Draw Call

+ Setting Shader + Setting Blending

+ Setting Texture + Setting Vertex Buffer

+ ...

Page 19: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Batching =

1 batch for

many objects

Page 20: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Material A Material B

Mesh 1 Mesh 2 Mesh 1 Mesh 3

Batch Batch

s

c

e

n

e

Page 21: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Asset : Top-down Sci-Fi

Page 22: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Static Batching VS

Dynamic Batching

Page 23: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Static Batching do this on loading

Page 24: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Dynamic Batching do this on Run-time

GPU

Vertex BufferScene

Page 25: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Dynamic Batching : limitations

Overhead for collecting vertices.

- Not for Skinned Mesh.

- Less than 300 vertices per mesh.(position, normal, uv0)

Page 26: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Unity Frame Debugger

Page 27: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver
Page 28: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Bottleneck

Draw Call

Batching (Pros, Cons)

Profiling

Profiling Sample

Level Of Detail

Lighting (Image Based Lighting)

Physically Based Rendering

Page 29: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Analyze your Bottleneck

Measure correctly

Average value

Diverse situation

Per Target Device

Page 30: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

CPU : A5

GPU : PowerVR SGX535

Resolution : 1024 x 768

CPU : A5X

GPU : PowerVR SGX543

Resolution : 2048 x 1536

Performance ?

Episode of

Page 31: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Unity Profiler

CPU

GPU

Page 32: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Simple test

High Polygon model VS Low Polygon model

Expensive Shader VS Cheap Shader .

High rez texture VS Low rez texture

Page 33: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Deep GPU ProfileVendor Profiler tools

Page 34: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Qualcomm Adreno Profiler

Page 35: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Mali Graphics Debugger

Page 36: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

ARM DS-5

http://community.arm.com/docs/DOC-9414

Page 37: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

iOS GPU profiler

Page 38: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Bottleneck

Draw Call

Batching (Pros, Cons)

Profiling

Profiling Sample

Level Of Detail

Lighting (Image Based Lighting)

Physically Based Rendering

Page 39: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

LG G-pad ( Adreno 320, 1920 X 1200)

Deferred Render

GPU Skinning

MatCap Shader

Lightmap

15K Polygons

Page 40: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Player Settings -> GPU Skinning

Page 41: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Skinning

GPU

CPU

or

Asset : Succubus Monster 2.0

Player Settings > Rendering

Page 42: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

GPU :Vertex

Shader

Buffer

GPU Skinning with Transform FeedbackOpen GL ES 3.0 ~

Page 43: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

CPU :NEON

Buffer

CPU Skinning with NEON SIMD

Page 44: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

NEON TM

X1 + =X2 X3

X1 + =X2 X3

Y1 + =Y2 Y3

Z1 + =Z2 Z3

W1 + =W2 W3

Single Instruction

Multi Data

Single Instruction

Single Data

Page 45: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

GPU Skinning -> CPU Skinning

-9ms

Page 46: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver
Page 47: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

cmd > adb.exe shell setprop debug.egl.profiler 1

image : Adreno Profiler user guide

Page 48: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver
Page 49: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Mobile/Unlit (support Lightmap)

-17ms

Page 50: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver
Page 51: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Level Of Detail

Image : Infinity Tap SF

Page 52: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

ASSET : Armored Golem

Per Pixel Lit

NormalmapPer Vertex Lit

Page 53: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

LOD Plugins in Asset Store

Page 54: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Normalmap X

15K -> 7K Poly

LOD

-3ms

Page 55: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver
Page 56: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Deferred -> Forward

-5ms

Page 57: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Image : FPS Hangar

17 FPS (57ms)iPhone 6 : PowerVR GX6450 1334 X 750

Page 58: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Vertex Pixel

Page 59: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Tile Based Deferred Rendering

Page 60: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver
Page 61: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver
Page 62: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

39 FPS (25ms)iPhone 6 : PowerVR GX6450 1334 X 750

SSAO SunShaft

Page 63: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Bottleneck

Draw Call

Batching (Pros, Cons)

Profiling

Profiling Sample

Level Of Detail

Lighting (Image Based Lighting)

Physically Based Rendering

Page 64: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

image : http://www.aversis.be/tutorials/vray/vray-20-gi-methods.htm

Page 65: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver
Page 66: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Texture

Image Based Lighting

Unlit lighting

DiffuseWrap MatCap

Page 67: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Toon Shading (Diffuse Wrap)

Page 68: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

MatCap (Material Capture)

IMG : http://www.cgarena.com/freestuff/tutorials/misc/photoreal/

Page 69: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

X( ) + =

MatCap Shading

Page 70: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver
Page 71: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Standard Shader

PC Ver. Mobile Ver.

Page 72: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

We are optimizing more

Page 73: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Use less textures

ASSET : Many-Worlds

Page 74: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Use Secondary Maps

Page 75: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

4.6.3~

Page 76: 유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver

Q & A유니티개발자커뮤니티

유니티허브

ozlael.oz ozlael

ozlael.egloos.com

Thank you