Slides utilisée pour le premier meetup Unity3D Lyon. Unity va de l'avant avec la nouvelle branche 2018. Un tas de changements sont en cours de préparation, et d'autre déjà là et utilisables.
2. 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
3. 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
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
• 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
9. 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
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
13. 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)
14. 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
15. 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
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 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
22. 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 !
23. Des news de la 2018.3 – Roslyn Compiler / C# 7.2
Utilisation de Roslyon Compiler (Microsoft / Open Source).
24. 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 !
25. 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
26. C'est fini ! Des question ?
Twitter : @CYannick
Twitter : @DemonixisGames
Github : demonixis
LinkedIn : Yannick Comte
contact@demonixis.net