summaryrefslogtreecommitdiffstats
path: root/examples/studio3d/dynamicelement/presentation
diff options
context:
space:
mode:
authorJari Karppinen <jari.karppinen@qt.io>2019-06-11 11:35:42 +0300
committerJari Karppinen <jari.karppinen@qt.io>2019-06-17 08:28:51 +0300
commite5dbab5c14fa871b22ae63629ca75032c87836a1 (patch)
treea82e30897df2d4375c0083d10e9c3ec7e1602edc /examples/studio3d/dynamicelement/presentation
parent0a102925ff4ff2fb4842768a0d80d813594097bb (diff)
Dynamic element creation example
Task-number: QT3DS-3621 Change-Id: I5e842fa7b26b484d2a0981f0236a2fac4d92ec06 Reviewed-by: Antti Määttä <antti.maatta@qt.io> Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'examples/studio3d/dynamicelement/presentation')
-rw-r--r--examples/studio3d/dynamicelement/presentation/maps/materials/shadow.pngbin0 -> 334 bytes
-rw-r--r--examples/studio3d/dynamicelement/presentation/maps/materials/spherical_checker.pngbin0 -> 11066 bytes
-rw-r--r--examples/studio3d/dynamicelement/presentation/materials/Copper.materialdef14
-rw-r--r--examples/studio3d/dynamicelement/presentation/materials/Red.materialdef25
-rw-r--r--examples/studio3d/dynamicelement/presentation/materials/copper.shader178
-rw-r--r--examples/studio3d/dynamicelement/presentation/presentation.uia6
-rw-r--r--examples/studio3d/dynamicelement/presentation/presentations/presentation.uip24
7 files changed, 247 insertions, 0 deletions
diff --git a/examples/studio3d/dynamicelement/presentation/maps/materials/shadow.png b/examples/studio3d/dynamicelement/presentation/maps/materials/shadow.png
new file mode 100644
index 0000000..599b1cc
--- /dev/null
+++ b/examples/studio3d/dynamicelement/presentation/maps/materials/shadow.png
Binary files differ
diff --git a/examples/studio3d/dynamicelement/presentation/maps/materials/spherical_checker.png b/examples/studio3d/dynamicelement/presentation/maps/materials/spherical_checker.png
new file mode 100644
index 0000000..e42394d
--- /dev/null
+++ b/examples/studio3d/dynamicelement/presentation/maps/materials/spherical_checker.png
Binary files differ
diff --git a/examples/studio3d/dynamicelement/presentation/materials/Copper.materialdef b/examples/studio3d/dynamicelement/presentation/materials/Copper.materialdef
new file mode 100644
index 0000000..b1866f7
--- /dev/null
+++ b/examples/studio3d/dynamicelement/presentation/materials/Copper.materialdef
@@ -0,0 +1,14 @@
+<MaterialData version="1.0">
+ <Property name="uEnvironmentTexture" type="Texture"><![CDATA[./maps/materials/spherical_checker.png]]></Property>
+ <Property name="uEnvironmentMappingEnabled">True</Property>
+ <Property name="uBakedShadowTexture" type="Texture"><![CDATA[./maps/materials/shadow.png]]></Property>
+ <Property name="uShadowMappingEnabled">False</Property>
+ <Property name="roughness">0</Property>
+ <Property name="metal_color">0.805 0.395 0.305 1</Property>
+ <Property name="sourcepath"><![CDATA[./materials/copper.shader]]></Property>
+ <Property name="importid"></Property>
+ <Property name="importfile"></Property>
+ <Property name="name"><![CDATA[materials/Copper]]></Property>
+ <Property name="type">CustomMaterial</Property>
+ <Property name="path"><![CDATA[/home/jakarppi/Work/ogl-runtime/examples/studio3d/dynamicelement/presentation/materials/Copper.materialdef]]></Property>
+</MaterialData> \ No newline at end of file
diff --git a/examples/studio3d/dynamicelement/presentation/materials/Red.materialdef b/examples/studio3d/dynamicelement/presentation/materials/Red.materialdef
new file mode 100644
index 0000000..f93488b
--- /dev/null
+++ b/examples/studio3d/dynamicelement/presentation/materials/Red.materialdef
@@ -0,0 +1,25 @@
+<MaterialData version="1.0">
+ <Property name="shaderlighting">Pixel</Property>
+ <Property name="blendmode">Normal</Property>
+ <Property name="diffuse">1 0 0 1</Property>
+ <Property name="specularamount">0</Property>
+ <Property name="specularroughness">0</Property>
+ <Property name="opacity">100</Property>
+ <Property name="emissivecolor">1 1 1 1</Property>
+ <Property name="emissivepower">0</Property>
+ <Property name="bumpamount">0.5</Property>
+ <Property name="displaceamount">20</Property>
+ <Property name="translucentfalloff">1</Property>
+ <Property name="diffuselightwrap">0</Property>
+ <Property name="specularmodel">Default</Property>
+ <Property name="speculartint">1 1 1 1</Property>
+ <Property name="ior">1.5</Property>
+ <Property name="fresnelPower">0</Property>
+ <Property name="vertexcolors">False</Property>
+ <Property name="sourcepath"></Property>
+ <Property name="importid"></Property>
+ <Property name="importfile"></Property>
+ <Property name="name"><![CDATA[materials/Red]]></Property>
+ <Property name="type">Material</Property>
+ <Property name="path"><![CDATA[/home/jakarppi/Work/ogl-runtime/examples/studio3d/dynamicelement/presentation/materials/Red.materialdef]]></Property>
+</MaterialData> \ No newline at end of file
diff --git a/examples/studio3d/dynamicelement/presentation/materials/copper.shader b/examples/studio3d/dynamicelement/presentation/materials/copper.shader
new file mode 100644
index 0000000..cf9e1ad
--- /dev/null
+++ b/examples/studio3d/dynamicelement/presentation/materials/copper.shader
@@ -0,0 +1,178 @@
+<Material name="copper" version="1.0">
+ <MetaData >
+ <Property formalName="Environment Map" name="uEnvironmentTexture" description="Environment texture for the material" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="environment" default="./maps/materials/spherical_checker.png" category="Material"/>
+ <Property formalName="Enable Environment" name="uEnvironmentMappingEnabled" description="Enable environment mapping" type="Boolean" default="True" category="Material"/>
+ <Property formalName="Baked Shadow Map" name="uBakedShadowTexture" description="Baked shadow texture for the material" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="shadow" default="./maps/materials/shadow.png" category="Material"/>
+ <Property formalName="Shadow Mapping" name="uShadowMappingEnabled" description="Enable shadow mapping" type="Boolean" default="False" category="Material"/>
+ <Property formalName="Roughness" name="roughness" type="Float" min="0.000000" max="1.000000" default="0.000000" description="Roughness of the material.\n0 = fully specular\n1 = fully diffuse" category="Material"/>
+ <Property formalName="Metal Color" name="metal_color" type="Color" default="0.805 0.395 0.305" description="Color of the material" category="Material"/>
+ </MetaData>
+ <Shaders type="GLSL" version="330">
+ <Shader>
+ <Shared> </Shared>
+<VertexShader>
+ </VertexShader>
+ <FragmentShader>
+
+// add enum defines
+#define scatter_reflect 0
+#define scatter_transmit 1
+#define scatter_reflect_transmit 2
+
+#define QT3DS_ENABLE_UV0 1
+#define QT3DS_ENABLE_WORLD_POSITION 1
+#define QT3DS_ENABLE_TEXTAN 1
+#define QT3DS_ENABLE_BINORMAL 0
+
+#include "vertexFragmentBase.glsllib"
+
+// set shader output
+out vec4 fragColor;
+
+// add structure defines
+struct layer_result
+{
+ vec4 base;
+ vec4 layer;
+ mat3 tanFrame;
+};
+
+
+// temporary declarations
+ vec4 tmpShadowTerm;
+
+layer_result layers[1];
+
+#include "SSAOCustomMaterial.glsllib"
+#include "sampleLight.glsllib"
+#include "sampleProbe.glsllib"
+#include "sampleArea.glsllib"
+#include "square.glsllib"
+#include "calculateRoughness.glsllib"
+#include "evalBakedShadowMap.glsllib"
+#include "evalEnvironmentMap.glsllib"
+#include "luminance.glsllib"
+#include "microfacetBSDF.glsllib"
+#include "physGlossyBSDF.glsllib"
+#include "simpleGlossyBSDF.glsllib"
+#include "fresnelLayer.glsllib"
+
+bool evalTwoSided()
+{
+ return( false );
+}
+
+vec3 computeFrontMaterialEmissive()
+{
+ return( vec3( 0, 0, 0 ) );
+}
+
+void computeFrontLayerColor( in vec3 normal, in vec3 lightDir, in vec3 viewDir, in vec3 lightDiffuse, in vec3 lightSpecular, in float materialIOR, float aoFactor )
+{
+#if QT3DS_ENABLE_CG_LIGHTING
+ layers[0].base += tmpShadowTerm * vec4( 0.0, 0.0, 0.0, 1.0 );
+ layers[0].layer += tmpShadowTerm * microfacetBSDF( layers[0].tanFrame, lightDir, viewDir, lightSpecular, materialIOR, roughness, roughness, scatter_reflect );
+
+#endif
+}
+
+void computeFrontAreaColor( in int lightIdx, in vec4 lightDiffuse, in vec4 lightSpecular )
+{
+#if QT3DS_ENABLE_CG_LIGHTING
+ layers[0].base += tmpShadowTerm * vec4( 0.0, 0.0, 0.0, 1.0 );
+ layers[0].layer += tmpShadowTerm * lightSpecular * sampleAreaGlossy( layers[0].tanFrame, varWorldPos, lightIdx, viewDir, roughness, roughness );
+
+#endif
+}
+
+void computeFrontLayerEnvironment( in vec3 normal, in vec3 viewDir, float aoFactor )
+{
+#if !QT3DS_ENABLE_LIGHT_PROBE
+ layers[0].base += tmpShadowTerm * vec4( 0.0, 0.0, 0.0, 1.0 );
+ layers[0].layer += tmpShadowTerm * microfacetSampledBSDF( layers[0].tanFrame, viewDir, roughness, roughness, scatter_reflect );
+
+#else
+ layers[0].base += tmpShadowTerm * vec4( 0.0, 0.0, 0.0, 1.0 );
+ layers[0].layer += tmpShadowTerm * sampleGlossyAniso( layers[0].tanFrame, viewDir, roughness, roughness );
+
+#endif
+}
+
+vec3 computeBackMaterialEmissive()
+{
+ return( vec3(0, 0, 0) );
+}
+
+void computeBackLayerColor( in vec3 normal, in vec3 lightDir, in vec3 viewDir, in vec3 lightDiffuse, in vec3 lightSpecular, in float materialIOR, float aoFactor )
+{
+#if QT3DS_ENABLE_CG_LIGHTING
+ layers[0].base += vec4( 0.0, 0.0, 0.0, 1.0 );
+ layers[0].layer += vec4( 0.0, 0.0, 0.0, 1.0 );
+#endif
+}
+
+void computeBackAreaColor( in int lightIdx, in vec4 lightDiffuse, in vec4 lightSpecular )
+{
+#if QT3DS_ENABLE_CG_LIGHTING
+ layers[0].base += vec4( 0.0, 0.0, 0.0, 1.0 );
+ layers[0].layer += vec4( 0.0, 0.0, 0.0, 1.0 );
+#endif
+}
+
+void computeBackLayerEnvironment( in vec3 normal, in vec3 viewDir, float aoFactor )
+{
+#if !QT3DS_ENABLE_LIGHT_PROBE
+ layers[0].base += vec4( 0.0, 0.0, 0.0, 1.0 );
+ layers[0].layer += vec4( 0.0, 0.0, 0.0, 1.0 );
+#else
+ layers[0].base += vec4( 0.0, 0.0, 0.0, 1.0 );
+ layers[0].layer += vec4( 0.0, 0.0, 0.0, 1.0 );
+#endif
+}
+
+float computeIOR()
+{
+ return( false ? 1.0 : luminance( vec3( 1, 1, 1 ) ) );
+}
+
+float evalCutout()
+{
+ return( 1.000000 );
+}
+
+vec3 computeNormal()
+{
+ return( normal );
+}
+
+void computeTemporaries()
+{
+ tmpShadowTerm = evalBakedShadowMap( texCoord0 );
+}
+
+vec4 computeLayerWeights( in float alpha )
+{
+ vec4 color;
+ color = fresnelLayer( normal, vec3( 25.65, 25.65, 25.65 ), 1.000000, metal_color.rgb, layers[0].layer, layers[0].base, alpha );
+ return color;
+}
+
+
+void initializeLayerVariables(void)
+{
+ // clear layers
+ layers[0].base = vec4(0.0, 0.0, 0.0, 1.0);
+ layers[0].layer = vec4(0.0, 0.0, 0.0, 1.0);
+ layers[0].tanFrame = orthoNormalize( mat3( tangent, cross(normal, tangent), normal ) );
+}
+
+ </FragmentShader>
+ </Shader>
+ </Shaders>
+<Passes >
+ <ShaderKey value="4"/>
+ <LayerKey count="1"/>
+ <Pass >
+ </Pass>
+</Passes>
+</Material>
diff --git a/examples/studio3d/dynamicelement/presentation/presentation.uia b/examples/studio3d/dynamicelement/presentation/presentation.uia
new file mode 100644
index 0000000..fa976db
--- /dev/null
+++ b/examples/studio3d/dynamicelement/presentation/presentation.uia
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='utf-8'?>
+<application xmlns="http://qt.io/qt3dstudio/uia">
+ <assets initial="presentation">
+ <presentation id="presentation" src="presentations/presentation.uip"/>
+ </assets>
+</application>
diff --git a/examples/studio3d/dynamicelement/presentation/presentations/presentation.uip b/examples/studio3d/dynamicelement/presentation/presentations/presentation.uip
new file mode 100644
index 0000000..cb1bd1e
--- /dev/null
+++ b/examples/studio3d/dynamicelement/presentation/presentations/presentation.uip
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<UIP version="6" >
+ <Project >
+ <ProjectSettings author="" company="" presentationWidth="1920" presentationHeight="1080" maintainAspect="False" preferKtx="False" >
+ <CustomColors count="16" >#ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff</CustomColors>
+ </ProjectSettings>
+ <Graph >
+ <Scene id="Scene" >
+ <Layer id="Layer" variants="" >
+ <Camera id="Camera" />
+ <Light id="Light" />
+ </Layer>
+ </Scene>
+ </Graph>
+ <Logic >
+ <State name="Master Slide" component="#Scene" >
+ <Add ref="#Layer" />
+ <Add ref="#Camera" />
+ <Add ref="#Light" position="0 0 -600" />
+ <State id="Scene-Slide1" name="Slide1" />
+ </State>
+ </Logic>
+ </Project>
+</UIP>