Commit df3e6751 authored by Michael Winkelmann's avatar Michael Winkelmann

Added Slides

parent ba80b320
Pipeline #1229 failed with stages
import QtQuick 2.0
import QmlSlideTemplates.common 1.0
import QmlSlideTemplates.Slides 1.0
import "AssetConditioningElements"
QtPresentation {
id: root
TitleSlide {
SlideBackground {
anchors.fill: parent
z: -10
}
author: "Michael Winkelmann"
email: "michael.winkelmann@qt.io"
subtitle: "December 2018"
title: "Optimizing Assets in Qt Applications"
readonly property bool hideMaster: true
}
ContentSlide {
title: "Definition: What's an asset?"
items: [
"A (usually non-code) <b>resource</b> that is used at <b>runtime</b> by the application",
"Assets are usually <b>not</b> created by the developer",
"*Mostly by designers or third party providers",
"We will focus mainly on image assets in this talk"
]
}
ContentSlide {
title: "Examples for assets"
items: [
"Image file in your Qt Quick app",
"Texture image in your Qt 3D Studio app",
"Fonts",
"QML files",
"Shaders",
"Mesh files for 3D models",
"..."
]
}
DefinitionSlide {
}
ContentSlide {
title: "Why assets need to be optimized?"
items: [
"You want to optimize your Qt App:",
"*Rendering performance",
"*Loading time",
"*Memory consumption",
"Original assets files are not optimal for target hardware:",
"*Images are too large for screen size",
"*Images could be compressed without big quality loss",
"*Application might contain unused assets",
"*QML and shaders need to be compiled at runtime"
]
}
ContentSlide {
title: "How can we optimize these?"
items: [
"Scaling down images to reduce size (memory and load time)",
"Compress the textures",
"Compile QML file ahead-of-time (load time)",
"Bundle project/configuration file into binary instead of loading from disk (mostly convenience)"
]
}
ContentSlide {
title: "Issues"
items: [
"Optimization comes at a cost incurred at compile time to benefit runtime",
"Optimization is usually destructive ie., lossy",
"Optimizing is not easy to automatize",
"Different runtime deployments will need different kinds of conditioning"
]
}
ContentSlide {
title: "Qt Features"
items: [
"Qt’s Resource System",
"Qt’s Image Formats/Loaders",
"QtQuick/Qt3D support for loading compressed GPU textures",
"Qt Quick Compiler for pre-compiling QML",
"Text/glyph loading via distance fields",
]
}
ContentSlide {
title: "Image optimization techniques"
items: [
"Compress images",
"*Qt Quick supports PKM and KTX with ECT1 and ECT2",
"*Qt 3D Studio Runtime 1.x has support for DDS with (DXT1(a), DXT3, DXT5)",
"*All of this is to <b>*load*</b> these textures, not to generate them",
"Auto-shrink images",
"*Shrink images that fulfill certain criteria"
]
}
ContentSlide {
title: "Text/Glyph Distance Field Gen."
items: [
"Graphical tool available in Qt 5.12",
"Load fonts and select glyphs for processing",
"Load saved file into QML like any other font"
]
}
SlideWithTitle {
title: "Loading times in ms"
Image {
source: "images/imx6comp.png"
anchors.centerIn: parent
}
}
ContentSlide {
title: "Parametric images"
items: [
"Sometimes you can avoid using assets at all!",
"The solution is:",
"*QML Image Provider for generating parametric images"
]
}
ContentSlide {
title: "Summary"
items: [
"Assets can almost always be optimized...",
"...but automated asset optimization is difficult",
"Qt will continue to improve support for asset conditioning",
"*More functionality for optimizing assets",
"*Improvements in Resource System",
"If you need help with your Qt App: Go for <b>Qt Professional Services</b>!"
]
}
}
import QtQuick 2.0
import QmlSlideTemplates.Slides 1.0
import QmlSlideTemplates.common 1.0
Slide {
id: acDefinition
QtShape {
id: box
x: parent.width / 6
width: parent.width / 1.5
y: parent.height / 10
height: parent.height * 8 / 10
anchors.margins: 15
property real itemCornerSize: 15
SlideText {
id: header
color: Style.white
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
height: 40
font.pointSize: 28
text: "Asset Conditioning"
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignTop
}
QtShapeRow {
id: qtShapeRow
fontSize: 30
anchors.left: parent.left
anchors.right: parent.right
anchors.top: header.bottom
height: 160
color: Style.green1
model: ["Asset Management", "Asset Optimization"]
}
QtShapeColumn {
id: assetManagementTools
anchors.top: qtShapeRow.bottom
anchors.bottom: box.bottom
anchors.left: parent.left
anchors.right: parent.horizontalCenter
color: Style.gray3
model: ["Qt Resource System", "Qt Creator", "Qt Design Studio", "Qt 3D Studio"]
}
QtShapeColumn {
anchors.top: qtShapeRow.bottom
anchors.bottom: box.bottom
anchors.left: parent.horizontalCenter
anchors.right: parent.right
color: Style.gray3
model: ["Texture compression tools", "Converters", "Image optimizers", "Other command line tools"]
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment