際際滷

際際滷Share a Scribd company logo
Unity_ Handmade graphics optimizations by Roman Chehowski
 OPTIMIZATION
BASICS
 BATCHING
 LIGHTING
 SHADERS
WORDS TO
SAY
BASICS BATCHING LIGHTING
SHADERS
束 仗亠亟亟亠亶 亠亳亳損
亠仆亟亠, 亠亶亟亠, 仗仂-仗仂亠亳仆亞,
etc.
<DevGamm! Minsk 2014>
 Mobile engine/tools developer 于 Vizor
Intreractive.
  仗仂仍仂仄  仗仂亞舒仄仄亳 亞舒亳从亳
Unity3D 于 Steel Monkeys.
 3 亞仂亟舒 仂仗舒 舒弍仂  亞舒亳从仂亶 (Adobe
flash, DirectX, OpenGL, Metal)
 舒弍仂舒仍  弍仂仍亳仄 从仂仍亳亠于仂仄 open-
source 亳亞仂于 亟于亳亢从仂于
仂亳仍亳仂于舒仆
亳亠
仆舒仍亳亰
亠亰仍舒仂于
仂亠从亳仂于舒仆
亳亠
亠舒仍亳亰舒
亳
亞舒弍亠仍仆舒
于亠亳
个亳仆舒仍仆亶 弍亳仍亟
仗亳仄亳亰舒亳 -
亳从仍亳亠从亳亶 仗仂亠
于亠仍亳亠仆亳
仗仂亳亰于仂亟亳亠仍仆仂亳
BASICS BATCHING LIGHTING
SHADERS
 丐丐亂 个丕
 束亠 亠亶舒損 () 弌仆舒舒仍舒 仗仂仍亳亠 仗亳亠仄仍亠仄亶 亠亰仍舒.
 仂亞亟舒 仗仂亳亰于仂亟亳亠仍仆仂 仗亳仍仂亢亠仆亳 仆舒 亠仍亠于
仂亶于舒 舒 仆亠 舒亳于舒亠.
 仄亠亠  亞亠亶仄-亟亳亰舒亶仆亠仂仄  亟仍 亠亠仆亳 于仂仗仂仂于 仂弍
亳亞仂于仂亶 亳仍亳亳从亠.
 仄亠亠  2D/3D 亟仂亢仆亳从仂仄  亟仍 弍仂亶 仗亠亠亟亠仍从亳
亳亞仂于 亠仂于.
BASICS BATCHING LIGHTING
SHADERS
个丶亊
 丼仂 于亳亰舒仍仆仂 亳亰仄亠仆亳 亟仍 亳亞仂从舒?
 舒从仂于 仗亠亳仄亠于舒 亳 仆亠亟仂舒从亳 仂仗亳仄亳亰舒亳亳?
 舒从亳亠 亳亞仂于亠 亠 仆亢仆仂 弍亟亠 仗亠亠亟亠仍于舒?
 舒从仂亶 从仂亟 仆亢仆仂 仗亠亠仗亳于舒 (亳 从仂 弍亟亠 仂 亟亠仍舒)?
 弌从仂仍从仂 于亠仄亠仆亳 亰舒亶仄亠 仂仗亳仄亳亰舒亳?
 亅仆仂仗亳 (丼仂 仄仂亢亠 仆亠 亰舒舒弍仂舒?).
 仗仂亠亠 仂仄舒仍亳亰舒亳亳,  仂于亠舒亠亠 仆舒 于仂仗仂: 束丼仂 亳仄亠仆仆仂 
亟亠仍舒?損 亳 束弌从仂仍从仂 于亠仄亠仆亳 仂 亰舒亶仄亠?損
BASICS BATCHING LIGHTING
SHADERS
个
 亠 亳舒亶亠 仗仂仗亞舒亠于 (FPS, draw calls), 亰舒仄亠磺亠 于亠仄.
 亠 亰舒仄亠磺亠 仗仂亳亰于仂亟亳亠仍仆仂 于 亠亳亠从仂仄 于舒从仄亠.
 弌仂亰亟舒于舒亶亠 亠 亟仍 弍仂亞仂 仗仂仍亠仆亳 亠亰仍舒仂于.
 舒仗亳于舒亶亠 render time, 舒 仆亠 frame time (仂 亳从仍ム亳 亳亰
亠亰仍舒舒 swap buffer delay 亳 vSync).
 弍磶舒亠仍仆仂 仂亠仆亳于舒亶亠 束亟仂/仗仂仍亠損 仂仍从仂 仗仂 亟仂亳亢亠仆亳亳
仗仍舒仆亳亠仄仂亞仂 亠亰仍舒舒.
 仂仍亳于 仄舒亳于 亠亰仍舒仂于 于亠仄亠仆亳, 弍亠亳亠 仄亠亟亳舒仆, 舒 仆亠
亠亟仆亠亠 舒亳仄亠亳亠从仂亠, 亳仆舒亠 亳从亠亠 仗仂仍亳 束亠亟仆ム
亠仄仗亠舒 仗仂 弍仂仍仆亳亠損.
BASICS BATCHING LIGHTING
SHADERS
个 UNITY-个
 亠仄 Camera.Render() 于 仗仂舒亶仍亠亠  仂 亳仄亠仆仆仂 仂, 仂 舒仄
仆亢仆仂.
 舒仗亳亳亠 仗仂亠仆从亳亶 MonoBehaviour:
 OnPreCull()  仆舒舒仍仂 亠亶仄舒
 OnPostRender()  从仂仆亠 亠亶仄舒
 OnGUI()  亟仍 于于仂亟舒 亠亰仍舒舒
BASICS BATCHING LIGHTING
SHADERS
General-purpose tools
 Unity profiler
 GDebugger (OpenGL
desktop)
 Microsoft PiX (DirectX 9)
 ADB GL tracer (android)
 xCode instruments (iOS)
Platform-specific tools:
 Adreno profiler (Qualcomm
Adreno)
 PerfHUD ES (NVidia Tegra)
 Mali profiler (ARM Mali)
 PVRTune (Imagination tec
PowerVR)
舒 仍亳仆仂仄 仂仗亠:
 Mali  舒仄舒 仗仂弍仍亠仄仆舒
 Tegra  舒仄舒 仄亠亟仍亠仆仆舒
 PowerVR  舒仄舒
仗仂亳亰于仂亟亳亠仍仆舒
BASICS BATCHING LIGHTING
SHADERS
乘 丱:
 丕仗仂舒亶亠 亠亶亟亠
 丕仗仂舒亶亠 仗仂-仗仂亠亳仆亞
 仗仂仍亰亶亠 仄亠仆亠 transparent-仂弍亠从仂于
 仂亟从仍ム舒亶亠 LOD
 仗仂仍亰亶亠 Material ID
 舒仗亠从舒亶亠 于亠 亳 于仂亶于舒 仄舒亠亳舒仍仂于 于 vertexColor 亳 uv2
 仗仂仍亰亶亠 native-亠从
 弌仆亳亢舒亶亠 Fillrate
 从仍ム舒亶亠 仂仗亳仄亳亰舒亳 Mesh亠亶
BASICS BATCHING LIGHTING
SHADERS
Static batching:
(+)
 亠 仆亢仆仂 仗仂仂礌仆仂 仗亠亠亰舒仗亳于舒 VBO.
 亠仆亠 仆舒亞亰从舒 仆舒 CPU, 舒从 从舒从 仆亠 仆亢仆仂
舒仆仂仄亳仂于舒 于亠亳仆 于 runtime.
 亠仄仆仂亞仂 仄亠仆亠 matrix multiplications 于 runtime.
(-)
 亠仆亟亠 仂亰亟舒亠 亳亰亳亠从 从仂仗亳 亰舒弍舒亠仆仆仂亶 亞亠仂仄亠亳亳.
 亠 于仂亰仄仂亢仆仂亳 仗亠亠仄亠舒 舒亳亠从亳 亰舒弍舒亠仆仆亠
仂弍亠从.
 仍 舒弍仂 frustum 亳 occlusion cullinga 亠弍亠
亟亳仆舒仄亳亠从舒 仗亠亠亰舒仗亳 index buffer.
BASICS BATCHING LIGHTING
SHADERS
model matrix position world position
_Object2World  model matrix
_World2Object  inverse model matrix
UNITY_MATRIX_MVP  model-view-projection matrix
BASICS BATCHING LIGHTING
SHADERS
BASICS BATCHING LIGHTING
SHADERS
BASICS BATCHING LIGHTING
SHADERS
BASICS BATCHING LIGHTING
SHADERS
[0] [1] [2] [3] [4]
BASICS BATCHING LIGHTING
SHADERS
BASICS BATCHING LIGHTING
SHADERS
 仗仂仍亰亶亠 从舒从 仄仂亢仆仂 仄亠仆亠
亟亳仆舒仄亳亠从亳 亳仂仆亳从仂于
仂于亠亠仆亳 仆舒 亠仆亠
 丕仄亠仆舒亶亠 从仂仍亳亠于仂 束per-
pixel lights 于 Quality Settings.
 仂仄亠舒亶亠 于仂仂亠仗亠仆仆亠
亳仂仆亳从亳 于亠舒 从舒从 束non-
important損
 亳 仂亞仂仄仆仂仄 从仂仍亳亠于亠
亳仂仆亳从仂于 仂于亠亠仆亳 
仗仂亟从仍ム舒亶亠 Deferred shading
 亠 仍亳从仂仄 仗仂仍舒亞舒亶亠 仆舒
Surface 亠亶亟亠.
LIGHTING
BASICS BATCHING LIGHTING
SHADERS
 SubShader:
 Forward base
 GLES
 Base
 KEYWORD_A
 KEYWORD_B
...
 Shadow caster
 Shadow collector
 DX9
 WP8
 Playstation 3

 Forward add
 Prepass base
 Prepass final
Shader "Custom/NewShader" {
Properties {
_MainTex("Base (RGB)", 2D) = "white" {}
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Lambert
sampler2D _MainTex;
struct Input {
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutput o) {
half4 c = tex2D(_MainTex, IN.uv_MainTex);
o.Albedo = c.rgb;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
舒亳舒仆 舒亠亞仂
亠亶亟亠舒:
BASICS BATCHING LIGHTING
SHADERS
 12K triangles
 24K vertices
 5X Blend One
One
BASICS BATCHING LIGHTING
SHADERS
BASICS BATCHING LIGHTING
SHADERS
https://github.com/RChehowski/devgamm_expo
 2K triangles
 4K vertices
 1 仗仂仂亟
BASICS BATCHING LIGHTING
SHADERS
丐丶亊 丿 
 仗仂仍亰亶亠 舒仗仂从亳仄舒亳亳.
 丕仗仂舒亶亠 仄舒亠仄舒亳从.
 亠亠仆仂亳亠 从仂亟 亳亰 仗亳从亠仍仆仂亞仂 亠亶亟亠舒 于 于亠亳仆仆亶
 亠 仗亠仆亠弍亠亞舒亶亠 亳仆亳仆亳从舒仄亳 亳 于亠从仂亳亰舒亳亠亶
 仂 于仂亰仄仂亢仆仂亳, 亳亰弍亠亞舒亶亠 于亠于仍亠仆亳 于 亠亶亟亠亠
 仗仂仍亰亶亠 ARB_precision_hint
 亳 仆亠仂弍仂亟亳仄仂亳  亠亟舒从亳亶亠 亞亠仆亠亳仂于仆仆亶 Unity 从仂亟
BASICS BATCHING LIGHTING
SHADERS
float x = (v1 * merge) + (v2 * (1.0  merge));
float x = lerp(v1, v2, merge);
 亠 亳亰仂弍亠舒亶亠 于亠仍仂亳仗亠亟. 仂亳 于亠 亢亠 亠舒仍亳亰仂于舒仆仂 于 磶从亠
HLSL.
 仆仂亞亟舒 亟仂弍仆仂 亳仗仂仍亰仂于舒 亳仆亳仆亳从亳 仆亠 仗仂 仗礆仂仄
仆舒亰仆舒亠仆亳.
丐弌
float4 result = dot(float4(0.3, 0.59, 0.11, 1.0), myColor);
 亠 亰舒弍于舒亶亠 仗仂 min(), max(), abs(), mad(), 亳 .亟.
BASICS BATCHING LIGHTING
SHADERS
丐丶
亊
return a.yzx * b.zxy - a.zxy * b.yzx;
return float3(
a.y * b.z - a.z * b.y,
a.z * b.x - a.x * b.z,
a.z * b.y - a.y * b.z
);
  HLSL 从舒仍 仂 仂亟仆仂仄亠仆亠 于亠从仂, 仗仂仂仄:
return float3(var, var, var);
  仄仂亢亠亠 亟亠仍舒 swizzle 于 仍ミ頴笑, 亟仂弍仆仂仄 舒仄 仗仂磲从亠
return var.xxx;
(舒 于仂仂弍亠, 仂 cross(a,
b))
BASICS BATCHING LIGHTING
SHADERS
if(x == 0)
return a;
else if(x == 1)
return b;
return lerp(a, b, floor(x));
 仂舒舒亶亠 亳亰弍亠亞舒 于亠于仍亠仆亳 亟仍 亳于亳舒仍仆
仍舒亠于
  仆亠从仂仂 仍舒, 于亠于仍亠仆亳亠 于亠-舒从亳 仍亠:
if(x == 0)
仂亠仆
仄仆仂亞仂
从仂亟舒
else if(x == 1)
clip(-1)
BRANCHING
BASICS BATCHING LIGHTING
SHADERS
struct VertexData {
float a : TEXCOORD0;
float b : TEXCOORD1;
float c : TEXCOORD2;
float d : TEXCOORD3;
};
myMaterial.SetFloat(a, 1.0f);
myMaterial.SetFloat(b, 2.0f);
myMaterial.SetFloat(c, 3.0f);
myMaterial.SetFloat(d, 4.0f);
struct VertexData {
float4 abcd : TEXCOORD0;
};
myMaterial.SetVector(
abcd,
new Vector4(1.0f, 2.0f, 3.0f, 4.0f
);
 仂亰于仂仍磳 亰舒仄亠仆亳 4 于亰仂于舒 glUniform1fv 仂亟仆亳仄 于亰仂于仂仄
glUniform4fv
丕
BASICS BATCHING LIGHTING
SHADERS
舒于亠 仂 从仂亟 于仄亠仂 亳仂亟仆仂亞仂 从仂亟舒 舒亠亞仂
亠亶亟亠舒
BASICS BATCHING LIGHTING
SHADERS
乘乘
 仂亠 仂仗亳仄亳亰舒亳亳 亟仂仍亢亠仆 弍 亟仂舒仂仆仂 亟亠亠仄亳仆亳仂于舒仆
 仗亳仄亳亰亳仂于舒 仄仂亢仆仂 仂仍从仂 亳仆舒仍仆 于亠亳 亳亞 亳仍亳
仄仂亟仍
 仂 于亠仄 仂仗亳仄亳亰舒亳亳  仆仂于舒 于仂亰于舒舒亠亠 从 亰舒亟舒亠 亳 于
仗仂亠亠 仄仂亢亠亠 亠亳 仗仂弍仍亠仄, 从仂仂舒 从舒亰舒仍舒
仆亠舒亰亠亳仄仂亶 亳仍亳 弍仍舒 仂舒于仍亠仆舒 仆舒 束亳 舒从 仂亶亟亠β
弌弌  
 仂仗仂?
roman.chehowski@vizor-
interactive.by
inangwis

More Related Content

What's hot (9)

仂从仍舒亟 于 Mail.ru 01.11.12
仂从仍舒亟 于 Mail.ru 01.11.12仂从仍舒亟 于 Mail.ru 01.11.12
仂从仍舒亟 于 Mail.ru 01.11.12
Alex Tutubalin
亳亠仄 舒仄亶 弍亶 亠 亟仍 从亳仂于舒仆亳 亟舒仆仆
亳亠仄 舒仄亶 弍亶 亠 亟仍 从亳仂于舒仆亳 亟舒仆仆亳亠仄 舒仄亶 弍亶 亠 亟仍 从亳仂于舒仆亳 亟舒仆仆
亳亠仄 舒仄亶 弍亶 亠 亟仍 从亳仂于舒仆亳 亟舒仆仆
Roman Elizarov
亠亠于从舒 仂仗亳仄亰舒 于亠从亳
亠亠于从舒  仂仗亳仄亰舒 于亠从亳亠亠于从舒  仂仗亳仄亰舒 于亠从亳
亠亠于从舒 仂仗亳仄亰舒 于亠从亳
Stfalcon Meetups
Multithreading in JS. Myth or reality?
Multithreading in JS. Myth or reality?Multithreading in JS. Myth or reality?
Multithreading in JS. Myth or reality?
Alexander Syrotenko
ML on the Edge - Highload++ Siberia 2019
ML on the Edge - Highload++ Siberia 2019ML on the Edge - Highload++ Siberia 2019
ML on the Edge - Highload++ Siberia 2019
Andrey Tatarinov
舒从亳亠从亳亶 仂仗 亳仗仂仍亰仂于舒仆亳 仆亠从仂仂 仂于亠仄亠仆仆 亠亠仆亳亶 亠仗仍亳从舒亳亳 MySQL
舒从亳亠从亳亶 仂仗 亳仗仂仍亰仂于舒仆亳 仆亠从仂仂 仂于亠仄亠仆仆 亠亠仆亳亶 亠仗仍亳从舒亳亳 MySQL舒从亳亠从亳亶 仂仗 亳仗仂仍亰仂于舒仆亳 仆亠从仂仂 仂于亠仄亠仆仆 亠亠仆亳亶 亠仗仍亳从舒亳亳 MySQL
舒从亳亠从亳亶 仂仗 亳仗仂仍亰仂于舒仆亳 仆亠从仂仂 仂于亠仄亠仆仆 亠亠仆亳亶 亠仗仍亳从舒亳亳 MySQL
Alex Chistyakov
仂亳亰于仂亟亳亠仍仆仂 Unity3D: 仗仂亟于仂亟仆亠 从舒仄仆亳 / 仍亠从亠亶 丼弍舒 (BIT.GAMES)
仂亳亰于仂亟亳亠仍仆仂 Unity3D: 仗仂亟于仂亟仆亠 从舒仄仆亳 / 仍亠从亠亶 丼弍舒 (BIT.GAMES)仂亳亰于仂亟亳亠仍仆仂 Unity3D: 仗仂亟于仂亟仆亠 从舒仄仆亳 / 仍亠从亠亶 丼弍舒 (BIT.GAMES)
仂亳亰于仂亟亳亠仍仆仂 Unity3D: 仗仂亟于仂亟仆亠 从舒仄仆亳 / 仍亠从亠亶 丼弍舒 (BIT.GAMES)
Ontico
Interactive Lab: 舒亰舒弍仂从舒 Flash 亳亞 仆舒 Unity3D
Interactive Lab: 舒亰舒弍仂从舒 Flash 亳亞 仆舒 Unity3DInteractive Lab: 舒亰舒弍仂从舒 Flash 亳亞 仆舒 Unity3D
Interactive Lab: 舒亰舒弍仂从舒 Flash 亳亞 仆舒 Unity3D
DevGAMM Conference
仂亳亰于仂亟亳亠仍仆仂 WebGL-仗亳仍仂亢亠仆亳亶 / 仄亳亠仆从仂 亳亳仍仍 (亊仆亟亠从)
仂亳亰于仂亟亳亠仍仆仂 WebGL-仗亳仍仂亢亠仆亳亶 / 仄亳亠仆从仂 亳亳仍仍 (亊仆亟亠从)仂亳亰于仂亟亳亠仍仆仂 WebGL-仗亳仍仂亢亠仆亳亶 / 仄亳亠仆从仂 亳亳仍仍 (亊仆亟亠从)
仂亳亰于仂亟亳亠仍仆仂 WebGL-仗亳仍仂亢亠仆亳亶 / 仄亳亠仆从仂 亳亳仍仍 (亊仆亟亠从)
Ontico
仂从仍舒亟 于 Mail.ru 01.11.12
仂从仍舒亟 于 Mail.ru 01.11.12仂从仍舒亟 于 Mail.ru 01.11.12
仂从仍舒亟 于 Mail.ru 01.11.12
Alex Tutubalin
亳亠仄 舒仄亶 弍亶 亠 亟仍 从亳仂于舒仆亳 亟舒仆仆
亳亠仄 舒仄亶 弍亶 亠 亟仍 从亳仂于舒仆亳 亟舒仆仆亳亠仄 舒仄亶 弍亶 亠 亟仍 从亳仂于舒仆亳 亟舒仆仆
亳亠仄 舒仄亶 弍亶 亠 亟仍 从亳仂于舒仆亳 亟舒仆仆
Roman Elizarov
亠亠于从舒 仂仗亳仄亰舒 于亠从亳
亠亠于从舒  仂仗亳仄亰舒 于亠从亳亠亠于从舒  仂仗亳仄亰舒 于亠从亳
亠亠于从舒 仂仗亳仄亰舒 于亠从亳
Stfalcon Meetups
Multithreading in JS. Myth or reality?
Multithreading in JS. Myth or reality?Multithreading in JS. Myth or reality?
Multithreading in JS. Myth or reality?
Alexander Syrotenko
ML on the Edge - Highload++ Siberia 2019
ML on the Edge - Highload++ Siberia 2019ML on the Edge - Highload++ Siberia 2019
ML on the Edge - Highload++ Siberia 2019
Andrey Tatarinov
舒从亳亠从亳亶 仂仗 亳仗仂仍亰仂于舒仆亳 仆亠从仂仂 仂于亠仄亠仆仆 亠亠仆亳亶 亠仗仍亳从舒亳亳 MySQL
舒从亳亠从亳亶 仂仗 亳仗仂仍亰仂于舒仆亳 仆亠从仂仂 仂于亠仄亠仆仆 亠亠仆亳亶 亠仗仍亳从舒亳亳 MySQL舒从亳亠从亳亶 仂仗 亳仗仂仍亰仂于舒仆亳 仆亠从仂仂 仂于亠仄亠仆仆 亠亠仆亳亶 亠仗仍亳从舒亳亳 MySQL
舒从亳亠从亳亶 仂仗 亳仗仂仍亰仂于舒仆亳 仆亠从仂仂 仂于亠仄亠仆仆 亠亠仆亳亶 亠仗仍亳从舒亳亳 MySQL
Alex Chistyakov
仂亳亰于仂亟亳亠仍仆仂 Unity3D: 仗仂亟于仂亟仆亠 从舒仄仆亳 / 仍亠从亠亶 丼弍舒 (BIT.GAMES)
仂亳亰于仂亟亳亠仍仆仂 Unity3D: 仗仂亟于仂亟仆亠 从舒仄仆亳 / 仍亠从亠亶 丼弍舒 (BIT.GAMES)仂亳亰于仂亟亳亠仍仆仂 Unity3D: 仗仂亟于仂亟仆亠 从舒仄仆亳 / 仍亠从亠亶 丼弍舒 (BIT.GAMES)
仂亳亰于仂亟亳亠仍仆仂 Unity3D: 仗仂亟于仂亟仆亠 从舒仄仆亳 / 仍亠从亠亶 丼弍舒 (BIT.GAMES)
Ontico
Interactive Lab: 舒亰舒弍仂从舒 Flash 亳亞 仆舒 Unity3D
Interactive Lab: 舒亰舒弍仂从舒 Flash 亳亞 仆舒 Unity3DInteractive Lab: 舒亰舒弍仂从舒 Flash 亳亞 仆舒 Unity3D
Interactive Lab: 舒亰舒弍仂从舒 Flash 亳亞 仆舒 Unity3D
DevGAMM Conference
仂亳亰于仂亟亳亠仍仆仂 WebGL-仗亳仍仂亢亠仆亳亶 / 仄亳亠仆从仂 亳亳仍仍 (亊仆亟亠从)
仂亳亰于仂亟亳亠仍仆仂 WebGL-仗亳仍仂亢亠仆亳亶 / 仄亳亠仆从仂 亳亳仍仍 (亊仆亟亠从)仂亳亰于仂亟亳亠仍仆仂 WebGL-仗亳仍仂亢亠仆亳亶 / 仄亳亠仆从仂 亳亳仍仍 (亊仆亟亠从)
仂亳亰于仂亟亳亠仍仆仂 WebGL-仗亳仍仂亢亠仆亳亶 / 仄亳亠仆从仂 亳亳仍仍 (亊仆亟亠从)
Ontico

Similar to Unity_ Handmade graphics optimizations by Roman Chehowski (20)

Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...
DevGAMM Conference
Git in Sky presentation @ HighLoad++ 2013
Git in Sky presentation @ HighLoad++ 2013Git in Sky presentation @ HighLoad++ 2013
Git in Sky presentation @ HighLoad++ 2013
Serguei Gitinsky
仆仂亞仂仗仂仂仆仂 于 亳亞舒. 亞仂 仂弍舒仆亳从仂于. CoreHard Spring 2019
仆仂亞仂仗仂仂仆仂 于 亳亞舒. 亞仂 仂弍舒仆亳从仂于. CoreHard Spring 2019仆仂亞仂仗仂仂仆仂 于 亳亞舒. 亞仂 仂弍舒仆亳从仂于. CoreHard Spring 2019
仆仂亞仂仗仂仂仆仂 于 亳亞舒. 亞仂 仂弍舒仆亳从仂于. CoreHard Spring 2019
corehard_by
亳从仂亠于亳: 仂仗 亳仗仂仍亰仂于舒仆亳 于 仆舒亞亢亠仆仆仂仄 仗仂亠从亠 / 舒亟亳仄 舒亟亳仂仆 (-丐亠)
亳从仂亠于亳: 仂仗 亳仗仂仍亰仂于舒仆亳 于 仆舒亞亢亠仆仆仂仄 仗仂亠从亠 / 舒亟亳仄 舒亟亳仂仆 (-丐亠)亳从仂亠于亳: 仂仗 亳仗仂仍亰仂于舒仆亳 于 仆舒亞亢亠仆仆仂仄 仗仂亠从亠 / 舒亟亳仄 舒亟亳仂仆 (-丐亠)
亳从仂亠于亳: 仂仗 亳仗仂仍亰仂于舒仆亳 于 仆舒亞亢亠仆仆仂仄 仗仂亠从亠 / 舒亟亳仄 舒亟亳仂仆 (-丐亠)
Ontico
How to cook a blockchain and not get burned
How to cook a blockchain and not get burned How to cook a blockchain and not get burned
How to cook a blockchain and not get burned
Alexander Syrotenko
T属Conf. 亞舒仆亳亰舒亳 舒亰舒弍仂从亳 Frontend. 亳舒仍亳亶 弌仍仂弍仂亟亳仆.
T属Conf. 亞舒仆亳亰舒亳 舒亰舒弍仂从亳 Frontend. 亳舒仍亳亶 弌仍仂弍仂亟亳仆.T属Conf. 亞舒仆亳亰舒亳 舒亰舒弍仂从亳 Frontend. 亳舒仍亳亶 弌仍仂弍仂亟亳仆.
T属Conf. 亞舒仆亳亰舒亳 舒亰舒弍仂从亳 Frontend. 亳舒仍亳亶 弌仍仂弍仂亟亳仆.
TKConf
仂亟仂亟 亳 亠仆仂仍仂亞亳亳, 亳仗仂仍亰亠仄亠 于 舒亰舒弍仂从亠 iOS-从仍亳亠仆舒 Viber, 亳亳仍仍 舒...
仂亟仂亟 亳 亠仆仂仍仂亞亳亳, 亳仗仂仍亰亠仄亠 于 舒亰舒弍仂从亠 iOS-从仍亳亠仆舒 Viber, 亳亳仍仍 舒...仂亟仂亟 亳 亠仆仂仍仂亞亳亳, 亳仗仂仍亰亠仄亠 于 舒亰舒弍仂从亠 iOS-从仍亳亠仆舒 Viber, 亳亳仍仍 舒...
仂亟仂亟 亳 亠仆仂仍仂亞亳亳, 亳仗仂仍亰亠仄亠 于 舒亰舒弍仂从亠 iOS-从仍亳亠仆舒 Viber, 亳亳仍仍 舒...
Yandex
舒从 仄 舒仆亳仄 亳 舒仆舒仍亳亰亳亠仄 弍仂仍仂亶 仂亳舒仍仆亶 亞舒, 舒从亳仄 舒亠仆亠于 (仂亳-...
舒从 仄 舒仆亳仄 亳 舒仆舒仍亳亰亳亠仄 弍仂仍仂亶 仂亳舒仍仆亶 亞舒, 舒从亳仄 舒亠仆亠于 (仂亳-...舒从 仄 舒仆亳仄 亳 舒仆舒仍亳亰亳亠仄 弍仂仍仂亶 仂亳舒仍仆亶 亞舒, 舒从亳仄 舒亠仆亠于 (仂亳-...
舒从 仄 舒仆亳仄 亳 舒仆舒仍亳亰亳亠仄 弍仂仍仂亶 仂亳舒仍仆亶 亞舒, 舒从亳仄 舒亠仆亠于 (仂亳-...
Ontico
JavaFX 2.0 overview
JavaFX 2.0 overviewJavaFX 2.0 overview
JavaFX 2.0 overview
Dmitry Buzdin
SECON'2016. 丼弍舒 仍亠从亠亶, 仂弍亳仍仆亠 亞舒弍仍亳 Unity
SECON'2016. 丼弍舒 仍亠从亠亶, 仂弍亳仍仆亠 亞舒弍仍亳 UnitySECON'2016. 丼弍舒 仍亠从亠亶, 仂弍亳仍仆亠 亞舒弍仍亳 Unity
SECON'2016. 丼弍舒 仍亠从亠亶, 仂弍亳仍仆亠 亞舒弍仍亳 Unity
SECON
弍亰仂 仗亠仗亠从亳于仆 弍舒亰 亟舒仆仆 亟仍 highload / 豫亳亶 舒亠亟亳仆仂于
弍亰仂 仗亠仗亠从亳于仆 弍舒亰 亟舒仆仆 亟仍 highload / 豫亳亶 舒亠亟亳仆仂于弍亰仂 仗亠仗亠从亳于仆 弍舒亰 亟舒仆仆 亟仍 highload / 豫亳亶 舒亠亟亳仆仂于
弍亰仂 仗亠仗亠从亳于仆 弍舒亰 亟舒仆仆 亟仍 highload / 豫亳亶 舒亠亟亳仆仂于
Ontico
Character creation pipeline for Age of Magic (3D mobile)
Character creation pipeline for Age of Magic (3D mobile)Character creation pipeline for Age of Magic (3D mobile)
Character creation pipeline for Age of Magic (3D mobile)
DevGAMM Conference
High Load
High LoadHigh Load
High Load
alexeymaykov
20 舒仗亠仍, DEV {highload}, "亠仄仂仆 于 弍仂仍仂仄 仗仂亠从亠 仗仂弍仍亠仄 亳 亳 亠亠仆亳 ...
20 舒仗亠仍, DEV {highload}, "亠仄仂仆 于 弍仂仍仂仄 仗仂亠从亠  仗仂弍仍亠仄 亳 亳 亠亠仆亳 ...20 舒仗亠仍, DEV {highload}, "亠仄仂仆 于 弍仂仍仂仄 仗仂亠从亠  仗仂弍仍亠仄 亳 亳 亠亠仆亳 ...
20 舒仗亠仍, DEV {highload}, "亠仄仂仆 于 弍仂仍仂仄 仗仂亠从亠 仗仂弍仍亠仄 亳 亳 亠亠仆亳 ...
IT-Portfolio
舒亰亞仂仆磳仄 ASP.NET Core / 仍 亠弍亳从亳亶 (WebStoating s.r.o.)
舒亰亞仂仆磳仄 ASP.NET Core / 仍 亠弍亳从亳亶 (WebStoating s.r.o.)舒亰亞仂仆磳仄 ASP.NET Core / 仍 亠弍亳从亳亶 (WebStoating s.r.o.)
舒亰亞仂仆磳仄 ASP.NET Core / 仍 亠弍亳从亳亶 (WebStoating s.r.o.)
Ontico
仆亟亠亶 亳从仂仍舒亠仆从仂, IBS. NVMf: 5 仄仍仆 IOPS 仗仂 亠亳 于仂亳仄亳 从舒仄亳
仆亟亠亶 亳从仂仍舒亠仆从仂, IBS. NVMf: 5 仄仍仆 IOPS 仗仂 亠亳 于仂亳仄亳 从舒仄亳仆亟亠亶 亳从仂仍舒亠仆从仂, IBS. NVMf: 5 仄仍仆 IOPS 仗仂 亠亳 于仂亳仄亳 从舒仄亳
仆亟亠亶 亳从仂仍舒亠仆从仂, IBS. NVMf: 5 仄仍仆 IOPS 仗仂 亠亳 于仂亳仄亳 从舒仄亳
IBS
NVMf: 5 仄仍仆 IOPS 仗仂 亠亳 于仂亳仄亳 从舒仄亳 / 仆亟亠亶 亳从仂仍舒亠仆从仂 (IBS)
NVMf: 5 仄仍仆 IOPS 仗仂 亠亳 于仂亳仄亳 从舒仄亳 / 仆亟亠亶 亳从仂仍舒亠仆从仂 (IBS)NVMf: 5 仄仍仆 IOPS 仗仂 亠亳 于仂亳仄亳 从舒仄亳 / 仆亟亠亶 亳从仂仍舒亠仆从仂 (IBS)
NVMf: 5 仄仍仆 IOPS 仗仂 亠亳 于仂亳仄亳 从舒仄亳 / 仆亟亠亶 亳从仂仍舒亠仆从仂 (IBS)
Ontico
亅亠从亳于仆仂亠 亳仗仂仍亰仂于舒仆亳亠 x86-仂于仄亠亳仄 CPU (仍亠从亠亶 丐弍舒仍亳仆)
亅亠从亳于仆仂亠 亳仗仂仍亰仂于舒仆亳亠 x86-仂于仄亠亳仄 CPU (仍亠从亠亶 丐弍舒仍亳仆)亅亠从亳于仆仂亠 亳仗仂仍亰仂于舒仆亳亠 x86-仂于仄亠亳仄 CPU (仍亠从亠亶 丐弍舒仍亳仆)
亅亠从亳于仆仂亠 亳仗仂仍亰仂于舒仆亳亠 x86-仂于仄亠亳仄 CPU (仍亠从亠亶 丐弍舒仍亳仆)
Ontico
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
Alex Chistyakov
20100314 virtualization igotti_lecture06
20100314 virtualization igotti_lecture0620100314 virtualization igotti_lecture06
20100314 virtualization igotti_lecture06
Computer Science Club
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...
DevGAMM Conference
Git in Sky presentation @ HighLoad++ 2013
Git in Sky presentation @ HighLoad++ 2013Git in Sky presentation @ HighLoad++ 2013
Git in Sky presentation @ HighLoad++ 2013
Serguei Gitinsky
仆仂亞仂仗仂仂仆仂 于 亳亞舒. 亞仂 仂弍舒仆亳从仂于. CoreHard Spring 2019
仆仂亞仂仗仂仂仆仂 于 亳亞舒. 亞仂 仂弍舒仆亳从仂于. CoreHard Spring 2019仆仂亞仂仗仂仂仆仂 于 亳亞舒. 亞仂 仂弍舒仆亳从仂于. CoreHard Spring 2019
仆仂亞仂仗仂仂仆仂 于 亳亞舒. 亞仂 仂弍舒仆亳从仂于. CoreHard Spring 2019
corehard_by
亳从仂亠于亳: 仂仗 亳仗仂仍亰仂于舒仆亳 于 仆舒亞亢亠仆仆仂仄 仗仂亠从亠 / 舒亟亳仄 舒亟亳仂仆 (-丐亠)
亳从仂亠于亳: 仂仗 亳仗仂仍亰仂于舒仆亳 于 仆舒亞亢亠仆仆仂仄 仗仂亠从亠 / 舒亟亳仄 舒亟亳仂仆 (-丐亠)亳从仂亠于亳: 仂仗 亳仗仂仍亰仂于舒仆亳 于 仆舒亞亢亠仆仆仂仄 仗仂亠从亠 / 舒亟亳仄 舒亟亳仂仆 (-丐亠)
亳从仂亠于亳: 仂仗 亳仗仂仍亰仂于舒仆亳 于 仆舒亞亢亠仆仆仂仄 仗仂亠从亠 / 舒亟亳仄 舒亟亳仂仆 (-丐亠)
Ontico
How to cook a blockchain and not get burned
How to cook a blockchain and not get burned How to cook a blockchain and not get burned
How to cook a blockchain and not get burned
Alexander Syrotenko
T属Conf. 亞舒仆亳亰舒亳 舒亰舒弍仂从亳 Frontend. 亳舒仍亳亶 弌仍仂弍仂亟亳仆.
T属Conf. 亞舒仆亳亰舒亳 舒亰舒弍仂从亳 Frontend. 亳舒仍亳亶 弌仍仂弍仂亟亳仆.T属Conf. 亞舒仆亳亰舒亳 舒亰舒弍仂从亳 Frontend. 亳舒仍亳亶 弌仍仂弍仂亟亳仆.
T属Conf. 亞舒仆亳亰舒亳 舒亰舒弍仂从亳 Frontend. 亳舒仍亳亶 弌仍仂弍仂亟亳仆.
TKConf
仂亟仂亟 亳 亠仆仂仍仂亞亳亳, 亳仗仂仍亰亠仄亠 于 舒亰舒弍仂从亠 iOS-从仍亳亠仆舒 Viber, 亳亳仍仍 舒...
仂亟仂亟 亳 亠仆仂仍仂亞亳亳, 亳仗仂仍亰亠仄亠 于 舒亰舒弍仂从亠 iOS-从仍亳亠仆舒 Viber, 亳亳仍仍 舒...仂亟仂亟 亳 亠仆仂仍仂亞亳亳, 亳仗仂仍亰亠仄亠 于 舒亰舒弍仂从亠 iOS-从仍亳亠仆舒 Viber, 亳亳仍仍 舒...
仂亟仂亟 亳 亠仆仂仍仂亞亳亳, 亳仗仂仍亰亠仄亠 于 舒亰舒弍仂从亠 iOS-从仍亳亠仆舒 Viber, 亳亳仍仍 舒...
Yandex
舒从 仄 舒仆亳仄 亳 舒仆舒仍亳亰亳亠仄 弍仂仍仂亶 仂亳舒仍仆亶 亞舒, 舒从亳仄 舒亠仆亠于 (仂亳-...
舒从 仄 舒仆亳仄 亳 舒仆舒仍亳亰亳亠仄 弍仂仍仂亶 仂亳舒仍仆亶 亞舒, 舒从亳仄 舒亠仆亠于 (仂亳-...舒从 仄 舒仆亳仄 亳 舒仆舒仍亳亰亳亠仄 弍仂仍仂亶 仂亳舒仍仆亶 亞舒, 舒从亳仄 舒亠仆亠于 (仂亳-...
舒从 仄 舒仆亳仄 亳 舒仆舒仍亳亰亳亠仄 弍仂仍仂亶 仂亳舒仍仆亶 亞舒, 舒从亳仄 舒亠仆亠于 (仂亳-...
Ontico
JavaFX 2.0 overview
JavaFX 2.0 overviewJavaFX 2.0 overview
JavaFX 2.0 overview
Dmitry Buzdin
SECON'2016. 丼弍舒 仍亠从亠亶, 仂弍亳仍仆亠 亞舒弍仍亳 Unity
SECON'2016. 丼弍舒 仍亠从亠亶, 仂弍亳仍仆亠 亞舒弍仍亳 UnitySECON'2016. 丼弍舒 仍亠从亠亶, 仂弍亳仍仆亠 亞舒弍仍亳 Unity
SECON'2016. 丼弍舒 仍亠从亠亶, 仂弍亳仍仆亠 亞舒弍仍亳 Unity
SECON
弍亰仂 仗亠仗亠从亳于仆 弍舒亰 亟舒仆仆 亟仍 highload / 豫亳亶 舒亠亟亳仆仂于
弍亰仂 仗亠仗亠从亳于仆 弍舒亰 亟舒仆仆 亟仍 highload / 豫亳亶 舒亠亟亳仆仂于弍亰仂 仗亠仗亠从亳于仆 弍舒亰 亟舒仆仆 亟仍 highload / 豫亳亶 舒亠亟亳仆仂于
弍亰仂 仗亠仗亠从亳于仆 弍舒亰 亟舒仆仆 亟仍 highload / 豫亳亶 舒亠亟亳仆仂于
Ontico
Character creation pipeline for Age of Magic (3D mobile)
Character creation pipeline for Age of Magic (3D mobile)Character creation pipeline for Age of Magic (3D mobile)
Character creation pipeline for Age of Magic (3D mobile)
DevGAMM Conference
20 舒仗亠仍, DEV {highload}, "亠仄仂仆 于 弍仂仍仂仄 仗仂亠从亠 仗仂弍仍亠仄 亳 亳 亠亠仆亳 ...
20 舒仗亠仍, DEV {highload}, "亠仄仂仆 于 弍仂仍仂仄 仗仂亠从亠  仗仂弍仍亠仄 亳 亳 亠亠仆亳 ...20 舒仗亠仍, DEV {highload}, "亠仄仂仆 于 弍仂仍仂仄 仗仂亠从亠  仗仂弍仍亠仄 亳 亳 亠亠仆亳 ...
20 舒仗亠仍, DEV {highload}, "亠仄仂仆 于 弍仂仍仂仄 仗仂亠从亠 仗仂弍仍亠仄 亳 亳 亠亠仆亳 ...
IT-Portfolio
舒亰亞仂仆磳仄 ASP.NET Core / 仍 亠弍亳从亳亶 (WebStoating s.r.o.)
舒亰亞仂仆磳仄 ASP.NET Core / 仍 亠弍亳从亳亶 (WebStoating s.r.o.)舒亰亞仂仆磳仄 ASP.NET Core / 仍 亠弍亳从亳亶 (WebStoating s.r.o.)
舒亰亞仂仆磳仄 ASP.NET Core / 仍 亠弍亳从亳亶 (WebStoating s.r.o.)
Ontico
仆亟亠亶 亳从仂仍舒亠仆从仂, IBS. NVMf: 5 仄仍仆 IOPS 仗仂 亠亳 于仂亳仄亳 从舒仄亳
仆亟亠亶 亳从仂仍舒亠仆从仂, IBS. NVMf: 5 仄仍仆 IOPS 仗仂 亠亳 于仂亳仄亳 从舒仄亳仆亟亠亶 亳从仂仍舒亠仆从仂, IBS. NVMf: 5 仄仍仆 IOPS 仗仂 亠亳 于仂亳仄亳 从舒仄亳
仆亟亠亶 亳从仂仍舒亠仆从仂, IBS. NVMf: 5 仄仍仆 IOPS 仗仂 亠亳 于仂亳仄亳 从舒仄亳
IBS
NVMf: 5 仄仍仆 IOPS 仗仂 亠亳 于仂亳仄亳 从舒仄亳 / 仆亟亠亶 亳从仂仍舒亠仆从仂 (IBS)
NVMf: 5 仄仍仆 IOPS 仗仂 亠亳 于仂亳仄亳 从舒仄亳 / 仆亟亠亶 亳从仂仍舒亠仆从仂 (IBS)NVMf: 5 仄仍仆 IOPS 仗仂 亠亳 于仂亳仄亳 从舒仄亳 / 仆亟亠亶 亳从仂仍舒亠仆从仂 (IBS)
NVMf: 5 仄仍仆 IOPS 仗仂 亠亳 于仂亳仄亳 从舒仄亳 / 仆亟亠亶 亳从仂仍舒亠仆从仂 (IBS)
Ontico
亅亠从亳于仆仂亠 亳仗仂仍亰仂于舒仆亳亠 x86-仂于仄亠亳仄 CPU (仍亠从亠亶 丐弍舒仍亳仆)
亅亠从亳于仆仂亠 亳仗仂仍亰仂于舒仆亳亠 x86-仂于仄亠亳仄 CPU (仍亠从亠亶 丐弍舒仍亳仆)亅亠从亳于仆仂亠 亳仗仂仍亰仂于舒仆亳亠 x86-仂于仄亠亳仄 CPU (仍亠从亠亶 丐弍舒仍亳仆)
亅亠从亳于仆仂亠 亳仗仂仍亰仂于舒仆亳亠 x86-仂于仄亠亳仄 CPU (仍亠从亠亶 丐弍舒仍亳仆)
Ontico
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
Alex Chistyakov
20100314 virtualization igotti_lecture06
20100314 virtualization igotti_lecture0620100314 virtualization igotti_lecture06
20100314 virtualization igotti_lecture06
Computer Science Club

Unity_ Handmade graphics optimizations by Roman Chehowski

  • 2. OPTIMIZATION BASICS BATCHING LIGHTING SHADERS WORDS TO SAY
  • 3. BASICS BATCHING LIGHTING SHADERS 束 仗亠亟亟亠亶 亠亳亳損 亠仆亟亠, 亠亶亟亠, 仗仂-仗仂亠亳仆亞, etc. <DevGamm! Minsk 2014> Mobile engine/tools developer 于 Vizor Intreractive. 仗仂仍仂仄 仗仂亞舒仄仄亳 亞舒亳从亳 Unity3D 于 Steel Monkeys. 3 亞仂亟舒 仂仗舒 舒弍仂 亞舒亳从仂亶 (Adobe flash, DirectX, OpenGL, Metal) 舒弍仂舒仍 弍仂仍亳仄 从仂仍亳亠于仂仄 open- source 亳亞仂于 亟于亳亢从仂于
  • 5. 丐丐亂 个丕 束亠 亠亶舒損 () 弌仆舒舒仍舒 仗仂仍亳亠 仗亳亠仄仍亠仄亶 亠亰仍舒. 仂亞亟舒 仗仂亳亰于仂亟亳亠仍仆仂 仗亳仍仂亢亠仆亳 仆舒 亠仍亠于 仂亶于舒 舒 仆亠 舒亳于舒亠. 仄亠亠 亞亠亶仄-亟亳亰舒亶仆亠仂仄 亟仍 亠亠仆亳 于仂仗仂仂于 仂弍 亳亞仂于仂亶 亳仍亳亳从亠. 仄亠亠 2D/3D 亟仂亢仆亳从仂仄 亟仍 弍仂亶 仗亠亠亟亠仍从亳 亳亞仂于 亠仂于. BASICS BATCHING LIGHTING SHADERS
  • 6. 个丶亊 丼仂 于亳亰舒仍仆仂 亳亰仄亠仆亳 亟仍 亳亞仂从舒? 舒从仂于 仗亠亳仄亠于舒 亳 仆亠亟仂舒从亳 仂仗亳仄亳亰舒亳亳? 舒从亳亠 亳亞仂于亠 亠 仆亢仆仂 弍亟亠 仗亠亠亟亠仍于舒? 舒从仂亶 从仂亟 仆亢仆仂 仗亠亠仗亳于舒 (亳 从仂 弍亟亠 仂 亟亠仍舒)? 弌从仂仍从仂 于亠仄亠仆亳 亰舒亶仄亠 仂仗亳仄亳亰舒亳? 亅仆仂仗亳 (丼仂 仄仂亢亠 仆亠 亰舒舒弍仂舒?). 仗仂亠亠 仂仄舒仍亳亰舒亳亳, 仂于亠舒亠亠 仆舒 于仂仗仂: 束丼仂 亳仄亠仆仆仂 亟亠仍舒?損 亳 束弌从仂仍从仂 于亠仄亠仆亳 仂 亰舒亶仄亠?損 BASICS BATCHING LIGHTING SHADERS
  • 7. 个 亠 亳舒亶亠 仗仂仗亞舒亠于 (FPS, draw calls), 亰舒仄亠磺亠 于亠仄. 亠 亰舒仄亠磺亠 仗仂亳亰于仂亟亳亠仍仆仂 于 亠亳亠从仂仄 于舒从仄亠. 弌仂亰亟舒于舒亶亠 亠 亟仍 弍仂亞仂 仗仂仍亠仆亳 亠亰仍舒仂于. 舒仗亳于舒亶亠 render time, 舒 仆亠 frame time (仂 亳从仍ム亳 亳亰 亠亰仍舒舒 swap buffer delay 亳 vSync). 弍磶舒亠仍仆仂 仂亠仆亳于舒亶亠 束亟仂/仗仂仍亠損 仂仍从仂 仗仂 亟仂亳亢亠仆亳亳 仗仍舒仆亳亠仄仂亞仂 亠亰仍舒舒. 仂仍亳于 仄舒亳于 亠亰仍舒仂于 于亠仄亠仆亳, 弍亠亳亠 仄亠亟亳舒仆, 舒 仆亠 亠亟仆亠亠 舒亳仄亠亳亠从仂亠, 亳仆舒亠 亳从亠亠 仗仂仍亳 束亠亟仆ム 亠仄仗亠舒 仗仂 弍仂仍仆亳亠損. BASICS BATCHING LIGHTING SHADERS
  • 8. 个 UNITY-个 亠仄 Camera.Render() 于 仗仂舒亶仍亠亠 仂 亳仄亠仆仆仂 仂, 仂 舒仄 仆亢仆仂. 舒仗亳亳亠 仗仂亠仆从亳亶 MonoBehaviour: OnPreCull() 仆舒舒仍仂 亠亶仄舒 OnPostRender() 从仂仆亠 亠亶仄舒 OnGUI() 亟仍 于于仂亟舒 亠亰仍舒舒 BASICS BATCHING LIGHTING SHADERS
  • 9. General-purpose tools Unity profiler GDebugger (OpenGL desktop) Microsoft PiX (DirectX 9) ADB GL tracer (android) xCode instruments (iOS) Platform-specific tools: Adreno profiler (Qualcomm Adreno) PerfHUD ES (NVidia Tegra) Mali profiler (ARM Mali) PVRTune (Imagination tec PowerVR) 舒 仍亳仆仂仄 仂仗亠: Mali 舒仄舒 仗仂弍仍亠仄仆舒 Tegra 舒仄舒 仄亠亟仍亠仆仆舒 PowerVR 舒仄舒 仗仂亳亰于仂亟亳亠仍仆舒 BASICS BATCHING LIGHTING SHADERS
  • 10. 乘 丱: 丕仗仂舒亶亠 亠亶亟亠 丕仗仂舒亶亠 仗仂-仗仂亠亳仆亞 仗仂仍亰亶亠 仄亠仆亠 transparent-仂弍亠从仂于 仂亟从仍ム舒亶亠 LOD 仗仂仍亰亶亠 Material ID 舒仗亠从舒亶亠 于亠 亳 于仂亶于舒 仄舒亠亳舒仍仂于 于 vertexColor 亳 uv2 仗仂仍亰亶亠 native-亠从 弌仆亳亢舒亶亠 Fillrate 从仍ム舒亶亠 仂仗亳仄亳亰舒亳 Mesh亠亶 BASICS BATCHING LIGHTING SHADERS
  • 11. Static batching: (+) 亠 仆亢仆仂 仗仂仂礌仆仂 仗亠亠亰舒仗亳于舒 VBO. 亠仆亠 仆舒亞亰从舒 仆舒 CPU, 舒从 从舒从 仆亠 仆亢仆仂 舒仆仂仄亳仂于舒 于亠亳仆 于 runtime. 亠仄仆仂亞仂 仄亠仆亠 matrix multiplications 于 runtime. (-) 亠仆亟亠 仂亰亟舒亠 亳亰亳亠从 从仂仗亳 亰舒弍舒亠仆仆仂亶 亞亠仂仄亠亳亳. 亠 于仂亰仄仂亢仆仂亳 仗亠亠仄亠舒 舒亳亠从亳 亰舒弍舒亠仆仆亠 仂弍亠从. 仍 舒弍仂 frustum 亳 occlusion cullinga 亠弍亠 亟亳仆舒仄亳亠从舒 仗亠亠亰舒仗亳 index buffer. BASICS BATCHING LIGHTING SHADERS
  • 12. model matrix position world position _Object2World model matrix _World2Object inverse model matrix UNITY_MATRIX_MVP model-view-projection matrix BASICS BATCHING LIGHTING SHADERS
  • 16. [0] [1] [2] [3] [4] BASICS BATCHING LIGHTING SHADERS
  • 18. 仗仂仍亰亶亠 从舒从 仄仂亢仆仂 仄亠仆亠 亟亳仆舒仄亳亠从亳 亳仂仆亳从仂于 仂于亠亠仆亳 仆舒 亠仆亠 丕仄亠仆舒亶亠 从仂仍亳亠于仂 束per- pixel lights 于 Quality Settings. 仂仄亠舒亶亠 于仂仂亠仗亠仆仆亠 亳仂仆亳从亳 于亠舒 从舒从 束non- important損 亳 仂亞仂仄仆仂仄 从仂仍亳亠于亠 亳仂仆亳从仂于 仂于亠亠仆亳 仗仂亟从仍ム舒亶亠 Deferred shading 亠 仍亳从仂仄 仗仂仍舒亞舒亶亠 仆舒 Surface 亠亶亟亠. LIGHTING BASICS BATCHING LIGHTING SHADERS
  • 19. SubShader: Forward base GLES Base KEYWORD_A KEYWORD_B ... Shadow caster Shadow collector DX9 WP8 Playstation 3 Forward add Prepass base Prepass final Shader "Custom/NewShader" { Properties { _MainTex("Base (RGB)", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM #pragma surface surf Lambert sampler2D _MainTex; struct Input { float2 uv_MainTex; }; void surf (Input IN, inout SurfaceOutput o) { half4 c = tex2D(_MainTex, IN.uv_MainTex); o.Albedo = c.rgb; o.Alpha = c.a; } ENDCG } FallBack "Diffuse" } 舒亳舒仆 舒亠亞仂 亠亶亟亠舒: BASICS BATCHING LIGHTING SHADERS
  • 20. 12K triangles 24K vertices 5X Blend One One BASICS BATCHING LIGHTING SHADERS
  • 22. 2K triangles 4K vertices 1 仗仂仂亟 BASICS BATCHING LIGHTING SHADERS
  • 23. 丐丶亊 丿 仗仂仍亰亶亠 舒仗仂从亳仄舒亳亳. 丕仗仂舒亶亠 仄舒亠仄舒亳从. 亠亠仆仂亳亠 从仂亟 亳亰 仗亳从亠仍仆仂亞仂 亠亶亟亠舒 于 于亠亳仆仆亶 亠 仗亠仆亠弍亠亞舒亶亠 亳仆亳仆亳从舒仄亳 亳 于亠从仂亳亰舒亳亠亶 仂 于仂亰仄仂亢仆仂亳, 亳亰弍亠亞舒亶亠 于亠于仍亠仆亳 于 亠亶亟亠亠 仗仂仍亰亶亠 ARB_precision_hint 亳 仆亠仂弍仂亟亳仄仂亳 亠亟舒从亳亶亠 亞亠仆亠亳仂于仆仆亶 Unity 从仂亟 BASICS BATCHING LIGHTING SHADERS
  • 24. float x = (v1 * merge) + (v2 * (1.0 merge)); float x = lerp(v1, v2, merge); 亠 亳亰仂弍亠舒亶亠 于亠仍仂亳仗亠亟. 仂亳 于亠 亢亠 亠舒仍亳亰仂于舒仆仂 于 磶从亠 HLSL. 仆仂亞亟舒 亟仂弍仆仂 亳仗仂仍亰仂于舒 亳仆亳仆亳从亳 仆亠 仗仂 仗礆仂仄 仆舒亰仆舒亠仆亳. 丐弌 float4 result = dot(float4(0.3, 0.59, 0.11, 1.0), myColor); 亠 亰舒弍于舒亶亠 仗仂 min(), max(), abs(), mad(), 亳 .亟. BASICS BATCHING LIGHTING SHADERS
  • 25. 丐丶 亊 return a.yzx * b.zxy - a.zxy * b.yzx; return float3( a.y * b.z - a.z * b.y, a.z * b.x - a.x * b.z, a.z * b.y - a.y * b.z ); HLSL 从舒仍 仂 仂亟仆仂仄亠仆亠 于亠从仂, 仗仂仂仄: return float3(var, var, var); 仄仂亢亠亠 亟亠仍舒 swizzle 于 仍ミ頴笑, 亟仂弍仆仂仄 舒仄 仗仂磲从亠 return var.xxx; (舒 于仂仂弍亠, 仂 cross(a, b)) BASICS BATCHING LIGHTING SHADERS
  • 26. if(x == 0) return a; else if(x == 1) return b; return lerp(a, b, floor(x)); 仂舒舒亶亠 亳亰弍亠亞舒 于亠于仍亠仆亳 亟仍 亳于亳舒仍仆 仍舒亠于 仆亠从仂仂 仍舒, 于亠于仍亠仆亳亠 于亠-舒从亳 仍亠: if(x == 0) 仂亠仆 仄仆仂亞仂 从仂亟舒 else if(x == 1) clip(-1) BRANCHING BASICS BATCHING LIGHTING SHADERS
  • 27. struct VertexData { float a : TEXCOORD0; float b : TEXCOORD1; float c : TEXCOORD2; float d : TEXCOORD3; }; myMaterial.SetFloat(a, 1.0f); myMaterial.SetFloat(b, 2.0f); myMaterial.SetFloat(c, 3.0f); myMaterial.SetFloat(d, 4.0f); struct VertexData { float4 abcd : TEXCOORD0; }; myMaterial.SetVector( abcd, new Vector4(1.0f, 2.0f, 3.0f, 4.0f ); 仂亰于仂仍磳 亰舒仄亠仆亳 4 于亰仂于舒 glUniform1fv 仂亟仆亳仄 于亰仂于仂仄 glUniform4fv 丕 BASICS BATCHING LIGHTING SHADERS
  • 28. 舒于亠 仂 从仂亟 于仄亠仂 亳仂亟仆仂亞仂 从仂亟舒 舒亠亞仂 亠亶亟亠舒 BASICS BATCHING LIGHTING SHADERS
  • 29. 乘乘 仂亠 仂仗亳仄亳亰舒亳亳 亟仂仍亢亠仆 弍 亟仂舒仂仆仂 亟亠亠仄亳仆亳仂于舒仆 仗亳仄亳亰亳仂于舒 仄仂亢仆仂 仂仍从仂 亳仆舒仍仆 于亠亳 亳亞 亳仍亳 仄仂亟仍 仂 于亠仄 仂仗亳仄亳亰舒亳亳 仆仂于舒 于仂亰于舒舒亠亠 从 亰舒亟舒亠 亳 于 仗仂亠亠 仄仂亢亠亠 亠亳 仗仂弍仍亠仄, 从仂仂舒 从舒亰舒仍舒 仆亠舒亰亠亳仄仂亶 亳仍亳 弍仍舒 仂舒于仍亠仆舒 仆舒 束亳 舒从 仂亶亟亠β
  • 30. 弌弌 仂仗仂? roman.chehowski@vizor- interactive.by inangwis