Maximizing performance of 3D user-generated assets in Unity
The document discusses optimizing 3D assets in Unity. It begins with an introduction and agenda, then covers optimization principles through examples from a trail renderer asset. The examples demonstrate reducing garbage collection by using queues instead of arrays, reusing components instead of creating new game objects, and comparing distances through dot products instead of taking square roots. Hands-on demonstrations are provided. Key takeaways are to profile for garbage collection, eliminate it by reusing objects when possible, and optimize comparisons.
Options and trade offs for parallelism and concurrency in Modern C++Satalia
While threads have become a first class citizen in C++ since C++11, it is not always the case that they are the best abstraction to express parallelism where the objective is to speed up computations. OpenMP is a parallelism API for C/C++ and Fortran that has been around for a long time. Intel's Threading Building Blocks (TBB) is only a little bit more than 10 years old, but is very mature, and specifically for C++.
Mats will introduce OpenMP and TBB and their use in modern C++ and provide some best practices for them as well as try to predict what the C++ standard has in store for us when it comes to parallelism in the future.
Options and trade offs for parallelism and concurrency in Modern C++Satalia
While threads have become a first class citizen in C++ since C++11, it is not always the case that they are the best abstraction to express parallelism where the objective is to speed up computations. OpenMP is a parallelism API for C/C++ and Fortran that has been around for a long time. Intel's Threading Building Blocks (TBB) is only a little bit more than 10 years old, but is very mature, and specifically for C++.
Mats will introduce OpenMP and TBB and their use in modern C++ and provide some best practices for them as well as try to predict what the C++ standard has in store for us when it comes to parallelism in the future.
This file contains all the practicals with output regarding GTU syllabus. so it will help to IT and Computer engineering students. It is really knowledgeable so refer these for computer graphics practicals.
Video: https://youtu.be/dYhrCUFN0eM
Article: https://medium.com/p/the-gentlest-introduction-to-tensorflow-248dc871a224
Code: https://github.com/nethsix/gentle_tensorflow/blob/master/code/linear_regression_one_feature.py
This alternative introduction to Google's official Tensorflow (TF) tutorial strips away the unnecessary concepts that overly complicates getting started. The goal is to use TF to perform Linear Regression (LR) that has only a single-feature. We show how to model the LR using a TF graph, how to define the cost function to measure how well the an LR model fits the dataset, and finally train the LR model to find the best fit model.
Gentlest Introduction to Tensorflow - Part 3Khor SoonHin
Articles:
* https://medium.com/all-of-us-are-belong-to-machines/gentlest-intro-to-tensorflow-part-3-matrices-multi-feature-linear-regression-30a81ebaaa6c
* https://medium.com/all-of-us-are-belong-to-machines/gentlest-intro-to-tensorflow-4-logistic-regression-2afd0cabc54
Video: https://youtu.be/F8g_6TXKlxw
Code: https://github.com/nethsix/gentle_tensorflow
In this part, we:
* Use Tensorflow for linear regression models with multiple features
* Use Tensorflow for logistic regression models with multiple features. Specifically:
* Predict multi-class/discrete outcome
* Explain why we use cross-entropy as cost function
* Explain why we use softmax
* Tensorflow Cheatsheet #1
* Single feature linear regression
* Multi-feature linear regression
* Multi-feature logistic regression
This file contains all the practicals with output regarding GTU syllabus. so it will help to IT and Computer engineering students. It is really knowledgeable so refer these for computer graphics practicals.
Video: https://youtu.be/dYhrCUFN0eM
Article: https://medium.com/p/the-gentlest-introduction-to-tensorflow-248dc871a224
Code: https://github.com/nethsix/gentle_tensorflow/blob/master/code/linear_regression_one_feature.py
This alternative introduction to Google's official Tensorflow (TF) tutorial strips away the unnecessary concepts that overly complicates getting started. The goal is to use TF to perform Linear Regression (LR) that has only a single-feature. We show how to model the LR using a TF graph, how to define the cost function to measure how well the an LR model fits the dataset, and finally train the LR model to find the best fit model.
Gentlest Introduction to Tensorflow - Part 3Khor SoonHin
Articles:
* https://medium.com/all-of-us-are-belong-to-machines/gentlest-intro-to-tensorflow-part-3-matrices-multi-feature-linear-regression-30a81ebaaa6c
* https://medium.com/all-of-us-are-belong-to-machines/gentlest-intro-to-tensorflow-4-logistic-regression-2afd0cabc54
Video: https://youtu.be/F8g_6TXKlxw
Code: https://github.com/nethsix/gentle_tensorflow
In this part, we:
* Use Tensorflow for linear regression models with multiple features
* Use Tensorflow for logistic regression models with multiple features. Specifically:
* Predict multi-class/discrete outcome
* Explain why we use cross-entropy as cost function
* Explain why we use softmax
* Tensorflow Cheatsheet #1
* Single feature linear regression
* Multi-feature linear regression
* Multi-feature logistic regression
VR, a new technology over 40,000 years oldWithTheBest
Virtual Reality is at once both cutting edge, and a descendant of humanity's most ancient arts. Google's Chief Game Designer will bring some perspective to the origins of VR, why it matters to us in terms of evolution and storytelling, and give an overview of how Google is now supporting VR with tech like Google Cardboard, Android N, Daydream VR, and Spotlight Stories.
Transported vr the virtual reality platform for real estateWithTheBest
We all know that buying a house is an emotional purchase. Facts and figures don’t sell houses. Imagination does. // A buyer walking through a home and imagining their new life there is the most powerful tool you can wield. // So how do we build virtual reality experiences that create walkthroughs that are a near perfect substitute for an in-person showing
Global demand for Mixed Realty (VR/AR) content is about to explode. WithTheBest
Commercial success depends upon the ability of VR producers to understand the complexities of creating and finishing, high-quality, content and finding an audience.
The most important part of VR interaction is the person doing the interacting. Human-centered interaction design focuses on the human side of communication between user and machine: the interface from the user’s perspective. Focusing on users is more important for VR than for any other medium. When VR is done well, interactions can be brilliant and pleasurable, but when done badly, they can result in frustration, fatigue, and sickness. Many causes of bad VR are centered on a lack of understanding of human perception, intuitive interaction, design principles, and real users. Quality interactions enhance user understanding of what has just occurred, what is happening, what can be done, and how to do it. For optimal VR experiences, goals and needs must be efficiently achieved, and the experiences must be engaging and enjoyable.
Value Objects, Full Throttle (to be updated for spring TC39 meetings)Brendan Eich
Slides I prepared for the 29 January 2014 Ecma TC39 meeting, on Value Objects in JS, an ES7 proposal -- this one shotgunned the roadmap-space of declarative syntax, to find the right amount per TC39 (nearly zero, turns out).
Business Dashboards using Bonobo ETL, Grafana and Apache AirflowRomain Dorgueil
Zero-to-one hands-on introduction to building a business dashboard using Bonobo ETL, Apache Airflow, and a bit of Grafana (because graphs are cool). The talk is based on the early version of our tools to visualize apercite.fr website. Plan, Implementation, Visualization, Monitoring and Iterate from there.
"Optimization of a .NET application- is it simple ! / ?", Yevhen TatarynovFwdays
Optimization of .NET application seems complex and tied full task, but don’t hurry up with conclusions. Let’s look on several cases from real projects.
For this we:
look under the hood of an application from a real project;
define the metric for optimization;
choose the necessary tools;
find bottlenecks /memory leaks and best practice to resolve them.
We'll improve the application step by step and we’ll what with simple analysis and simple best practice we can significantly reduce total resources usage.
It's not your mother's C++ anymore. Manual memory management, tedious loops, difficult-to-use STL algorithms -- are all a thing of the past now. The new C++ 11 standard contains a huge number of improvements to the C++ core language and standard library, and can help C++ developers be more productive.
In this session we will discuss the major features of C++ 11, including lambda functions, type inference for local variables, range-based for loops, smart pointers, and more. We will see how to use these features effectively to modernize your existing C++ programs and how to develop in the modern C++ style.
A talk from Toronto's FITC Spotlight on Hardware talk. I spoke about using tools like Openframeworks, OpenCV, and the Kinect to create Interactive Installations, and paired it with an interactive lighting installation.
References, citations, and source code can be found here: http://www.andrewlb.com/2013/06/sls-notes/
Being a slow interpreter, Python may drive a system to deliver utmost speed if some guidelines are followed. The key is to treat programming languages as syntactic sugar to the machine code. It expedites the workflow of timing, iterative design, automatic testing, optimization, and realize an HPC system balancing the time to market and quality of code.
Speed is the king. 10x productive developers change business. So does 10x faster code. Python is 100x slower than C++ but it only matters when you really use Python to implement number-crunching algorithms. We should not do that, and instead go directly with C++ for speed. It calls for strict disciplines of software engineering and code quality, but it should be noted that here the quality is defined by the runtime and the time to market.
The presentation focuses on the Python side of the development workflow. It is made possible by confining C++ in architecture defined by the Python code, which realizes most of the software engineering. The room for writing fast C++ code is provided by pybind11 and careful design of typed data objects. The data objects hold memory buffers exposed to Python as numpy ndarrays for direct access for speed.
A Simple 3D Graphics Engine Written in Python and Allegrosnowfarthing
This document contains the source code of a graphics engine I wrote several years ago. The libraries have changed quite a bit since I first wrote it, and so I can sometimes get it to work, and sometimes I can\'t. For anyone who wishes to try to run the program as-is, good luck! It can also serve as a reference point for future work.
As the amount of metrics, software that produce and process them, and people involved in them continue to increase, we need better ways to organize them, to make them self-describing, and do so in a way that is consistent. Leveraging this, we can then automatically build graphs and dashboards, given a query that represents an information need, even for complicated cases. We can build richer visualizations, alerting and fault detection. This talk will introduce the concepts and related tools, demonstrate possibilities using the Graph-Explorer interface, and lay the groundwork for future work.
ITT 2014 - Chris Eidhof - Practical Concurrent ProgrammingIstanbul Tech Talks
Chris highlights the benefits and different techniques of doing concurrent programming and show how developers can avoid some obvious and some not so obvious mistakes.
Architecture for scalable Angular applications (with introduction and extende...Paweł Żurowski
Architecture for applications that scales. It uses redux pattern and ngrx implementation with effects and store.
It's refreshed (but still 2+) presentation from my inner talk for colegues.
It's refreshed again and extended by quick and dirty introduction to Angular with verbose example.
Numerical tour in the Python eco-system: Python, NumPy, scikit-learnArnaud Joly
We first present the Python programming language and the NumPy package for scientific computing. Then, we devise a digit recognition system highlighting the scikit-learn package.
JavaScript is evolving. It’s an exciting time to be involved with this ubiquitous language of the web. Every year, we get exciting new features landing as part of the language. Let’s explore the freshly released features that were part of the 2019 ECMAScript specification. We’ll also briefly explore the process of how new features get proposed and added to the language, as well as the leading contenders expected to land in ES2020.
Flash over the years, has been used to prop up the regular browser like a sad old man drinking alone in a pub.
Today browsers come shipped with technology designed to rival flash and aim to shut it squarely out of the game.
Are browser ready to rock without Flash?
Similar to Maximizing performance of 3 d user generated assets in unity (20)
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
The field of Information retrieval (IR) is currently undergoing a transformative shift, at least partly due to the emerging applications of generative AI to information access. In this talk, we will deliberate on the sociotechnical implications of generative AI for information access. We will argue that there is both a critical necessity and an exciting opportunity for the IR community to re-center our research agendas on societal needs while dismantling the artificial separation between the work on fairness, accountability, transparency, and ethics in IR and the rest of IR research. Instead of adopting a reactionary strategy of trying to mitigate potential social harms from emerging technologies, the community should aim to proactively set the research agenda for the kinds of systems we should build inspired by diverse explicitly stated sociotechnical imaginaries. The sociotechnical imaginaries that underpin the design and development of information access technologies needs to be explicitly articulated, and we need to develop theories of change in context of these diverse perspectives. Our guiding future imaginaries must be informed by other academic fields, such as democratic theory and critical theory, and should be co-developed with social science scholars, legal scholars, civil rights and social justice activists, and artists, among others.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
2. DBA since May 2015
Incorporated March 2016
Your Speaker
2003
Games & Websites as a hobby
2008
Freelance
web development
2011 - 2014 - 2015
USC Film Production
→
Interactive Entertainment
Freeform Labs
Inception Feb 2014
Funded March 2016
9. Encapsulation grumble grumble
public float maxAngle → [SerializeField] private float _maxAngle
Hold down alt for magic Buy ReSharper for more magic
Full disclosure: I have no affiliation with ReSharper. They don’t give me money. I just really like it.
10. Start
private void Start()
{
_trailObj = new GameObject("Trail"); // Why have a game object that just controls another one?
_trailObj.transform.parent = null;
_trailObj.transform.position = Vector3.zero;
_trailObj.transform.rotation = Quaternion.identity;
_trailObj.transform.localScale = Vector3.one;
var meshFilter = (MeshFilter)_trailObj.AddComponent(typeof(MeshFilter));
_mesh = meshFilter.mesh;
_trailObj.AddComponent(typeof(MeshRenderer));
_instanceMaterial = new Material(_material);
_fadeOutRatio = 1f / _instanceMaterial.GetColor("_TintColor").a;
_trailObj.GetComponent<Renderer>().material = _instanceMaterial;
}
Prefer Observation
[SerializeField] private Transform _source;
RequireComponent
[RequireComponent(typeof(MeshFilter))]
[RequireComponent(typeof(MeshRenderer))]
public class Trail : MonoBehaviour {
Destroy(_trailObj);
Destroy(this); // ???
New Start
private void Start()
{
_mesh = GetComponent<MeshFilter>().mesh;
_instanceMaterial = new Material(_material);
_fadeOutRatio = 1f /
_instanceMaterial.GetColor("_TintColor").a;
_renderer = GetComponent<MeshRenderer>();
_renderer.material = _instanceMaterial;
}
(because the mesh origin needs to
be stationary, that’s why)
11. Avoid Reflection
if (_pointCnt < 2)
{
_trailObj.GetComponent<Renderer>().enabled = false;
return;
}
_trailObj.GetComponent<Renderer>().enabled = true;
Revised
if (_pointCnt < 2)
{
_renderer.enabled = false;
return;
}
_renderer.enabled = true;
Add to Class
private MeshRenderer _renderer;
In Start
_renderer = GetComponent<MeshRenderer>();
12. Optimize by actually optimizing, not reducing quality
// Optimization
if (_pointCnt > _optimizeCount)
{
_maxAngle += _optimizeAngleInterval;
_maxVertexDistance += _optimizeDistanceInterval;
_optimizeCount += 1;
}
13. Heap vs Stack
Long-term, Garbage Collected
● Class instances
● Arrays
○ Even tiny ones (ノಥ益ಥ)ノ
Very short-term
● POD
● Structs
○ … sometimes
14. Points are being deleted and reallocated at runtime
for (var i = _pointCnt - 1; i >= 0; i--) {
var point = _points[i];
if (point == null || point.TimeAlive > _segmentLifetime) {
_points[i] = null;
_pointCnt--;
} else break;
}
if (_emit) {
if (_pointCnt == 0) {
_points[_pointCnt++] = new Point(_source.transform);
_points[_pointCnt++] = new Point(_source.transform);
}
...
15. indices > _pointCnt are ignored anyways
for (var i = _pointCnt - 1; i >= 0; i--) {
var point = _points[i];
if (point == null || point.TimeAlive > _segmentLifetime) {
_points[i] = null;
_pointCnt--;
} else break;
}
if (_emit) {
// Make sure there are always at least 2 points when emitting
if (_pointCnt < 2) {
if (_pointCnt < 1) InsertPoint();
InsertPoint();
}
...
16. RAM & Speed
Putting things away and taking
them out again takes a lot of time
17. Shifting is unnecessarily expensive
Removing old points
for (var i = _pointCnt - 1; i >= 0; i--){
var point = _points[i];
if (point.TimeAlive >
_segmentLifetime) {
_pointCnt--;
} else break;
}
Adding new points
for(int i = pointCnt; i > 0; i--)
points[i] = points[i-1];
points[0] = new Point(transform);
pointCnt++;
What about adding new points on top of the
array?
Just reverses problem
What about a Queue?
Yes!
18. using (var e = _ints.GetEnumerator()) {
while (e.MoveNext()) {
_current += e.Current;
}
}
for (var i = 0; i < _ints.Count; i++) {
var item = _ints.Dequeue();
_current += item;
_ints.Enqueue(item);
}
Unity’s Enumerator Problem
19. Temporary Arrays
// Rebuild it
var vertices = new Vector3[pointCount * 2];
var uvs = new Vector2[pointCount * 2];
var triangles = new int[(pointCount - 1) * 6];
var meshColors = new Color[pointCount * 2];
5.3 MB/s
20. Comparing Distance
var sqrDistance = (
_points[1].Position -
_source.transform.position
).sqrMagnitude;
if (sqrDistance > _minVertexDistance * _minVertexDistance)
{
…
}
if (Vector3.Dot(a, b) > _preSquaredBasis) …
21. Comparing Distance
a2 + b2 = c2
a2 + b2 + c2 = d2
d = sqrt ( a2 + b2 + c2 )
Square root is a relatively expensive operation
Dot == a2 + b2 + c2
Vector3.Distance == Sqrt ( Dot ( A , B ) )
Comparing dots is faster than comparing distances
Double trouble: Unity’s Vector3.Dot uses doubles
22. Other Optimizations
Use arrays for vertex, color, uv buffers (triangle buffer must be a List)
Make Point a struct (Pre-allocate)
Eliminate (inline) pool
Eliminate Points altogether, work directly with vertices?
23. What about extra vertices?
It turns out, any number of extra
verts/colors/etc. have negligible impact
Only triangles matter!
mesh.SetTriangles takes a List
25. 34 to 60KB garbage + .41ms
vs
0B garbage + .24ms
(per frame)
26. Takeaways
Use the Unity Profiler’s gcalloc column to find out where heap allocation occurs
First use utilities like Queue, List to eliminate GC, then once your pattern is confirmed
to work and the design is locked down, you can refactor to naked arrays
Reuse Arrays, Delegates, G.O.s whenever possible
Start/end indexes
Pool unused instances
Don’t use IEnumerators, find a workaround
When comparing distances, use Dot instead of Distance