Tag: computergraphics

What Is an Image? – Cpp Computer Graphics Tutorial, (GPU, GUI, 2D Graphics and Pixels Explained) – Will Rosecrans

  • Lobby
  • Tag Archives: computergraphics

https://cppcon.org/
---

What Is an Image, Anyway? - Cpp Computer Graphics Tutorial, (GPU, 2D Graphics, GUI, Colorspaces, YUT, Planter Formats & Pixels Explained) - Will Rosecrans - CppCon 2022
https://github.com/CppCon/CppCon2022

We all have at least a vague idea of what an image is, and that they are useful. It has even been proposed that 2D graphics functionality be added to the C++ language. But many developers haven't gotten too far into the weeds with the topic. What is an image? Sure, it's a 2D array of pixels. But what are pixels? What do the values in the pixels really mean? And, are you sure it's always just a single 2D array? Or that every pixel format actually stores discrete pixels? The reality is that the concept of an image can be blurry and filled with corner cases that will bewilder the newcomer and exasperate even experts.

Take a journey from the absolute basics of images in a computer, through a brief survey a more advanced topics. How much memory you need to allocate for n pixels. Alignment of pixels for efficient processing. Types like 12 bit int and half-float that aren't native C++ types. Almost (but not quite) compatible pixel formats across some common API's. Colorspaces. Colorspaces, but as defined from a slightly different niche. Colorspaces. Subsampling used in video formats. Some of the complexities from using a GPU, like compressed formats and mixed type formats. The performance implications of needing redundant copies of pixel data to interoperate between different libraries and API's. And how much of this you need to be aware of when making API's that might get used by developers with use cases you hadn't considered.
---

Will Rosecrans

Will Rosecrans is an independent software developer. He has recent experience working at global scale on the EdgeCast/Edgio content delivery network which handles billions of web requests and video streams. He worked on build and CI systems for C++ server software and his work led to a patent on rapid configuration propagation. He previously worked in the visual effects industry, working on pipeline technology at Moving Picture Company, and was responsible for the general care and feeding of pixels and servers for advertising, TV and film projects. His academic background in film production includes the UCLA film production Summer Institute.
---

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk

#cppcon #programming #gpu

Filed under: UncategorizedTagged with: , , , ,

Optimizing A String Class for Computer Graphics in Cpp – by Zander Majercik & Morgan McGuire – CppCon 22

  • Lobby
  • Tag Archives: computergraphics

https://cppcon.digital-medium.co.uk/tag/cppcon/">cppcon.org/
---

SIMDString for Computer Graphics in C++ - Zander Majercik and Morgan McGuire - CppCon 2022
https://github.com/CppCon/CppCon2022

Video games and other real-time 3D graphics use a surprising number of C++ text strings, and need them to be fast. For example, strings are tags for language localization, UI elements, variable names for binding to GPU shaders and CPU interpreted scripts, and snippets for runtime code generation in those languages.

Our open source SIMDString class is a drop-in replacement for std::string optimized for graphics applications, which tend to perform a lot of copy construction and concatenation on relatively small strings. SIMDString was originally created for x86 and x64 desktop in the G3D Innovation Engine and later generalized for ARM edge and mobile at NVIDIA and Roblox. Versions have been in production use for a decade now.

SIMDString embeds short strings in the class to reduce heap allocation, intentionally aliases immutable const-segment strings, uses a freelist optimized allocator, leverages SIMD instructions, and has several micro-optimizations for good performance on all platforms. It is >5x faster than std::string and outperforms the previous optimized strings released by Facebook and Electronic Arts on which it builds.

In this talk we introduce SIMDString with a detailed case study of its performance when working with GPU shaders. We review the various optimizations one could use for strings and show why the ones employed in SIMDString are a good combination for graphics–as well as why some seemingly good ideas are actually inefficient in this application. We conclude with benchmark results for multiple string classes showing the tradeoffs between implementations.
---

Zander Majercik

Zander Majercik is a Research Scientist at NVIDIA. His main research interest is novel rendering algorithms with a focus on ray-tracing. He has also worked on projects in vision science, novel display technologies for XR systems, and deep learning algorithms. He graduated from Williams College with a BA in Computer Science.
---

Morgan McGuire

Morgan McGuire is the Chief Scientist at Roblox, channeling and accelerating innovation across the company to build a creative, safe, civil, and scalable Metaverse. Roblox combines social interaction with a dynamic 3D environment and economy, with research impact spanning both technology and social sciences.

Morgan is also known for previous work as a professor, game developer, and industry researcher. As Director of Hyperscale Graphics Research at NVIDIA, Morgan accelerated cloud graphics, esports, ray tracing, and augmented and virtual reality. Morgan's product work includes the NVIDIA RTXGI and Reflex SDKs and RTX GPUs; the Skylanders®, Call of Duty®, Marvel Ultimate Alliance®, and Titan Quest® series of video games series; the Unity game engine; the E Ink display used in the Amazon Kindle®; and the PeakStream high performance computing architecture acquired by Google. Morgan's scientific publications and patents span many areas of computer science, from compilers and networking to 3D graphics.

Morgan cochaired the EuroGraphics Symposium on Rendering, the ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games, the ACM SIGGRAPH Symposium on Non-Photorealistic Animation and Rendering, and the ACM SIGGRAPH / EuroGraphics High Performance Rendering conference, and was the founding Editor-in-Chief of the Journal of Computer Graphics Techniques. Morgan is the author or coauthor of “the bible” of 3D, Computer Graphics: Principles & Practice 3rd Edition, The Graphics Codex, Creating Games, the G3D Innovation Engine, the Markdeep document system, and chapters of several GPU Gems, ShaderX, and GPU Pro volumes.

Morgan holds faculty positions at the University of Waterloo and McGill University and was a full professor at Williams College. Morgan received Ph.D. and M.S. degrees from Brown University and M.Eng. and B.S. degrees from MIT.

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk

#cppcon.digital-medium.co.uk/tag/cppcon/">cppcon #cppcon.digital-medium.co.uk/tag/programming/">programming #cpp

Filed under: UncategorizedTagged with: , , , , , ,