Les nouveautés d’Unity 2018
Meetup Unity Lyon #1 – Yannick Comte
Qui suis-je
- Chef de projet / Lead Developer XR @Wanadev
- Développeur indépendant @DemonixisGames
- Contributeur sur divers projets open source #github
- Spécialisé 3D, C# addict, Plateforme Windows, Réalité Virtuelle/Augmentée
- Blog : www.demonixis.net
- Derniers jeux : GunSpinning VR (PC VR, Xbox), Daedalis (Arcade VR)
Twitter : @Cyannick
LinkedIn : Yannick Comte
Sommaire
• La branche 2018 / Performance et qualité par défaut
• Unity Hub / Project Template
• Package Manager
• .Net 4.X & .Net Standard 2.0
• Scriptable Render Pipeline
• C# Job / Burst Compiler / ECS
• Quelques news en vrac
La branche 2018 / Performance et qualité par défaut
• De grands changements en cours dans le moteur
• Performance et qualité par défaut (SRP, PP, Jobs, ECS)
• Plus de modularité (Hub / Package Manager)
• Encore plus de contrôle (SRP)
• Encore plus artist-friendly (éditeur graphique de shader)
• Compatibilité cassé (Goodbye Windows XP!)
• Fonctionnalités supprimées (#UnityScript)
Unity Hub / Project Template
• Créer des projets
• Lancer des projets avec une
version/target spécifique
• Installer une version stable
ou beta
• Rajouter des composants si
nécessaire
• Ne gère pas encore la mise à
jour
Unity Hub / Project Template
• 2D et 3D sont ce que nous
avions avant
• 3D Ultra : Deferred
Renderer + Post Processing
+ Linear Color Space
• HDRP & Lightweight :
Nouveaux Renderers
optimisés PC, Console ou
Mobile XR avec Post
Processing + Linear Color
Space
Unity Hub / Project Template
• Contient aussi des presets pour l'import de certains assets
• Quelques assets graphiques de bonne qualité pour faire des tests
• Un petit guide d'explication
Package Manager
• Accessible depuis le menu
Window > Package Manager
• Permet d'installer des
packages en provenance
d'Unity
• Ils ne sont pas directement
inclus dans votre projet
• Projet propre, pas besoin de
les versionner !
• Possibilité de supprimer
certains packages
Package Manager
• C'est un gestionnaire de
paquet qui fonctionne sur
node.js
• On peut l'éditer à la main
• On peut ajouter de nouvelles
sources de paquets
.Net 4.X & .Net Standard 2.0
• La prise en charge de .Net 4.x et .Net Standard
2.0 est stable depuis la 2018.1 !
• Il faut l'activer depuis les PlayerSettings
• Aujourd'hui C# 6.0
• Debug IL2CPP
• La version 2018.3 apportera la prise en charge
de C# 7.x (cc ref return)
• Activé par défaut dans Unity 2018.3 et .Net 3.5
déprécié.
• .Net 3.5 supprimé dans Unity 2019
.Net 4.X & .Net Standard 2.0
Encore plus de choses comme ça dans Unity 2018.3 avec
par exemple la possibilité de renvoyer des références
depuis une fonction ou une propriété ! #Performances
Scriptable RenderPipeline
Scriptable RenderPipeline
• Programmer sa propre boucle de rendu en C#
• Deux Renderers livrés par Unity
• Lightweight Renderer pour mobile et XR
• HD Renderer pour PC, Console et prochainement VR
• Architecture récente (Compute Shader, DX11, OpenGL ES3, Vulkan, Metal,
Multithreading)
• Fonctionne avec la stack post processing V2
• Fonctionne avec ShaderGraph
• Open Source (https://github.com/Unity-Technologies/ScriptableRenderPipeline)
SRP – Lightweight Render Pipeline
• Forward Renderer
• Single Pass Lighting
• 8 Pixel Lights
• 4 Vertex Lights
• Profiles permettant de régler le
renderer à ses besoins ! (HDR,
Depth map, Cascade Shadowmap,
etc..)
• Mobile, XR, WebGL
(prochainement)
https://www.youtube.com/watch?v=4TaX4FDSpp0
SRP – HD Render Pipeline
• Hybrid Forward / Deferred avec Tiled
Lighting
• Volumetric Fog
• Line / Rectangle Lights
• Post Processing Avancé
• ScreenSpace Reflection, Refraction,
Scattering
• Nouveau set de shaders ultra complets
! #tesselation
• Pas de VR, pas de shader Terrain
• Mais ça arrive... #github
SRP – ShaderGraph
• Créer des shaders graphiquement
• Sans avoir besoin de connaitre
HLSL, GLSL ou autre chose
• Possibilité de jouer avec le vertex
shader (Position)
• Pleins de nœuds super bien (Make
Normal Map, Noise, etc...)
• Fonctionne sur Lightweight et HD
• Artist Friendly
C# Job / Burst Compiler / ECS
• Nouvelle façon de faire du travail
parallèle dans Unity
• Possibilité de créer des meshes, de
faire de la physique, etc... Sur tous les
cores !
• Solution de choix quand couplé au
nouveau système entité composant
qui arrive prochainement
• Burst optimise le code jobs en tirant
partie au mieux de la plateforme cible
Jobs + Burst + ECS
https://goo.gl/bM1dvh
C# Job System - Exemple
• Un script de base qui permet de déplacer un objet sur la scène
• Pas de multithreading ici...
C# Job System - Exemple
• Il faut déjà créer un Job, c'est une structure qui implémente une interface
• On surcharge la méthode Execute avec le code à exécuter en parallèle
C# Job System - Exemple
• Dans une autre classe (un manager, etc...) on stock les transforms (dans
notre cas) des objets à mettre à jour
• On lance le job avec les paramètres nécessaire et c'est tout !
Quelques news en vrac
• Possibilité de compiler les .cpp et .java depuis Unity pour les
projets Android
• Grande amélioration du système de particules. GPU Instancing !
• Capture 360 3D
• Editeur tournant avec Vulkan
• Possibilité de créer des presets dans l’éditeur
• Progressive Lightmaper désormais stable
• Nouveau système d’Input
Des news de la 2018.3 – PLM sur GPU
Utilisation du GPU pour le Progressive Lightmaper ! Les temps de
backing vont être drastiquement réduits !
Des news de la 2018.3 – Roslyn Compiler / C# 7.2
Utilisation de Roslyon Compiler (Microsoft / Open Source).
Des news de la 2018.3 – Multithreading dans
WebAssembly
Le multithreading sur WebAssembly va permettre de déployer des
jeux WebGL fonctionnant enfin sur plusieurs Threads !
Des news de la 2018.3 – Prefab Workflows
Nouveau workflow sur les prefabs pour les imbriquer et travailler plus
efficacement avec ! Build de test ici https://unity3d.com/fr/prefabs
C'est fini ! Des question ?
Twitter : @CYannick
Twitter : @DemonixisGames
Github : demonixis
LinkedIn : Yannick Comte
contact@demonixis.net

Les nouveautés d'Unity 2018

  • 1.
    Les nouveautés d’Unity2018 Meetup Unity Lyon #1 – Yannick Comte
  • 2.
    Qui suis-je - Chefde projet / Lead Developer XR @Wanadev - Développeur indépendant @DemonixisGames - Contributeur sur divers projets open source #github - Spécialisé 3D, C# addict, Plateforme Windows, Réalité Virtuelle/Augmentée - Blog : www.demonixis.net - Derniers jeux : GunSpinning VR (PC VR, Xbox), Daedalis (Arcade VR) Twitter : @Cyannick LinkedIn : Yannick Comte
  • 3.
    Sommaire • La branche2018 / Performance et qualité par défaut • Unity Hub / Project Template • Package Manager • .Net 4.X & .Net Standard 2.0 • Scriptable Render Pipeline • C# Job / Burst Compiler / ECS • Quelques news en vrac
  • 4.
    La branche 2018/ Performance et qualité par défaut • De grands changements en cours dans le moteur • Performance et qualité par défaut (SRP, PP, Jobs, ECS) • Plus de modularité (Hub / Package Manager) • Encore plus de contrôle (SRP) • Encore plus artist-friendly (éditeur graphique de shader) • Compatibilité cassé (Goodbye Windows XP!) • Fonctionnalités supprimées (#UnityScript)
  • 5.
    Unity Hub /Project Template • Créer des projets • Lancer des projets avec une version/target spécifique • Installer une version stable ou beta • Rajouter des composants si nécessaire • Ne gère pas encore la mise à jour
  • 6.
    Unity Hub /Project Template • 2D et 3D sont ce que nous avions avant • 3D Ultra : Deferred Renderer + Post Processing + Linear Color Space • HDRP & Lightweight : Nouveaux Renderers optimisés PC, Console ou Mobile XR avec Post Processing + Linear Color Space
  • 7.
    Unity Hub /Project Template • Contient aussi des presets pour l'import de certains assets • Quelques assets graphiques de bonne qualité pour faire des tests • Un petit guide d'explication
  • 8.
    Package Manager • Accessibledepuis le menu Window > Package Manager • Permet d'installer des packages en provenance d'Unity • Ils ne sont pas directement inclus dans votre projet • Projet propre, pas besoin de les versionner ! • Possibilité de supprimer certains packages
  • 9.
    Package Manager • C'estun gestionnaire de paquet qui fonctionne sur node.js • On peut l'éditer à la main • On peut ajouter de nouvelles sources de paquets
  • 10.
    .Net 4.X &.Net Standard 2.0 • La prise en charge de .Net 4.x et .Net Standard 2.0 est stable depuis la 2018.1 ! • Il faut l'activer depuis les PlayerSettings • Aujourd'hui C# 6.0 • Debug IL2CPP • La version 2018.3 apportera la prise en charge de C# 7.x (cc ref return) • Activé par défaut dans Unity 2018.3 et .Net 3.5 déprécié. • .Net 3.5 supprimé dans Unity 2019
  • 11.
    .Net 4.X &.Net Standard 2.0 Encore plus de choses comme ça dans Unity 2018.3 avec par exemple la possibilité de renvoyer des références depuis une fonction ou une propriété ! #Performances
  • 12.
  • 13.
    Scriptable RenderPipeline • Programmersa propre boucle de rendu en C# • Deux Renderers livrés par Unity • Lightweight Renderer pour mobile et XR • HD Renderer pour PC, Console et prochainement VR • Architecture récente (Compute Shader, DX11, OpenGL ES3, Vulkan, Metal, Multithreading) • Fonctionne avec la stack post processing V2 • Fonctionne avec ShaderGraph • Open Source (https://github.com/Unity-Technologies/ScriptableRenderPipeline)
  • 14.
    SRP – LightweightRender Pipeline • Forward Renderer • Single Pass Lighting • 8 Pixel Lights • 4 Vertex Lights • Profiles permettant de régler le renderer à ses besoins ! (HDR, Depth map, Cascade Shadowmap, etc..) • Mobile, XR, WebGL (prochainement) https://www.youtube.com/watch?v=4TaX4FDSpp0
  • 15.
    SRP – HDRender Pipeline • Hybrid Forward / Deferred avec Tiled Lighting • Volumetric Fog • Line / Rectangle Lights • Post Processing Avancé • ScreenSpace Reflection, Refraction, Scattering • Nouveau set de shaders ultra complets ! #tesselation • Pas de VR, pas de shader Terrain • Mais ça arrive... #github
  • 16.
    SRP – ShaderGraph •Créer des shaders graphiquement • Sans avoir besoin de connaitre HLSL, GLSL ou autre chose • Possibilité de jouer avec le vertex shader (Position) • Pleins de nœuds super bien (Make Normal Map, Noise, etc...) • Fonctionne sur Lightweight et HD • Artist Friendly
  • 17.
    C# Job /Burst Compiler / ECS • Nouvelle façon de faire du travail parallèle dans Unity • Possibilité de créer des meshes, de faire de la physique, etc... Sur tous les cores ! • Solution de choix quand couplé au nouveau système entité composant qui arrive prochainement • Burst optimise le code jobs en tirant partie au mieux de la plateforme cible Jobs + Burst + ECS https://goo.gl/bM1dvh
  • 18.
    C# Job System- Exemple • Un script de base qui permet de déplacer un objet sur la scène • Pas de multithreading ici...
  • 19.
    C# Job System- Exemple • Il faut déjà créer un Job, c'est une structure qui implémente une interface • On surcharge la méthode Execute avec le code à exécuter en parallèle
  • 20.
    C# Job System- Exemple • Dans une autre classe (un manager, etc...) on stock les transforms (dans notre cas) des objets à mettre à jour • On lance le job avec les paramètres nécessaire et c'est tout !
  • 21.
    Quelques news envrac • Possibilité de compiler les .cpp et .java depuis Unity pour les projets Android • Grande amélioration du système de particules. GPU Instancing ! • Capture 360 3D • Editeur tournant avec Vulkan • Possibilité de créer des presets dans l’éditeur • Progressive Lightmaper désormais stable • Nouveau système d’Input
  • 22.
    Des news dela 2018.3 – PLM sur GPU Utilisation du GPU pour le Progressive Lightmaper ! Les temps de backing vont être drastiquement réduits !
  • 23.
    Des news dela 2018.3 – Roslyn Compiler / C# 7.2 Utilisation de Roslyon Compiler (Microsoft / Open Source).
  • 24.
    Des news dela 2018.3 – Multithreading dans WebAssembly Le multithreading sur WebAssembly va permettre de déployer des jeux WebGL fonctionnant enfin sur plusieurs Threads !
  • 25.
    Des news dela 2018.3 – Prefab Workflows Nouveau workflow sur les prefabs pour les imbriquer et travailler plus efficacement avec ! Build de test ici https://unity3d.com/fr/prefabs
  • 26.
    C'est fini !Des question ? Twitter : @CYannick Twitter : @DemonixisGames Github : demonixis LinkedIn : Yannick Comte contact@demonixis.net