3D Graphics for Dummies
3D Graphics for Dummies Significant content “borrowed” from Dan Chang @ Nintendo NTD “with permission” Chris Ryan CppCon 2021 github.com/ChrisR98008/CppCon20213 3D Graphics for Dummies4 3D Graphics Dummies5 3D Graphics for Dummies6 3D Graphics for Dummies7 3D Graphics for Dummies8 3D Graphics for Dummies9 3D Graphics for Dummies10 3D Graphics for Dummies11 3D Graphics for Dummies12 3D Graphics Graphics for Dummies13 3D Graphics for Dummies14 3D Graphics for Dummies15 3D Graphics for Dummies Winding / Right Hand Rule Fingers curled in the order of the points, thumb points up Counter clockwise0 码力 | 79 页 | 4.61 MB | 5 月前3Techniques to Optimise Multi-threaded Data Building During Game Development
building? • Differences from Game Code • Assumptions and Concepts 2. Techniques • Keep Threads Busy • 3D Caching • Optimise Sorting • Avoid Blocking Threads 3. Questions 2Three sections Background What Speaker notesCACHING STATIC WORLD DATA • Problems: ▪ Need to cache static world data for access using 3D coords ▪ Prevent tasks from duplicating IO and processing work • Usually use traditional spatial data from duplicating work - and code ▶ Traditionally use one of tree structures - recursively subdivide 3d space • K-D tree partitions by axially aligned plane • Octree into 8 octants surrounding centre point0 码力 | 99 页 | 2.40 MB | 5 月前3Making Games Start Fast: A Story About Concurrency
game rules & databases 14Start Enumeration Read Localization Load Audio Load 2D Assets Load 3D Assets Load Game Databases CPU: 5.6s Wait: 1.2s CPU: 8.2s Wait: 1.4s CPU: 7.3s Wait: 0.8s (Old) Startup Profile 15Start Enumeration Read Localization Load Audio Load 2D Assets Load 3D Assets Load Game Databases CPU: 0.5s Wait: 0.6s CPU: 0.9s Wait: 1.4s CPU: 4.5s Wait: 0.2s Threading Computations 3 40Side by Side Comparison 41Loading graphic assets ◉ Loading of both 2D and 3D assets was single threaded ◉ Huge speedup potential if we could spread it on all cores ◉ But0 码力 | 76 页 | 2.22 MB | 5 月前3Data Structures That Make Video Games Go Round
Made from scratch (no game engine). ● Short release cycle. ● Small, by modern standards.Today: ● 3D, Photorealistic, Physics based. ● Multi-threaded. ● Made with a game engine. ● Long development Physics Rendering Audio Simulation Rendering AudioSimulation Imagine our hypothetical game is 3D with a vast world. Multiple systems ticking, ● Entity Component Systems (ECS) ● Artificial Intelligence world by recursively subdividing. Quadtree Octree ● 2D ● Recursively subdivided into 4 spaces ● 3D ● Recursively subdivided into 8 spaces.Quadtrees & Octrees Used to partition space in the game world0 码力 | 196 页 | 3.03 MB | 5 月前3Go on GPU
Buffer Operations GPU Memory Vertex Buffer Frame Buffer Index Buffer Depth Buffer ... Vertices in 3D space as input Vertices positioned in screen space fragments (one per covered sample) shaded Infrastructure Nearly No mature framework* There are well known GUI frameworks: Fyne, Ebitengine, GioUI and a 3D engine g3n/engine 47 Changkun Ou. 2023. Go on GPU. GopherChina 2023. Session "Foundational Toolchains" Infrastructure Nearly No mature framework* There are well known GUI frameworks: Fyne, Ebitengine, GioUI and a 3D engine g3n/engine These frameworks have common limitations: 1. In Fyne, the underlying rendering0 码力 | 57 页 | 4.62 MB | 1 年前3PyArmor Documentation v8.1.9
informations: IPv4: 128.16.4.10 Enternet Addr: 00:16:3e:35:19:3d Hard Disk Serial Number: HXS2000CN2A Using -b to bind hardware information to obfuscated scripts scripts. For example, bind dist5/foo.py to enternet address: $ pyarmor gen -O dist5 -b 00:16:3e:35:19:3d foo.py So dist5/foo.py only could run in target machine. It’s same to bind IPv4 and serial number py It’s possible to combine some of them. For example: $ pyarmor gen -O dist5 -b "00:16:3e:35:19:3d HXS2000CN2A" foo.py Only both enternet address and hard disk are matched machine could run this obfuscated0 码力 | 131 页 | 111.00 KB | 1 年前3PyArmor Documentation v8.5.10
pyarmor.cli.hdinfo: Default Harddisk Serial Number: 'HXS2000CN2A' Default Mac address: '00:16:3e:35:19:3d' Default IPv4 address: '128.16.4.10' Before Pyarmor 8.4.6, using pyarmor-7 hdinfo to get hardware scripts. For example, bind dist5/foo.py to Ethernet address: $ pyarmor gen -O dist5 -b 00:16:3e:35:19:3d foo.py So dist5/foo.py only could run in target machine. It’s same to bind IPv4 and serial number py It’s possible to combine some of them. For example: $ pyarmor gen -O dist5 -b "00:16:3e:35:19:3d HXS2000CN2A" foo.py Only both Ethernet address and hard disk are matched machine could run this obfuscated0 码力 | 193 页 | 154.05 KB | 1 年前3Nim 2.0.8 Manual
context at instantiation are considered: In the example, the generic `==` for tuples (system.html#%3D%3D%2CT%2CT_2) (as de�ned in the system module) uses the == operators of the tuple's components. However lib/pure/strutils.toUpperAscii("abc") import lib/pure/strutils as strutils import "gfx/3d/somemodule" # in quotes because '3d' is not a valid Nim identifier From import statement After the from keyword, a0 码力 | 132 页 | 5.73 MB | 1 年前3Node.js Client & Web Bridge Ready for ROS 2.0
the existing protocol of JSON messages (ROS 1.0) ○ Existing Web Tools can be directly used, e.g. 2D/3D visualization ● Keep it fast and simple -- speed is the king; simplicity means easy to maintain ● Support multiple CNN models of Caffe* and Tensorflow* ● RealSenseTM depth camera: perceive the world in 3D ○ Up to 10 meter range, up to 90 fps ○ Realtime 1080p RGB video + 720p depth video ○ Integrated0 码力 | 19 页 | 2.09 MB | 1 年前3做一个有趣的多人 AR 游戏 - 刘冠杉
ARKit Plane Detection Sharing & Persistence Environment Texturing Image Detection 3D Object Detection 3D Object Scan Image Tracking Hit Testing Face Position & Orientation Tracking Facial Expressions0 码力 | 71 页 | 6.93 MB | 1 年前3
共 366 条
- 1
- 2
- 3
- 4
- 5
- 6
- 37