summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPasi Keränen <pasi.keranen@qt.io>2019-06-06 16:22:02 +0300
committerPasi Keränen <pasi.keranen@qt.io>2019-06-07 13:52:44 +0300
commitb4954701093739e7a4e54a0669f306922d0d4605 (patch)
tree73d71319a921234f6b507c9098fdc842f7fe06dc
parent8548a5f5579e3eee7e5ae6b1f6901dcc8bfee19e (diff)
Long live the slayer!
Initial commit of OpenGL Runtime to repository. Based on SHA1 61823aaccc6510699a54b34a2fe3f7523dab3b4e of qt3dstudio repository. Task-number: QT3DS-3600 Change-Id: Iaeb80237399f0e5656a19ebec9d1ab3a681d8832 Reviewed-by: Pasi Keränen <pasi.keranen@qt.io>
-rw-r--r--.gitmodules3
-rw-r--r--.qmake.conf5
-rw-r--r--Studio/Content/Behavior Library/CameraLookAt.qml116
-rw-r--r--Studio/Content/Effect Library/AdditiveColorGradient.effect32
-rw-r--r--Studio/Content/Effect Library/BaseEffect.effect30
-rw-r--r--Studio/Content/Effect Library/Bloom.effect200
-rw-r--r--Studio/Content/Effect Library/Blur.effect47
-rw-r--r--Studio/Content/Effect Library/Brush Strokes.effect38
-rw-r--r--Studio/Content/Effect Library/ChromaticAberration.effect56
-rw-r--r--Studio/Content/Effect Library/ColorMaster.effect38
-rw-r--r--Studio/Content/Effect Library/Corona.effect97
-rw-r--r--Studio/Content/Effect Library/Depth Of Field Bokeh.effect302
-rw-r--r--Studio/Content/Effect Library/Depth Of Field HQ Blur.effect67
-rw-r--r--Studio/Content/Effect Library/Desaturate.effect35
-rw-r--r--Studio/Content/Effect Library/Distortion Ripple.effect50
-rw-r--r--Studio/Content/Effect Library/Distortion Sphere.effect46
-rw-r--r--Studio/Content/Effect Library/Distortion Spiral.effect51
-rw-r--r--Studio/Content/Effect Library/Edge Detect.effect81
-rw-r--r--Studio/Content/Effect Library/Emboss.effect41
-rw-r--r--Studio/Content/Effect Library/FXAA.effect51
-rw-r--r--Studio/Content/Effect Library/FrameFlipper.effect41
-rw-r--r--Studio/Content/Effect Library/FullScreenTextureOverlay.effect27
-rw-r--r--Studio/Content/Effect Library/Gaussian Blur.effect48
-rw-r--r--Studio/Content/Effect Library/HDRBloomTonemap.effect282
-rw-r--r--Studio/Content/Effect Library/LightTable.effect233
-rw-r--r--Studio/Content/Effect Library/Motion Blur.effect76
-rw-r--r--Studio/Content/Effect Library/SCurveTonemap.effect117
-rw-r--r--Studio/Content/Effect Library/SMAA1X.effect149
-rw-r--r--Studio/Content/Effect Library/Screen Space AO.effect90
-rw-r--r--Studio/Content/Effect Library/Sepia.effect64
-rw-r--r--Studio/Content/Effect Library/Stylize - Scatter.effect47
-rw-r--r--Studio/Content/Effect Library/Tilt Shift.effect111
-rw-r--r--Studio/Content/Effect Library/VignetteEffect.effect39
-rw-r--r--Studio/Content/Effect Library/maps/effects/AreaTex-yflipped.ddsbin0 -> 179328 bytes
-rw-r--r--Studio/Content/Effect Library/maps/effects/AreaTex-yflipped.pngbin0 -> 26679 bytes
-rw-r--r--Studio/Content/Effect Library/maps/effects/CircleBokeh.pngbin0 -> 1718 bytes
-rw-r--r--Studio/Content/Effect Library/maps/effects/HexagonalBokeh.pngbin0 -> 910 bytes
-rw-r--r--Studio/Content/Effect Library/maps/effects/SearchTex-yflipped.pngbin0 -> 180 bytes
-rw-r--r--Studio/Content/Effect Library/maps/effects/brushnoise.ddsbin0 -> 65664 bytes
-rw-r--r--Studio/Content/Effect Library/maps/effects/brushnoise.pngbin0 -> 61885 bytes
-rw-r--r--Studio/Content/Effect Library/maps/effects/noise.ddsbin0 -> 4224 bytes
-rw-r--r--Studio/Content/Effect Library/maps/effects/noise.pngbin0 -> 3251 bytes
-rw-r--r--Studio/Content/Effect Library/maps/effects/noise3.ddsbin0 -> 349652 bytes
-rw-r--r--Studio/Content/Effect Library/maps/effects/noise3.pngbin0 -> 9288 bytes
-rw-r--r--Studio/Content/Effect Library/maps/effects/noiseUniform.ddsbin0 -> 262272 bytes
-rw-r--r--Studio/Content/Effect Library/maps/effects/noiseUniform.pngbin0 -> 262990 bytes
-rw-r--r--Studio/Content/Effect Library/maps/effects/ps_cloudlet.pngbin0 -> 2807 bytes
-rw-r--r--Studio/Content/Effect Library/maps/effects/ps_glowDisc.pngbin0 -> 2329 bytes
-rw-r--r--Studio/Content/Effect Library/maps/effects/ps_glowSphere.pngbin0 -> 2382 bytes
-rw-r--r--Studio/Content/Effect Library/maps/effects/ps_rectangle.pngbin0 -> 1285 bytes
-rw-r--r--Studio/Content/Effect Library/maps/effects/ps_sphere.ddsbin0 -> 16512 bytes
-rw-r--r--Studio/Content/Effect Library/maps/effects/ps_sphere.pngbin0 -> 789 bytes
-rw-r--r--Studio/Content/Effect Library/maps/effects/ps_star.pngbin0 -> 6760 bytes
-rw-r--r--Studio/Content/Effect Library/maps/effects/snownoise.ddsbin0 -> 1048704 bytes
-rw-r--r--Studio/Content/Effect Library/maps/effects/snownoise.pngbin0 -> 50015 bytes
-rw-r--r--Studio/Content/Effect Library/maps/effects/starBokeh.pngbin0 -> 1326 bytes
-rw-r--r--Studio/Content/Effect Library/maps/effects/white.pngbin0 -> 189 bytes
-rw-r--r--Studio/Content/Font Library/titilliumweb/DESCRIPTION.en_us.html22
-rw-r--r--Studio/Content/Font Library/titilliumweb/METADATA.pb107
-rw-r--r--Studio/Content/Font Library/titilliumweb/OFL.txt93
-rw-r--r--Studio/Content/Font Library/titilliumweb/TitilliumWeb-Black.ttfbin0 -> 49356 bytes
-rw-r--r--Studio/Content/Font Library/titilliumweb/TitilliumWeb-Bold.ttfbin0 -> 59908 bytes
-rw-r--r--Studio/Content/Font Library/titilliumweb/TitilliumWeb-BoldItalic.ttfbin0 -> 69796 bytes
-rw-r--r--Studio/Content/Font Library/titilliumweb/TitilliumWeb-ExtraLight.ttfbin0 -> 63124 bytes
-rw-r--r--Studio/Content/Font Library/titilliumweb/TitilliumWeb-ExtraLightItalic.ttfbin0 -> 67788 bytes
-rw-r--r--Studio/Content/Font Library/titilliumweb/TitilliumWeb-Italic.ttfbin0 -> 72416 bytes
-rw-r--r--Studio/Content/Font Library/titilliumweb/TitilliumWeb-Light.ttfbin0 -> 64032 bytes
-rw-r--r--Studio/Content/Font Library/titilliumweb/TitilliumWeb-LightItalic.ttfbin0 -> 71720 bytes
-rw-r--r--Studio/Content/Font Library/titilliumweb/TitilliumWeb-Regular.ttfbin0 -> 63752 bytes
-rw-r--r--Studio/Content/Font Library/titilliumweb/TitilliumWeb-SemiBold.ttfbin0 -> 63044 bytes
-rw-r--r--Studio/Content/Font Library/titilliumweb/TitilliumWeb-SemiBoldItalic.ttfbin0 -> 71812 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-1-mirror.pngbin0 -> 20716 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-1.pngbin0 -> 20682 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-2-mirror.pngbin0 -> 16960 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-2.pngbin0 -> 16927 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-3-mirror.pngbin0 -> 13242 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-3.pngbin0 -> 13219 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-4-mirror.pngbin0 -> 9122 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-4.pngbin0 -> 9086 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-reflected-1.pngbin0 -> 20589 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-reflected-2.pngbin0 -> 13742 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-reflected-3.pngbin0 -> 9641 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-1-inverse.pngbin0 -> 21355 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-1.pngbin0 -> 21323 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-2-inverse.pngbin0 -> 20946 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-2.pngbin0 -> 20906 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-3-inverse.pngbin0 -> 19449 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-3.pngbin0 -> 19425 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-4-inverse.pngbin0 -> 15421 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-4.pngbin0 -> 15424 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-5-inverse.pngbin0 -> 11673 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-5.pngbin0 -> 11678 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-1-mirror.pngbin0 -> 19304 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-1.pngbin0 -> 19077 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-2-mirror.pngbin0 -> 15431 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-2.pngbin0 -> 15563 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-3-mirror.pngbin0 -> 10641 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-3.pngbin0 -> 10684 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-4-mirror.pngbin0 -> 6791 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-4.pngbin0 -> 6766 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-reflected-1.pngbin0 -> 16991 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-reflected-2.pngbin0 -> 9912 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-reflected-3.pngbin0 -> 7099 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/misc alpha maps/circles-1.pngbin0 -> 5657 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/misc alpha maps/circles-2.pngbin0 -> 5924 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/misc alpha maps/circles-3.pngbin0 -> 7578 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/misc alpha maps/circles-4.pngbin0 -> 6215 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-1.pngbin0 -> 848 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-2.pngbin0 -> 1049 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-3.pngbin0 -> 1061 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-radial-1.pngbin0 -> 116581 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-radial-2.pngbin0 -> 74198 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-radial-3.pngbin0 -> 42908 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-ripple.pngbin0 -> 146951 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-twist.pngbin0 -> 116094 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rounded-boxes-1.pngbin0 -> 2637 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rounded-boxes-2.pngbin0 -> 3456 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rounded-boxes-3.pngbin0 -> 3671 bytes
-rw-r--r--Studio/Content/Maps Library/Alpha Maps/misc alpha maps/splatter-1.pngbin0 -> 36062 bytes
-rw-r--r--Studio/Content/Maps Library/Automotive/indicators_icons.pngbin0 -> 49248 bytes
-rw-r--r--Studio/Content/Maps Library/Automotive/indicators_icons_extended.pngbin0 -> 34746 bytes
-rw-r--r--Studio/Content/Maps Library/Automotive/large_tic_marks.pngbin0 -> 82020 bytes
-rw-r--r--Studio/Content/Maps Library/Automotive/medium_tic_marks.pngbin0 -> 227788 bytes
-rw-r--r--Studio/Content/Maps Library/Automotive/small_tic_marks.pngbin0 -> 355557 bytes
-rw-r--r--Studio/Content/Maps Library/Bump Maps/bump.ddsbin0 -> 699192 bytes
-rw-r--r--Studio/Content/Maps Library/Bump Maps/bump.pngbin0 -> 1800502 bytes
-rw-r--r--Studio/Content/Maps Library/Bump Maps/rubber_hatch.ddsbin0 -> 1493 bytes
-rw-r--r--Studio/Content/Maps Library/Bump Maps/rubber_hatch.pngbin0 -> 221 bytes
-rw-r--r--Studio/Content/Maps Library/Concepting Maps/Finger-idle.pngbin0 -> 34325 bytes
-rw-r--r--Studio/Content/Maps Library/Concepting Maps/Finger-pressureDown.pngbin0 -> 34649 bytes
-rw-r--r--Studio/Content/Maps Library/Environments/LICENSE-OpenfootageNET.txt7
-rw-r--r--Studio/Content/Maps Library/Environments/OpenfootageNET_Gerlos-1024.hdrbin0 -> 1601679 bytes
-rw-r--r--Studio/Content/Maps Library/Environments/OpenfootageNET_Gerlos-512.hdrbin0 -> 401151 bytes
-rw-r--r--Studio/Content/Maps Library/Environments/OpenfootageNET_Grado-1024.hdrbin0 -> 1759202 bytes
-rw-r--r--Studio/Content/Maps Library/Environments/OpenfootageNET_Grado-512.hdrbin0 -> 443546 bytes
-rw-r--r--Studio/Content/Maps Library/Environments/OpenfootageNET_Hintersee-1024.hdrbin0 -> 1719709 bytes
-rw-r--r--Studio/Content/Maps Library/Environments/OpenfootageNET_Hintersee-512.hdrbin0 -> 434178 bytes
-rw-r--r--Studio/Content/Maps Library/Environments/OpenfootageNET_Pinzgau-1024.hdrbin0 -> 1659936 bytes
-rw-r--r--Studio/Content/Maps Library/Environments/OpenfootageNET_Pinzgau-512.hdrbin0 -> 416212 bytes
-rw-r--r--Studio/Content/Maps Library/Environments/OpenfootageNET_Streetautumn-1024.hdrbin0 -> 1954066 bytes
-rw-r--r--Studio/Content/Maps Library/Environments/OpenfootageNET_Streetautumn-512.hdrbin0 -> 489367 bytes
-rw-r--r--Studio/Content/Maps Library/Environments/OpenfootageNET_Thumersbach-1024.hdrbin0 -> 1625204 bytes
-rw-r--r--Studio/Content/Maps Library/Environments/OpenfootageNET_Thumersbach-512.hdrbin0 -> 421718 bytes
-rw-r--r--Studio/Content/Maps Library/Environments/OpenfootageNET_fieldairport-1024.hdrbin0 -> 1553532 bytes
-rw-r--r--Studio/Content/Maps Library/Environments/OpenfootageNET_fieldairport-512.hdrbin0 -> 385303 bytes
-rw-r--r--Studio/Content/Maps Library/Environments/OpenfootageNET_garage-1024.hdrbin0 -> 1675239 bytes
-rw-r--r--Studio/Content/Maps Library/Environments/OpenfootageNET_garage-512.hdrbin0 -> 422659 bytes
-rw-r--r--Studio/Content/Maps Library/Environments/OpenfootageNET_lowerAustria01-1024.hdrbin0 -> 1659619 bytes
-rw-r--r--Studio/Content/Maps Library/Environments/OpenfootageNET_lowerAustria01-512.hdrbin0 -> 407359 bytes
-rw-r--r--Studio/Content/Maps Library/Environments/OpenfootageNET_trainstation-1024.hdrbin0 -> 1459275 bytes
-rw-r--r--Studio/Content/Maps Library/Environments/OpenfootageNET_trainstation-512.hdrbin0 -> 362018 bytes
-rw-r--r--Studio/Content/Maps Library/Environments/OpenfootageNet_LADEFENSE-1024.hdrbin0 -> 1704663 bytes
-rw-r--r--Studio/Content/Maps Library/Environments/OpenfootageNet_LADEFENSE-512.hdrbin0 -> 426013 bytes
-rw-r--r--Studio/Content/Maps Library/Environments/TestEnvironment-1024.hdrbin0 -> 182979 bytes
-rw-r--r--Studio/Content/Maps Library/Environments/TestEnvironment-2048.hdrbin0 -> 379796 bytes
-rw-r--r--Studio/Content/Maps Library/Environments/TestEnvironment-512.hdrbin0 -> 87897 bytes
-rw-r--r--Studio/Content/Maps Library/Logos/Qt/QT-badge.pngbin0 -> 26806 bytes
-rw-r--r--Studio/Content/Maps Library/Logos/Qt/QT-symbol-flatWhite.pngbin0 -> 4407 bytes
-rw-r--r--Studio/Content/Maps Library/Logos/Qt/QT-symbol.pngbin0 -> 4541 bytes
-rw-r--r--Studio/Content/Maps Library/Shapes/circles/circle-128X128.pngbin0 -> 4653 bytes
-rw-r--r--Studio/Content/Maps Library/Shapes/circles/circle-256X256.pngbin0 -> 6847 bytes
-rw-r--r--Studio/Content/Maps Library/Shapes/circles/circle-32X32.pngbin0 -> 3091 bytes
-rw-r--r--Studio/Content/Maps Library/Shapes/circles/circle-64X64.pngbin0 -> 3503 bytes
-rw-r--r--Studio/Content/Maps Library/Shapes/circles/circle-stroke-01p.pngbin0 -> 12282 bytes
-rw-r--r--Studio/Content/Maps Library/Shapes/circles/circle-stroke-02p.pngbin0 -> 13612 bytes
-rw-r--r--Studio/Content/Maps Library/Shapes/circles/circle-stroke-03p.pngbin0 -> 14342 bytes
-rw-r--r--Studio/Content/Maps Library/Shapes/circles/circle-stroke-05p.pngbin0 -> 15330 bytes
-rw-r--r--Studio/Content/Maps Library/Shapes/circles/circle-stroke-10p.pngbin0 -> 16056 bytes
-rw-r--r--Studio/Content/Maps Library/Shapes/circles/circle-stroke-15p.pngbin0 -> 16015 bytes
-rw-r--r--Studio/Content/Maps Library/Shapes/circles/circle-stroke-20p.pngbin0 -> 15761 bytes
-rw-r--r--Studio/Content/Maps Library/Shapes/circles/circle-stroke-25p.pngbin0 -> 15580 bytes
-rw-r--r--Studio/Content/Maps Library/Shapes/circles/circle-stroke-30p.pngbin0 -> 15358 bytes
-rw-r--r--Studio/Content/Maps Library/Shapes/circles/circle-stroke-50p.pngbin0 -> 14444 bytes
-rw-r--r--Studio/Content/Maps Library/Shapes/squares/square-stroke-01p.pngbin0 -> 308 bytes
-rw-r--r--Studio/Content/Maps Library/Shapes/squares/square-stroke-02p.pngbin0 -> 311 bytes
-rw-r--r--Studio/Content/Maps Library/Shapes/squares/square-stroke-03p.pngbin0 -> 315 bytes
-rw-r--r--Studio/Content/Maps Library/Shapes/squares/square-stroke-05p.pngbin0 -> 315 bytes
-rw-r--r--Studio/Content/Maps Library/Shapes/squares/square-stroke-10p.pngbin0 -> 315 bytes
-rw-r--r--Studio/Content/Maps Library/Shapes/squares/square-stroke-25p.pngbin0 -> 316 bytes
-rw-r--r--Studio/Content/Maps Library/Shapes/squares/square-stroke-50p.pngbin0 -> 317 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/flares/Flare1.pngbin0 -> 67124 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/flares/Flare2.pngbin0 -> 34096 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/flares/Flare3.pngbin0 -> 55247 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/flares/Flare4.pngbin0 -> 10293 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/flares/Flare5.pngbin0 -> 6013 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/glows/Glow-CircleBorder-1.pngbin0 -> 7713 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/glows/Glow-circle-1.pngbin0 -> 6956 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/glows/Glow-circle-2.pngbin0 -> 7378 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/glows/Glow-circle-3.pngbin0 -> 6261 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/grids/grid-01.pngbin0 -> 852 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/grids/grid-02.pngbin0 -> 860 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/grids/grid-03.pngbin0 -> 804 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/grids/grid-04.pngbin0 -> 4294 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/lens flares/LensFlare_Color.pngbin0 -> 56784 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/lens flares/LensFlare_RainbowRing.pngbin0 -> 41008 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/lens flares/LensFlare_RainbowRing2.pngbin0 -> 18027 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/lens flares/LensFlare_Ring.pngbin0 -> 40346 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/smoke/cloudy_smoke.pngbin0 -> 44892 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/smoke/smoke-1.pngbin0 -> 18747 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/smoke/smoke-2.pngbin0 -> 20493 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/smoke/smoke-3.pngbin0 -> 59584 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/smoke/smoke-4.pngbin0 -> 40489 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/smoke/smoke-5.pngbin0 -> 39949 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/smoke/smoke-puff-1.pngbin0 -> 7036 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/smoke/smoke-puff-2.pngbin0 -> 6210 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/streaks/streak_narrow.pngbin0 -> 5423 bytes
-rw-r--r--Studio/Content/Maps Library/Special Effects/streaks/streak_wide.pngbin0 -> 6723 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/Chrome/Chrome_01.jpgbin0 -> 10337 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/Chrome/Chrome_02.jpgbin0 -> 3546 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/Chrome/Chrome_03.jpgbin0 -> 13591 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/Gold/Gold_01.jpgbin0 -> 19212 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/Gold/Gold_02.jpgbin0 -> 4708 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/Gold/Gold_03.jpgbin0 -> 6617 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/Misc/Reflection_Environment-1.jpgbin0 -> 32092 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/Misc/Reflection_Environment-2.jpgbin0 -> 14997 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/Misc/Reflection_Environment-3.jpgbin0 -> 14187 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/Misc/Reflection_Smear.jpgbin0 -> 4726 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/Misc/Reflection_Underwater.jpgbin0 -> 7250 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/Misc/Reflection_Window.jpgbin0 -> 9044 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/Specular-ceiling_lights-1.pngbin0 -> 112135 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/Specular-dull-1.pngbin0 -> 20645 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/Specular-dull-2.pngbin0 -> 23688 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/Specular-dull-3.pngbin0 -> 29961 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/Specular-shiny-1-alpha-25_orange.pngbin0 -> 14680 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/Specular-shiny-1.pngbin0 -> 77525 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/Specular-shiny-2.pngbin0 -> 32372 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/Specular-shiny-3.pngbin0 -> 24469 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/With Alpha/Glass-alpha01.pngbin0 -> 88912 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/With Alpha/Glass-alpha02.pngbin0 -> 47456 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/With Alpha/Glass-alpha03.pngbin0 -> 53691 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/With Alpha/Glass-alpha04.pngbin0 -> 21654 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/With Alpha/Glass-alpha05.pngbin0 -> 21903 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-dull-1-alpha-100.pngbin0 -> 63791 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-dull-1-alpha-25.pngbin0 -> 76845 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-dull-1-alpha-50.pngbin0 -> 82405 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-dull-1-alpha-75.pngbin0 -> 83333 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-dull-1-alpha-90.pngbin0 -> 85058 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-100.pngbin0 -> 31276 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-25.pngbin0 -> 21781 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-25_refIVI.pngbin0 -> 21781 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-50.pngbin0 -> 26114 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-50_green.pngbin0 -> 24660 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-75.pngbin0 -> 28962 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-90.pngbin0 -> 30974 bytes
-rw-r--r--Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-blue.pngbin0 -> 12397 bytes
-rw-r--r--Studio/Content/Maps Library/Texture Maps/Cork1.pngbin0 -> 620566 bytes
-rw-r--r--Studio/Content/Maps Library/Texture Maps/Fabric1.pngbin0 -> 252560 bytes
-rw-r--r--Studio/Content/Maps Library/Texture Maps/Fabric2.pngbin0 -> 334081 bytes
-rw-r--r--Studio/Content/Maps Library/Texture Maps/Grass2.pngbin0 -> 639867 bytes
-rw-r--r--Studio/Content/Maps Library/Texture Maps/Metal_Bronze.pngbin0 -> 50334 bytes
-rw-r--r--Studio/Content/Maps Library/Texture Maps/Metal_Oxydized.pngbin0 -> 109861 bytes
-rw-r--r--Studio/Content/Maps Library/Texture Maps/Metal_Streaks.pngbin0 -> 13744 bytes
-rw-r--r--Studio/Content/Maps Library/Texture Maps/Paper05.pngbin0 -> 321820 bytes
-rw-r--r--Studio/Content/Maps Library/Texture Maps/Scratched_Aluminum.pngbin0 -> 84991 bytes
-rw-r--r--Studio/Content/Maps Library/Texture Maps/Stone1.pngbin0 -> 279846 bytes
-rw-r--r--Studio/Content/Maps Library/Texture Maps/Water1.pngbin0 -> 484212 bytes
-rw-r--r--Studio/Content/Maps Library/Texture Maps/Wood7.pngbin0 -> 445815 bytes
-rw-r--r--Studio/Content/Maps Library/UV-Checker.pngbin0 -> 10586 bytes
-rw-r--r--Studio/Content/Material Library/aluminium_anodized.shader178
-rw-r--r--Studio/Content/Material Library/aluminium_anodized_emissive.shader214
-rw-r--r--Studio/Content/Material Library/aluminum.shader223
-rw-r--r--Studio/Content/Material Library/aluminum_anisotropic.shader260
-rw-r--r--Studio/Content/Material Library/aluminum_brushed.shader224
-rw-r--r--Studio/Content/Material Library/aluminum_emissive.shader230
-rw-r--r--Studio/Content/Material Library/aluminum_textured_aniso.shader263
-rw-r--r--Studio/Content/Material Library/asphalt.shader236
-rw-r--r--Studio/Content/Material Library/bamboo_natural_matte.shader236
-rw-r--r--Studio/Content/Material Library/bamboo_natural_matte_emissive.shader242
-rw-r--r--Studio/Content/Material Library/carbon_fiber.shader271
-rw-r--r--Studio/Content/Material Library/carbon_fiber_emissive.shader277
-rw-r--r--Studio/Content/Material Library/carpaint_blue_standard.shader231
-rw-r--r--Studio/Content/Material Library/carpaint_color_peel_2_layer.shader255
-rw-r--r--Studio/Content/Material Library/carpaint_yellow_standard.shader231
-rw-r--r--Studio/Content/Material Library/concrete.shader235
-rw-r--r--Studio/Content/Material Library/copper.shader178
-rw-r--r--Studio/Content/Material Library/leather_smoothed_black.shader236
-rw-r--r--Studio/Content/Material Library/maps/materials/art_paper_normal.pngbin0 -> 8361968 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/art_paper_trans.pngbin0 -> 7271168 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/asphalt.pngbin0 -> 1884467 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/asphalt_bump.pngbin0 -> 243515 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/bamboo_natural.pngbin0 -> 1520156 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/bamboo_natural_bump.pngbin0 -> 111006 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/bamboo_natural_spec.pngbin0 -> 279332 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/brushed_a.pngbin0 -> 3805351 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/brushed_a_full_contrast_scratched.pngbin0 -> 2972427 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/brushed_a_scratched_50_percent.pngbin0 -> 4574567 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/brushed_chrome.pngbin0 -> 4114475 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/brushed_chrome_spec.pngbin0 -> 2700298 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/brushed_full_contrast.pngbin0 -> 2272310 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/brushed_full_contrast_inverted.pngbin0 -> 2272900 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/bubinga.pngbin0 -> 1617388 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/bubinga_bump.pngbin0 -> 245002 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/bubinga_spec.pngbin0 -> 229002 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/carbon_fiber.pngbin0 -> 4709566 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/carbon_fiber_aniso.pngbin0 -> 308757 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/carbon_fiber_bump.pngbin0 -> 2657804 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/carbon_fiber_spec.pngbin0 -> 4172072 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/concentric_milled_steel.pngbin0 -> 4216 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/concentric_milled_steel_aniso.pngbin0 -> 368334 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/concrete_plain.pngbin0 -> 2107394 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/concrete_plain_bump.pngbin0 -> 184163 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/cyclone_mesh_fencing.pngbin0 -> 342369 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/cyclone_mesh_fencing_normal.pngbin0 -> 92373 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/emissive.pngbin0 -> 334 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/emissive_mask.pngbin0 -> 334 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/gentle_noise.pngbin0 -> 4577174 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/granite_black.pngbin0 -> 1900736 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/granite_yellow.pngbin0 -> 2405231 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/grunge_b.pngbin0 -> 6977465 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/grunge_b1.pngbin0 -> 5502762 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/grunge_d.pngbin0 -> 3945985 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/grunge_texture_01.pngbin0 -> 8759326 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/mahogany.pngbin0 -> 1832923 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/mahogany_bump.pngbin0 -> 357957 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/mahogany_floorboards.pngbin0 -> 2254134 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/mahogany_floorboards_bump.pngbin0 -> 178207 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/mahogany_floorboards_spec.pngbin0 -> 219675 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/mahogany_spec.pngbin0 -> 355461 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/metal_mesh.pngbin0 -> 359882 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/metal_mesh_bump.pngbin0 -> 21046 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/metal_mesh_spec.pngbin0 -> 291286 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/paper_diffuse.pngbin0 -> 6055975 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/paper_trans.pngbin0 -> 4718043 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/powdercoat_bump_01.pngbin0 -> 3822468 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/randomGradient1D.pngbin0 -> 618 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/randomGradient2D.pngbin0 -> 738 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/randomGradient3D.pngbin0 -> 748 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/randomGradient4D.pngbin0 -> 535 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/shadow.pngbin0 -> 334 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/smooth_black_leather.pngbin0 -> 429570 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/smooth_black_leather_bump.pngbin0 -> 223014 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/smooth_black_leather_spec.pngbin0 -> 219279 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/spherical_checker.pngbin0 -> 11066 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/studded_rubber_bump.pngbin0 -> 26901 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/teak.pngbin0 -> 1198746 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/teak_bump.pngbin0 -> 170908 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/teak_spec.pngbin0 -> 213868 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/walnut.pngbin0 -> 1633772 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/walnut_bump.pngbin0 -> 283457 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/walnut_spec.pngbin0 -> 181017 bytes
-rw-r--r--Studio/Content/Material Library/maps/materials/white_marble.pngbin0 -> 1342939 bytes
-rw-r--r--Studio/Content/Material Library/mesh_fence.shader236
-rw-r--r--Studio/Content/Material Library/metal_mesh_fine.shader234
-rw-r--r--Studio/Content/Material Library/paper_artistic.shader257
-rw-r--r--Studio/Content/Material Library/paper_office.shader255
-rw-r--r--Studio/Content/Material Library/plastic_structured_red.shader204
-rw-r--r--Studio/Content/Material Library/plastic_structured_red_emissive.shader228
-rw-r--r--Studio/Content/Material Library/porcelain.shader181
-rw-r--r--Studio/Content/Material Library/powder_coat.shader221
-rw-r--r--Studio/Content/Material Library/powder_coat_emissive.shader256
-rw-r--r--Studio/Content/Material Library/rubber_studded_black.shader219
-rw-r--r--Studio/Content/Material Library/rubber_studded_emissive.shader238
-rw-r--r--Studio/Content/Material Library/simple_glass.shader197
-rw-r--r--Studio/Content/Material Library/steel_milled_concentric.shader237
-rw-r--r--Studio/Content/Material Library/thin_glass_frosted.shader485
-rw-r--r--Studio/Content/Material Library/thin_glass_frosted_sp.shader246
-rw-r--r--Studio/Content/Material Library/thin_glass_refractive.shader202
-rw-r--r--Studio/Content/Material Library/walnut_matte.shader236
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Backgrounds/gauge_background_1.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Backgrounds/gauge_background_2.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Backgrounds/gauge_background_3.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Backgrounds/gauge_background_4.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Backgrounds/gauge_background_5.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Backgrounds/gauge_background_6.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Backgrounds/gauge_background_7.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Backgrounds/gauge_background_8.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Backgrounds/gauge_round_background.dae227
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Needles/needle_1.dae263
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Needles/needle_10.dae221
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Needles/needle_11.dae221
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Needles/needle_12.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Needles/needle_13.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Needles/needle_2.dae263
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Needles/needle_3.dae221
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Needles/needle_4.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Needles/needle_5.dae221
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Needles/needle_6.dae221
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Needles/needle_7.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Needles/needle_8.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Needles/needle_9.dae221
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Other/gauge_ring_1.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Other/gauge_ring_180.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Other/gauge_ring_2.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Other/gauge_ring_270.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Other/gauge_ring_pieces_1.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Other/gauge_ring_pieces_2.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Other/gaugefill_1.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Other/gaugefill_2.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Other/gaugefill_straight_1.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Other/gaugefill_straight_2.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Tickmarks/tickmarks_120_1.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Tickmarks/tickmarks_12_clock.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Tickmarks/tickmarks_240_1.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Tickmarks/tickmarks_260_1.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Tickmarks/tickmarks_260_2.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Tickmarks/tickmarks_320_1.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Tickmarks/tickmarks_320_2.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Tickmarks/tickmarks_50_1.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Tickmarks/tickmarks_60_1.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Tickmarks/tickmarks_8_1.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Tickmarks/tickmarks_8_extrude.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Tickmarks/tickmarks_8_small.dae179
-rw-r--r--Studio/Content/Models Library/Automotive/Cluster/Tickmarks/tickmarks_90_degrees.dae179
-rw-r--r--Studio/Content/Models Library/Electronics/Headphones.dae319
-rw-r--r--Studio/Content/Models Library/Media/DVD_cover-reflection.dae139
-rw-r--r--Studio/Content/Models Library/Media/DVD_cover.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Cubes/RoundedCube-1.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Cubes/RoundedCube-2.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Cubes/RoundedCube-3.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Cubes/RoundedCube-4.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Cubes/RoundedCube-5.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Planes/Plane-DoubleSided-mirroredUVs.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Planes/Plane-DoubleSided.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Planes/Plane-SingleSided-16X16.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Planes/Plane-SingleSided-2X2.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Planes/Plane-SingleSided-32X32.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Planes/Plane-SingleSided-4X4.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Planes/Plane-SingleSided-8X8.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Planes/Plane-SingleSided-mirroredUVs.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Planes/Plane-SingleSided.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Planes/RoundedPlane-1.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Planes/RoundedPlane-2.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Planes/RoundedPlane-3a.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Planes/RoundedPlane-3b.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Spheres/Sphere-high-doublesided.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Spheres/Sphere-high-inverted.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Spheres/Sphere-high.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Spheres/Sphere-low-doublesided.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Spheres/Sphere-low-inverted.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Spheres/Sphere-low.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Spheres/Sphere-medium-doublesided.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Spheres/Sphere-medium-inverted.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Spheres/Sphere-medium.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Spheres/Sphere-planerUVprojection.dae139
-rw-r--r--Studio/Content/Models Library/Primitives/Torus Knots/TorusKnot-1.dae147
-rw-r--r--Studio/Content/Models Library/Primitives/Torus Knots/TorusKnot-2.dae147
-rw-r--r--Studio/Content/Models Library/Primitives/Torus Knots/TorusKnot-3.dae147
-rw-r--r--Studio/Content/Models Library/Primitives/Torus Knots/TorusKnot-4.dae147
-rw-r--r--Studio/Content/Models Library/Primitives/Torus Knots/TorusKnot-5.dae147
-rw-r--r--Studio/Content/Models Library/Primitives/Torus Knots/TorusKnot-6.dae147
-rw-r--r--Studio/Content/Models Library/Primitives/Torus Knots/TorusKnot-7.dae147
-rw-r--r--Studio/Content/Models Library/Primitives/Torus Knots/TorusKnot-8.dae147
-rw-r--r--Studio/Content/Models Library/Primitives/Torus/Torus.dae139
-rw-r--r--commoninclude.pri87
-rw-r--r--commonplatform.pri308
-rw-r--r--configure.json9
-rw-r--r--examples/examples.pro3
-rw-r--r--examples/studio3d/cppdatainput/cppdatainput.pro11
-rw-r--r--examples/studio3d/cppdatainput/main.cpp137
-rw-r--r--examples/studio3d/cppdatainput/presentation/datainput.uia17
-rw-r--r--examples/studio3d/cppdatainput/presentation/datainput.uip45
-rw-r--r--examples/studio3d/cppdatainput/res.qrc6
-rw-r--r--examples/studio3d/qmldatainput/doc/images/qmldatainput.pngbin0 -> 163178 bytes
-rw-r--r--examples/studio3d/qmldatainput/doc/src/qmldatainput.qdoc55
-rw-r--r--examples/studio3d/qmldatainput/main.cpp79
-rw-r--r--examples/studio3d/qmldatainput/presentation/Paper05.pngbin0 -> 321820 bytes
-rw-r--r--examples/studio3d/qmldatainput/presentation/datainput.uia22
-rw-r--r--examples/studio3d/qmldatainput/presentation/datainput.uip66
-rw-r--r--examples/studio3d/qmldatainput/presentation/fonts/TitilliumWeb-Regular.ttfbin0 -> 63752 bytes
-rw-r--r--examples/studio3d/qmldatainput/qml/qmldatainput/main.qml211
-rw-r--r--examples/studio3d/qmldatainput/qmldatainput.pro20
-rw-r--r--examples/studio3d/qmldatainput/qmldatainput.qrc8
-rw-r--r--examples/studio3d/simpleqml/doc/images/simpleqml.pngbin0 -> 405882 bytes
-rw-r--r--examples/studio3d/simpleqml/doc/src/simpleqml.qdoc51
-rw-r--r--examples/studio3d/simpleqml/main.cpp75
-rw-r--r--examples/studio3d/simpleqml/main.qml284
-rw-r--r--examples/studio3d/simpleqml/presentation/barrel.uia16
-rw-r--r--examples/studio3d/simpleqml/presentation/barrel.uip58
-rw-r--r--examples/studio3d/simpleqml/presentation/barrel/barrel.import18
-rw-r--r--examples/studio3d/simpleqml/presentation/barrel/meshes/Barrel.meshbin0 -> 280864 bytes
-rw-r--r--examples/studio3d/simpleqml/presentation/barrel_no_background.uip56
-rw-r--r--examples/studio3d/simpleqml/presentation/fonts/Arimo-Regular.ttfbin0 -> 43616 bytes
-rw-r--r--examples/studio3d/simpleqml/presentation/maps/barrel_barrel_Diffuse.pngbin0 -> 789475 bytes
-rw-r--r--examples/studio3d/simpleqml/presentation/maps/barrel_barrel_Emissive.pngbin0 -> 3150 bytes
-rw-r--r--examples/studio3d/simpleqml/presentation/maps/barrel_barrel_Normal.pngbin0 -> 721686 bytes
-rw-r--r--examples/studio3d/simpleqml/presentation/maps/barrel_barrel_Specular.pngbin0 -> 195862 bytes
-rw-r--r--examples/studio3d/simpleqml/simpleqml.pro16
-rw-r--r--examples/studio3d/simpleqml/simpleqml.qrc14
-rw-r--r--examples/studio3d/studio3d.pro9
-rw-r--r--ogl-runtime.pro32
-rw-r--r--platformres.qrc4
-rw-r--r--res.qrc117
-rw-r--r--res/DataModelMetadata/en-us/MetaData.xml567
-rw-r--r--res/Font/TitilliumWeb-Regular.ttfbin0 -> 63752 bytes
-rw-r--r--res/effectlib/Fxaa3_11.glsllib2073
-rw-r--r--res/effectlib/Fxaa3_8.glsllib1423
-rw-r--r--res/effectlib/SMAA.glsllib1444
-rw-r--r--res/effectlib/SSAOCustomMaterial.glsllib91
-rw-r--r--res/effectlib/abbeNumberIOR.glsllib36
-rw-r--r--res/effectlib/anisotropyConversion.glsllib46
-rw-r--r--res/effectlib/average.glsllib35
-rw-r--r--res/effectlib/blendColorLayers.glsllib45
-rw-r--r--res/effectlib/blur.glsllib295
-rw-r--r--res/effectlib/calculateRoughness.glsllib63
-rw-r--r--res/effectlib/coordinateSource.glsllib55
-rw-r--r--res/effectlib/cube.glsllib50
-rw-r--r--res/effectlib/customCurveLayer.glsllib42
-rw-r--r--res/effectlib/customMaterial.glsllib47
-rw-r--r--res/effectlib/customMaterialFragBody.glsllib84
-rw-r--r--res/effectlib/customMaterialFragBodyAO.glsllib90
-rw-r--r--res/effectlib/defaultMaterialBumpNoLod.glsllib52
-rw-r--r--res/effectlib/defaultMaterialFileBumpTexture.glsllib40
-rw-r--r--res/effectlib/defaultMaterialFileDisplacementTexture.glsllib40
-rw-r--r--res/effectlib/defaultMaterialFileNormalTexture.glsllib40
-rw-r--r--res/effectlib/defaultMaterialFresnel.glsllib44
-rw-r--r--res/effectlib/defaultMaterialLighting.glsllib80
-rw-r--r--res/effectlib/defaultMaterialPhysGlossyBSDF.glsllib43
-rw-r--r--res/effectlib/depthpass.glsllib80
-rw-r--r--res/effectlib/dfTint.glsllib35
-rw-r--r--res/effectlib/diffuseReflectionBSDF.glsllib66
-rw-r--r--res/effectlib/diffuseTransmissionBSDF.glsllib42
-rw-r--r--res/effectlib/directionalFactor.glsllib42
-rw-r--r--res/effectlib/distancefieldtext.frag28
-rw-r--r--res/effectlib/distancefieldtext.vert77
-rw-r--r--res/effectlib/distancefieldtext_core.frag11
-rw-r--r--res/effectlib/distancefieldtext_core.vert15
-rw-r--r--res/effectlib/distancefieldtext_dropshadow.frag47
-rw-r--r--res/effectlib/distancefieldtext_dropshadow.vert88
-rw-r--r--res/effectlib/distancefieldtext_dropshadow_core.frag28
-rw-r--r--res/effectlib/distancefieldtext_dropshadow_core.vert25
-rw-r--r--res/effectlib/effect.glsllib148
-rw-r--r--res/effectlib/evalBakedShadowMap.glsllib36
-rw-r--r--res/effectlib/evalEnvironmentMap.glsllib55
-rw-r--r--res/effectlib/evalLightmaps.glsllib56
-rw-r--r--res/effectlib/fileBumpTexture.glsllib119
-rw-r--r--res/effectlib/fileDisplacementTexture.glsllib71
-rw-r--r--res/effectlib/fileTexture.glsllib48
-rw-r--r--res/effectlib/flakeNoiseBumpTexture.glsllib46
-rw-r--r--res/effectlib/flakeNoiseTexture.glsllib66
-rw-r--r--res/effectlib/fresnelLayer.glsllib109
-rw-r--r--res/effectlib/funcareaLightVars.glsllib32
-rw-r--r--res/effectlib/funccalculateDiffuseAreaOld.glsllib29
-rw-r--r--res/effectlib/funccalculatePointLightAttenuation.glsllib4
-rw-r--r--res/effectlib/funccomputeMicroHit.glsllib50
-rw-r--r--res/effectlib/funcdiffuseReflectionBSDF.glsllib43
-rw-r--r--res/effectlib/funcdiffuseReflectionWrapBSDF.glsllib5
-rw-r--r--res/effectlib/funcgetTransformedUVCoords.glsllib4
-rw-r--r--res/effectlib/funcsampleAreaGlossyDefault.glsllib42
-rw-r--r--res/effectlib/funcsampleLightVars.glsllib29
-rw-r--r--res/effectlib/funcspecularBSDF.glsllib42
-rw-r--r--res/effectlib/gles2/SSAOCustomMaterial.glsllib100
-rw-r--r--res/effectlib/gles2/defaultMaterialBumpNoLod.glsllib52
-rw-r--r--res/effectlib/gles2/evalEnvironmentMap.glsllib37
-rw-r--r--res/effectlib/gles2/funcareaLightVars.glsllib29
-rw-r--r--res/effectlib/gles2/funcsampleLightVars.glsllib27
-rw-r--r--res/effectlib/gles2/microfacetBSDF.glsllib233
-rw-r--r--res/effectlib/gles2/monoChannel.glsllib58
-rw-r--r--res/effectlib/gles2/refraction.glsllib87
-rw-r--r--res/effectlib/gles2/sampleProbe.glsllib482
-rw-r--r--res/effectlib/gles2/shadowMapping.glsllib106
-rw-r--r--res/effectlib/gles2/tangentSpaceNormalTexture.glsllib97
-rw-r--r--res/effectlib/gradient3Recolor.glsllib73
-rw-r--r--res/effectlib/gradient3Texture.glsllib36
-rw-r--r--res/effectlib/gradientGetPosition.glsllib76
-rw-r--r--res/effectlib/luminance.glsllib62
-rw-r--r--res/effectlib/miNoise.glsllib113
-rw-r--r--res/effectlib/microfacetBSDF.glsllib259
-rw-r--r--res/effectlib/monoChannel.glsllib58
-rw-r--r--res/effectlib/normalizedMix.glsllib42
-rw-r--r--res/effectlib/perlinNoise.glsllib234
-rw-r--r--res/effectlib/perlinNoiseBumpTexture.glsllib49
-rw-r--r--res/effectlib/perlinNoiseTexture.glsllib11
-rw-r--r--res/effectlib/physGlossyBSDF.glsllib159
-rw-r--r--res/effectlib/random255.glsllib56
-rw-r--r--res/effectlib/refraction.glsllib87
-rw-r--r--res/effectlib/rotationTranslationScale.glsllib50
-rw-r--r--res/effectlib/sampleArea.glsllib180
-rw-r--r--res/effectlib/sampleLight.glsllib130
-rw-r--r--res/effectlib/sampleProbe.glsllib473
-rw-r--r--res/effectlib/screenSpaceAO.glsllib150
-rw-r--r--res/effectlib/screenSpaceDO.glsllib158
-rw-r--r--res/effectlib/shadowMapping.glsllib106
-rw-r--r--res/effectlib/shadowMappingFragment.glsllib10
-rw-r--r--res/effectlib/simpleGlossyBSDF.glsllib99
-rw-r--r--res/effectlib/specularBSDF.glsllib47
-rw-r--r--res/effectlib/spotEdf.glsllib42
-rw-r--r--res/effectlib/square.glsllib35
-rw-r--r--res/effectlib/tangentSpaceNormalTexture.glsllib91
-rw-r--r--res/effectlib/tessellationLinear.glsllib104
-rw-r--r--res/effectlib/tessellationLinearCM.glsllib174
-rw-r--r--res/effectlib/tessellationNPatch.glsllib290
-rw-r--r--res/effectlib/tessellationNPatchCM.glsllib194
-rw-r--r--res/effectlib/tessellationPath.glsllib183
-rw-r--r--res/effectlib/tessellationPhong.glsllib170
-rw-r--r--res/effectlib/tessellationPhongCM.glsllib179
-rw-r--r--res/effectlib/textureCoordinateInfo.glsllib54
-rw-r--r--res/effectlib/transformCoordinate.glsllib43
-rw-r--r--res/effectlib/vertexFragmentBase.glsllib61
-rw-r--r--res/effectlib/viewProperties.glsllib41
-rw-r--r--res/effectlib/weightedLayer.glsllib35
-rw-r--r--res/effectlib/wireframeCM.glsllib169
-rw-r--r--res/primitives/Cone.meshbin0 -> 5352 bytes
-rw-r--r--res/primitives/Cube.meshbin0 -> 1764 bytes
-rw-r--r--res/primitives/Cylinder.meshbin0 -> 15908 bytes
-rw-r--r--res/primitives/Rectangle.meshbin0 -> 900 bytes
-rw-r--r--res/primitives/Sphere.meshbin0 -> 177980 bytes
-rw-r--r--src/3rdparty/3rdparty.pro5
m---------src/3rdparty/EASTL0
-rw-r--r--src/3rdparty/color/CColor.cpp719
-rw-r--r--src/3rdparty/color/CColor.h298
-rw-r--r--src/3rdparty/platformspecific/Android/jni/GLES2/gl2.h677
-rw-r--r--src/3rdparty/platformspecific/Android/jni/GLES2/gl2ext.h2946
-rw-r--r--src/3rdparty/platformspecific/Android/jni/GLES2/gl2platform.h30
-rw-r--r--src/3rdparty/platformspecific/Android/jni/GLES3/gl3.h1213
-rw-r--r--src/3rdparty/platformspecific/Android/jni/GLES3/gl31.h1528
-rw-r--r--src/3rdparty/platformspecific/Android/jni/GLES3/gl32.h1829
-rw-r--r--src/3rdparty/platformspecific/Android/jni/GLES3/gl3ext.h24
-rw-r--r--src/3rdparty/platformspecific/Android/jni/GLES3/gl3platform.h30
-rw-r--r--src/3rdparty/platformspecific/Windows/PlatformLibs/GL/gl.h1543
-rw-r--r--src/3rdparty/platformspecific/Windows/PlatformLibs/GL/glcorearb.h4533
-rw-r--r--src/3rdparty/platformspecific/Windows/PlatformLibs/GL/glew.h16126
-rw-r--r--src/3rdparty/platformspecific/Windows/PlatformLibs/GL/glext.h11163
-rw-r--r--src/3rdparty/platformspecific/Windows/PlatformLibs/GL/glfuncdef.h343
-rw-r--r--src/3rdparty/platformspecific/Windows/PlatformLibs/GL/glu.h607
-rw-r--r--src/3rdparty/platformspecific/Windows/PlatformLibs/GL/glut.h771
-rw-r--r--src/3rdparty/platformspecific/Windows/PlatformLibs/GL/glx.h357
-rw-r--r--src/3rdparty/platformspecific/Windows/PlatformLibs/GL/glxew.h1587
-rw-r--r--src/3rdparty/platformspecific/Windows/PlatformLibs/GL/glxext.h941
-rw-r--r--src/3rdparty/platformspecific/Windows/PlatformLibs/GL/nvogldebug.h794
-rw-r--r--src/3rdparty/platformspecific/Windows/PlatformLibs/GL/wglew.h1363
-rw-r--r--src/3rdparty/platformspecific/Windows/PlatformLibs/GL/wglext.h421
-rw-r--r--src/api/api.pro5
-rw-r--r--src/api/studio3d/q3dscommandqueue.cpp346
-rw-r--r--src/api/studio3d/q3dscommandqueue_p.h172
-rw-r--r--src/api/studio3d/q3dsdatainput.cpp451
-rw-r--r--src/api/studio3d/q3dsdatainput.h97
-rw-r--r--src/api/studio3d/q3dsdatainput_p.h89
-rw-r--r--src/api/studio3d/q3dsdataoutput.cpp225
-rw-r--r--src/api/studio3d/q3dsdataoutput.h83
-rw-r--r--src/api/studio3d/q3dsdataoutput_p.h75
-rw-r--r--src/api/studio3d/q3dselement.cpp284
-rw-r--r--src/api/studio3d/q3dselement.h79
-rw-r--r--src/api/studio3d/q3dselement_p.h77
-rw-r--r--src/api/studio3d/q3dsgeometry.cpp152
-rw-r--r--src/api/studio3d/q3dsgeometry.h117
-rw-r--r--src/api/studio3d/q3dsgeometry_p.h67
-rw-r--r--src/api/studio3d/q3dsimagesequencegenerator.cpp56
-rw-r--r--src/api/studio3d/q3dsimagesequencegenerator_p.h67
-rw-r--r--src/api/studio3d/q3dsimagesequencegeneratorthread.cpp190
-rw-r--r--src/api/studio3d/q3dsimagesequencegeneratorthread_p.h90
-rw-r--r--src/api/studio3d/q3dspresentation.cpp2100
-rw-r--r--src/api/studio3d/q3dspresentation.h162
-rw-r--r--src/api/studio3d/q3dspresentation_p.h127
-rw-r--r--src/api/studio3d/q3dssceneelement.cpp436
-rw-r--r--src/api/studio3d/q3dssceneelement.h83
-rw-r--r--src/api/studio3d/q3dssceneelement_p.h81
-rw-r--r--src/api/studio3d/q3dssurfaceviewer.cpp722
-rw-r--r--src/api/studio3d/q3dssurfaceviewer.h118
-rw-r--r--src/api/studio3d/q3dssurfaceviewer_p.h107
-rw-r--r--src/api/studio3d/q3dsviewersettings.cpp401
-rw-r--r--src/api/studio3d/q3dsviewersettings.h104
-rw-r--r--src/api/studio3d/q3dsviewersettings_p.h88
-rw-r--r--src/api/studio3d/qstudio3dglobal.h61
-rw-r--r--src/api/studio3d/studio3d.pro64
-rw-r--r--src/api/studio3d/studioutils.cpp56
-rw-r--r--src/api/studio3d/studioutils_p.h52
-rw-r--r--src/api/studio3d/viewerqmlstreamproxy.cpp59
-rw-r--r--src/api/studio3d/viewerqmlstreamproxy_p.h57
-rw-r--r--src/api/studio3dqml/q3dsplugin.cpp62
-rw-r--r--src/api/studio3dqml/q3dsplugin.h60
-rw-r--r--src/api/studio3dqml/q3dspresentationitem.cpp160
-rw-r--r--src/api/studio3dqml/q3dspresentationitem_p.h76
-rw-r--r--src/api/studio3dqml/q3dsrenderer.cpp458
-rw-r--r--src/api/studio3dqml/q3dsrenderer_p.h110
-rw-r--r--src/api/studio3dqml/q3dsstudio3d.cpp535
-rw-r--r--src/api/studio3dqml/q3dsstudio3d_p.h137
-rw-r--r--src/api/studio3dqml/qmldir3
-rw-r--r--src/api/studio3dqml/studio3dqml.pro34
-rw-r--r--src/commoninclude.pri1
-rw-r--r--src/datamodel/DocumentResourceManagerCustomMaterialParser.h80
-rw-r--r--src/datamodel/DocumentResourceManagerRenderPluginParser.h80
-rw-r--r--src/datamodel/DocumentResourceManagerScriptParser.h137
-rw-r--r--src/datamodel/Qt3DSMetadata.cpp998
-rw-r--r--src/datamodel/Qt3DSMetadata.h386
-rw-r--r--src/dm/EASTL_new.cpp40
-rw-r--r--src/dm/Qt3DSDMPrefix.h81
-rw-r--r--src/dm/dm.pro58
-rw-r--r--src/dm/systems/ActionSystem.cpp131
-rw-r--r--src/dm/systems/ActionSystem.h84
-rw-r--r--src/dm/systems/HandleSystemBase.h169
-rw-r--r--src/dm/systems/HandleSystemTransactions.h88
-rw-r--r--src/dm/systems/Qt3DSDMActionCore.h99
-rw-r--r--src/dm/systems/Qt3DSDMActionInfo.h96
-rw-r--r--src/dm/systems/Qt3DSDMActionSystem.h68
-rw-r--r--src/dm/systems/Qt3DSDMAnimation.h841
-rw-r--r--src/dm/systems/Qt3DSDMComposerTypeDefinitions.cpp579
-rw-r--r--src/dm/systems/Qt3DSDMComposerTypeDefinitions.h956
-rw-r--r--src/dm/systems/Qt3DSDMDataCore.h320
-rw-r--r--src/dm/systems/Qt3DSDMDataTypes.h891
-rw-r--r--src/dm/systems/Qt3DSDMErrors.h308
-rw-r--r--src/dm/systems/Qt3DSDMGuides.cpp222
-rw-r--r--src/dm/systems/Qt3DSDMGuides.h102
-rw-r--r--src/dm/systems/Qt3DSDMHandles.h459
-rw-r--r--src/dm/systems/Qt3DSDMMetaData.cpp4170
-rw-r--r--src/dm/systems/Qt3DSDMMetaData.h400
-rw-r--r--src/dm/systems/Qt3DSDMMetaDataTypes.h350
-rw-r--r--src/dm/systems/Qt3DSDMMetaDataValue.h251
-rw-r--r--src/dm/systems/Qt3DSDMPropertyDefinition.h75
-rw-r--r--src/dm/systems/Qt3DSDMSignalStructImpl.h305
-rw-r--r--src/dm/systems/Qt3DSDMSignalStructs.h89
-rw-r--r--src/dm/systems/Qt3DSDMSignalSystem.cpp184
-rw-r--r--src/dm/systems/Qt3DSDMSignalSystem.h52
-rw-r--r--src/dm/systems/Qt3DSDMSignals.h611
-rw-r--r--src/dm/systems/Qt3DSDMSlideCore.h239
-rw-r--r--src/dm/systems/Qt3DSDMSlideGraphCore.h89
-rw-r--r--src/dm/systems/Qt3DSDMSlides.h202
-rw-r--r--src/dm/systems/Qt3DSDMStringTable.cpp85
-rw-r--r--src/dm/systems/Qt3DSDMStringTable.h71
-rw-r--r--src/dm/systems/Qt3DSDMTestOps.h61
-rw-r--r--src/dm/systems/Qt3DSDMTransactions.h244
-rw-r--r--src/dm/systems/Qt3DSDMValue.cpp178
-rw-r--r--src/dm/systems/Qt3DSDMValue.h341
-rw-r--r--src/dm/systems/Qt3DSDMWStrOps.h40
-rw-r--r--src/dm/systems/Qt3DSDMWStrOpsImpl.h761
-rw-r--r--src/dm/systems/Qt3DSDMWindowsCompatibility.h182
-rw-r--r--src/dm/systems/Qt3DSDMXML.cpp1253
-rw-r--r--src/dm/systems/Qt3DSDMXML.h506
-rw-r--r--src/dm/systems/SignalsImpl.cpp1565
-rw-r--r--src/dm/systems/SignalsImpl.h50
-rw-r--r--src/dm/systems/SlideSystem.cpp867
-rw-r--r--src/dm/systems/SlideSystem.h179
-rw-r--r--src/dm/systems/StandardExtensions.h196
-rw-r--r--src/dm/systems/StudioAnimationSystem.cpp610
-rw-r--r--src/dm/systems/StudioAnimationSystem.h134
-rw-r--r--src/dm/systems/StudioCoreSystem.cpp409
-rw-r--r--src/dm/systems/StudioCoreSystem.h94
-rw-r--r--src/dm/systems/StudioFullSystem.cpp647
-rw-r--r--src/dm/systems/StudioFullSystem.h164
-rw-r--r--src/dm/systems/StudioPropertySystem.cpp233
-rw-r--r--src/dm/systems/StudioPropertySystem.h132
-rw-r--r--src/dm/systems/VectorTransactions.h235
-rw-r--r--src/dm/systems/cores/ActionCoreProducer.cpp289
-rw-r--r--src/dm/systems/cores/ActionCoreProducer.h125
-rw-r--r--src/dm/systems/cores/AnimationCoreProducer.cpp488
-rw-r--r--src/dm/systems/cores/AnimationCoreProducer.h148
-rw-r--r--src/dm/systems/cores/DataCoreProducer.cpp457
-rw-r--r--src/dm/systems/cores/DataCoreProducer.h175
-rw-r--r--src/dm/systems/cores/SimpleActionCore.cpp240
-rw-r--r--src/dm/systems/cores/SimpleActionCore.h165
-rw-r--r--src/dm/systems/cores/SimpleAnimationCore.cpp618
-rw-r--r--src/dm/systems/cores/SimpleAnimationCore.h230
-rw-r--r--src/dm/systems/cores/SimpleDataCore.cpp574
-rw-r--r--src/dm/systems/cores/SimpleDataCore.h373
-rw-r--r--src/dm/systems/cores/SimpleSlideCore.cpp420
-rw-r--r--src/dm/systems/cores/SimpleSlideCore.h408
-rw-r--r--src/dm/systems/cores/SimpleSlideGraphCore.cpp169
-rw-r--r--src/dm/systems/cores/SimpleSlideGraphCore.h134
-rw-r--r--src/dm/systems/cores/SlideCoreProducer.cpp562
-rw-r--r--src/dm/systems/cores/SlideCoreProducer.h190
-rw-r--r--src/dm/systems/cores/SlideGraphCoreProducer.cpp245
-rw-r--r--src/dm/systems/cores/SlideGraphCoreProducer.h98
-rw-r--r--src/engine/EnginePrefix.h143
-rw-r--r--src/engine/NVImageScaler.h311
-rw-r--r--src/engine/OpenKodeInclude.h49
-rw-r--r--src/engine/Qt3DSEGLInfo.h60
-rw-r--r--src/engine/Qt3DSEGLWindowSystem.h81
-rw-r--r--src/engine/Qt3DSPluginDLL.h128
-rw-r--r--src/engine/Qt3DSRenderRuntimeBinding.cpp1858
-rw-r--r--src/engine/Qt3DSRenderRuntimeBinding.h82
-rw-r--r--src/engine/Qt3DSRenderRuntimeBindingImpl.h218
-rw-r--r--src/engine/Qt3DSRenderRuntimeBindingImplRenderer.cpp224
-rw-r--r--src/engine/Qt3DSRenderRuntimeBindingImplTranslation.cpp1841
-rw-r--r--src/engine/Qt3DSRuntimeView.cpp862
-rw-r--r--src/engine/Qt3DSRuntimeView.h238
-rw-r--r--src/engine/Qt3DSTegraInputEngine.cpp124
-rw-r--r--src/engine/Qt3DSTegraInputEngine.h81
-rw-r--r--src/engine/Qt3DSWindowSystem.h57
-rw-r--r--src/event/EventFactory.cpp143
-rw-r--r--src/event/EventFactory.h87
-rw-r--r--src/event/EventPoller.cpp375
-rw-r--r--src/event/EventPoller.h103
-rw-r--r--src/event/EventPollingSystem.h87
-rw-r--r--src/event/EventSystem.h73
-rw-r--r--src/event/EventSystemC.cpp34
-rw-r--r--src/event/EventSystemC.h139
-rw-r--r--src/event/test/CanProviderDemo.cpp259
-rw-r--r--src/event/test/CanProviderDemo.h56
-rw-r--r--src/foundation/AutoDeallocatorAllocator.h99
-rw-r--r--src/foundation/ConvertUTF.cpp661
-rw-r--r--src/foundation/ConvertUTF.h179
-rw-r--r--src/foundation/EASTL_new.cpp75
-rw-r--r--src/foundation/FastAllocator.h115
-rw-r--r--src/foundation/FileTools.cpp550
-rw-r--r--src/foundation/FileTools.h124
-rw-r--r--src/foundation/IOStreams.cpp384
-rw-r--r--src/foundation/IOStreams.h278
-rw-r--r--src/foundation/LICENCE_SOCKET.TXT20
-rw-r--r--src/foundation/LICENSE_CONVERTUTF.TXT19
-rw-r--r--src/foundation/PoolingAllocator.h177
-rw-r--r--src/foundation/PreAllocatedAllocator.h88
-rw-r--r--src/foundation/Qt3DS.h59
-rw-r--r--src/foundation/Qt3DSAllocator.h195
-rw-r--r--src/foundation/Qt3DSAllocatorCallback.h100
-rw-r--r--src/foundation/Qt3DSAssert.h62
-rw-r--r--src/foundation/Qt3DSAtomic.h63
-rw-r--r--src/foundation/Qt3DSBasicTemplates.h113
-rw-r--r--src/foundation/Qt3DSBounds3.h443
-rw-r--r--src/foundation/Qt3DSBroadcastingAllocator.h113
-rw-r--r--src/foundation/Qt3DSContainers.h129
-rw-r--r--src/foundation/Qt3DSDataRef.h162
-rw-r--r--src/foundation/Qt3DSDiscriminatedUnion.h335
-rw-r--r--src/foundation/Qt3DSFPU.h97
-rw-r--r--src/foundation/Qt3DSFastIPC.h57
-rw-r--r--src/foundation/Qt3DSFlags.h360
-rw-r--r--src/foundation/Qt3DSFoundation.cpp237
-rw-r--r--src/foundation/Qt3DSFoundation.h120
-rw-r--r--src/foundation/Qt3DSIPC.h99
-rw-r--r--src/foundation/Qt3DSIndexableLinkedList.h309
-rw-r--r--src/foundation/Qt3DSIntrinsics.h50
-rw-r--r--src/foundation/Qt3DSInvasiveLinkedList.h361
-rw-r--r--src/foundation/Qt3DSInvasiveSet.h104
-rw-r--r--src/foundation/Qt3DSLogging.cpp44
-rw-r--r--src/foundation/Qt3DSLogging.h51
-rw-r--r--src/foundation/Qt3DSMat33.h385
-rw-r--r--src/foundation/Qt3DSMat44.h497
-rw-r--r--src/foundation/Qt3DSMath.h323
-rw-r--r--src/foundation/Qt3DSMathUtils.cpp181
-rw-r--r--src/foundation/Qt3DSMathUtils.h571
-rw-r--r--src/foundation/Qt3DSMemoryBuffer.h160
-rw-r--r--src/foundation/Qt3DSMutex.h376
-rw-r--r--src/foundation/Qt3DSNoCopy.h50
-rw-r--r--src/foundation/Qt3DSOption.h104
-rw-r--r--src/foundation/Qt3DSPerfTimer.cpp163
-rw-r--r--src/foundation/Qt3DSPerfTimer.h107
-rw-r--r--src/foundation/Qt3DSPlane.h134
-rw-r--r--src/foundation/Qt3DSPool.h159
-rw-r--r--src/foundation/Qt3DSPreprocessor.h375
-rw-r--r--src/foundation/Qt3DSQuat.h381
-rw-r--r--src/foundation/Qt3DSRefCounted.h199
-rw-r--r--src/foundation/Qt3DSSemaphore.h67
-rw-r--r--src/foundation/Qt3DSSimpleTypes.h125
-rw-r--r--src/foundation/Qt3DSStringTokenizer.h108
-rw-r--r--src/foundation/Qt3DSSync.h70
-rw-r--r--src/foundation/Qt3DSSystem.cpp139
-rw-r--r--src/foundation/Qt3DSSystem.h58
-rw-r--r--src/foundation/Qt3DSThread.h205
-rw-r--r--src/foundation/Qt3DSTime.h97
-rw-r--r--src/foundation/Qt3DSTransform.h195
-rw-r--r--src/foundation/Qt3DSUnionCast.h64
-rw-r--r--src/foundation/Qt3DSUtilities.h189
-rw-r--r--src/foundation/Qt3DSVec2.h321
-rw-r--r--src/foundation/Qt3DSVec3.h377
-rw-r--r--src/foundation/Qt3DSVec4.h373
-rw-r--r--src/foundation/Qt3DSVersionNumber.h67
-rw-r--r--src/foundation/SerializationTypes.h132
-rw-r--r--src/foundation/Socket.cpp472
-rw-r--r--src/foundation/Socket.h79
-rw-r--r--src/foundation/StrConvertUTF.h213
-rw-r--r--src/foundation/StringConversion.h226
-rw-r--r--src/foundation/StringConversionImpl.h219
-rw-r--r--src/foundation/StringTable.cpp700
-rw-r--r--src/foundation/StringTable.h311
-rw-r--r--src/foundation/StringTools.h614
-rw-r--r--src/foundation/TaggedPointer.h80
-rw-r--r--src/foundation/ThreadSafeQueue.h111
-rw-r--r--src/foundation/TrackingAllocator.cpp50
-rw-r--r--src/foundation/TrackingAllocator.h252
-rw-r--r--src/foundation/Utils.h382
-rw-r--r--src/foundation/XML.cpp948
-rw-r--r--src/foundation/XML.h680
-rw-r--r--src/foundation/linux/LICENSE.TXT7
-rw-r--r--src/foundation/linux/Qt3DSLinuxAoS.h157
-rw-r--r--src/foundation/linux/Qt3DSLinuxAtomic.cpp129
-rw-r--r--src/foundation/linux/Qt3DSLinuxFPU.cpp52
-rw-r--r--src/foundation/linux/Qt3DSLinuxFile.h48
-rw-r--r--src/foundation/linux/Qt3DSLinuxInlineAoS.h2666
-rw-r--r--src/foundation/linux/Qt3DSLinuxIntrinsics.h209
-rw-r--r--src/foundation/linux/Qt3DSLinuxMutex.cpp120
-rw-r--r--src/foundation/linux/Qt3DSLinuxSemaphore.cpp146
-rw-r--r--src/foundation/linux/Qt3DSLinuxString.h202
-rw-r--r--src/foundation/linux/Qt3DSLinuxSync.cpp137
-rw-r--r--src/foundation/linux/Qt3DSLinuxThread.cpp384
-rw-r--r--src/foundation/linux/Qt3DSLinuxTime.cpp111
-rw-r--r--src/foundation/linux/Qt3DSLinuxTrigConstants.h96
-rw-r--r--src/foundation/linux/SocketImpl.h424
-rw-r--r--src/foundation/linux/qt_attribution.json10
-rw-r--r--src/foundation/macos/Qt3DSUnixAtomic.cpp89
-rw-r--r--src/foundation/macos/Qt3DSUnixFPU.cpp61
-rw-r--r--src/foundation/macos/Qt3DSUnixMutex.cpp120
-rw-r--r--src/foundation/macos/Qt3DSUnixSemaphore.cpp146
-rw-r--r--src/foundation/macos/Qt3DSUnixSync.cpp137
-rw-r--r--src/foundation/macos/Qt3DSUnixTime.cpp108
-rw-r--r--src/foundation/qt/formatdiscovery.cpp126
-rw-r--r--src/foundation/qt_attribution.json22
-rw-r--r--src/foundation/windows/LICENSE.TXT7
-rw-r--r--src/foundation/windows/Qt3DSWindowsAoS.h126
-rw-r--r--src/foundation/windows/Qt3DSWindowsAtomic.cpp93
-rw-r--r--src/foundation/windows/Qt3DSWindowsFPU.cpp61
-rw-r--r--src/foundation/windows/Qt3DSWindowsFile.h48
-rw-r--r--src/foundation/windows/Qt3DSWindowsInclude.h93
-rw-r--r--src/foundation/windows/Qt3DSWindowsInlineAoS.h2715
-rw-r--r--src/foundation/windows/Qt3DSWindowsIntrinsics.h230
-rw-r--r--src/foundation/windows/Qt3DSWindowsMutex.cpp149
-rw-r--r--src/foundation/windows/Qt3DSWindowsSemaphore.cpp72
-rw-r--r--src/foundation/windows/Qt3DSWindowsString.h147
-rw-r--r--src/foundation/windows/Qt3DSWindowsSync.cpp74
-rw-r--r--src/foundation/windows/Qt3DSWindowsThread.cpp241
-rw-r--r--src/foundation/windows/Qt3DSWindowsTime.cpp92
-rw-r--r--src/foundation/windows/Qt3DSWindowsTrigConstants.h93
-rw-r--r--src/foundation/windows/SocketImpl.h506
-rw-r--r--src/foundation/windows/qt_attribution.json10
-rw-r--r--src/hdr/CUDABSDFMipmap.cpp145
-rw-r--r--src/hdr/CUDABSDFMipmap.h77
-rw-r--r--src/hdr/GLComputeMipMap.h74
-rw-r--r--src/hdr/GLComputeMipmap.cpp394
-rw-r--r--src/hdr/HDR.cpp30
-rw-r--r--src/hdr/HDR.h239
-rw-r--r--src/hdr/MipmapBSDF.cpp265
-rw-r--r--src/hdr/MipmapBSDF.cu404
-rw-r--r--src/hdr/MipmapBSDF.h104
-rw-r--r--src/importlib/Qt3DSImportContainers.h88
-rw-r--r--src/importlib/Qt3DSImportLibPrecompile.h56
-rw-r--r--src/importlib/Qt3DSImportMesh.cpp829
-rw-r--r--src/importlib/Qt3DSImportMesh.h530
-rw-r--r--src/importlib/Qt3DSImportMeshBuilder.cpp598
-rw-r--r--src/importlib/Qt3DSImportPath.cpp152
-rw-r--r--src/importlib/Qt3DSImportPath.h87
-rw-r--r--src/ogl-runtime-dylib/ogl-runtime-dylib.pro74
-rw-r--r--src/ogl-runtime-static/ogl-runtime-static.pro656
-rw-r--r--src/platformspecific/android/jni/libs/nv_math/NvVec.h316
-rw-r--r--src/platformspecific/android/jni/libs/nv_math/misc.h130
-rw-r--r--src/platformspecific/android/jni/libs/nv_math/nv_math.cpp64
-rw-r--r--src/platformspecific/android/jni/libs/nv_math/nv_math.h45
-rw-r--r--src/platformspecific/android/jni/libs/nv_math/nv_matrix.cpp1030
-rw-r--r--src/platformspecific/android/jni/libs/nv_math/nv_matrix.h117
-rw-r--r--src/platformspecific/android/jni/libs/nv_math/nv_quat.cpp199
-rw-r--r--src/platformspecific/android/jni/libs/nv_math/nv_quat.h63
-rw-r--r--src/platformspecific/linux/assets/courier+lucida_256.abcbin0 -> 2048 bytes
-rw-r--r--src/platformspecific/linux/assets/courier+lucida_256.ddsbin0 -> 87509 bytes
-rw-r--r--src/platformspecific/linux/assets/courier+lucida_512.abcbin0 -> 2048 bytes
-rw-r--r--src/platformspecific/linux/assets/courier+lucida_512.ddsbin0 -> 349653 bytes
-rw-r--r--src/platformspecific/linux/assets/font.frag39
-rw-r--r--src/platformspecific/linux/assets/font.vert49
-rw-r--r--src/platformspecific/linux/libs/nv_color.h107
-rw-r--r--src/platformspecific/linux/libs/nv_debug.h86
-rw-r--r--src/platformspecific/linux/libs/nv_global.h36
-rw-r--r--src/platformspecific/linux/libs/nv_math/NvVec.h316
-rw-r--r--src/platformspecific/linux/libs/nv_math/misc.h130
-rw-r--r--src/platformspecific/linux/libs/nv_math/nv_math.cpp64
-rw-r--r--src/platformspecific/linux/libs/nv_math/nv_math.h45
-rw-r--r--src/platformspecific/linux/libs/nv_math/nv_matrix.cpp1030
-rw-r--r--src/platformspecific/linux/libs/nv_math/nv_matrix.h118
-rw-r--r--src/platformspecific/linux/libs/nv_math/nv_quat.cpp203
-rw-r--r--src/platformspecific/linux/libs/nv_math/nv_quat.h64
-rw-r--r--src/platformspecific/linux/libs/nv_types.h81
-rw-r--r--src/platformspecific/macos/assets/courier+lucida_256.abcbin0 -> 2048 bytes
-rw-r--r--src/platformspecific/macos/assets/courier+lucida_256.ddsbin0 -> 87509 bytes
-rw-r--r--src/platformspecific/macos/assets/courier+lucida_512.abcbin0 -> 2048 bytes
-rw-r--r--src/platformspecific/macos/assets/courier+lucida_512.ddsbin0 -> 349653 bytes
-rw-r--r--src/platformspecific/macos/assets/font.frag39
-rw-r--r--src/platformspecific/macos/assets/font.vert49
-rw-r--r--src/platformspecific/macos/libs/nv_color.h107
-rw-r--r--src/platformspecific/macos/libs/nv_debug.h86
-rw-r--r--src/platformspecific/macos/libs/nv_global.h36
-rw-r--r--src/platformspecific/macos/libs/nv_math/NvVec.h316
-rw-r--r--src/platformspecific/macos/libs/nv_math/misc.h130
-rw-r--r--src/platformspecific/macos/libs/nv_math/nv_math.cpp64
-rw-r--r--src/platformspecific/macos/libs/nv_math/nv_math.h45
-rw-r--r--src/platformspecific/macos/libs/nv_math/nv_matrix.cpp1030
-rw-r--r--src/platformspecific/macos/libs/nv_math/nv_matrix.h117
-rw-r--r--src/platformspecific/macos/libs/nv_math/nv_quat.cpp199
-rw-r--r--src/platformspecific/macos/libs/nv_math/nv_quat.h63
-rw-r--r--src/platformspecific/macos/libs/nv_types.h81
-rw-r--r--src/platformspecific/windows/assets/courier+lucida_256.abcbin0 -> 2048 bytes
-rw-r--r--src/platformspecific/windows/assets/courier+lucida_256.ddsbin0 -> 87509 bytes
-rw-r--r--src/platformspecific/windows/assets/courier+lucida_512.abcbin0 -> 2048 bytes
-rw-r--r--src/platformspecific/windows/assets/courier+lucida_512.ddsbin0 -> 349653 bytes
-rw-r--r--src/platformspecific/windows/assets/font.frag39
-rw-r--r--src/platformspecific/windows/assets/font.vert49
-rw-r--r--src/platformspecific/windows/libs/nv_color.h107
-rw-r--r--src/platformspecific/windows/libs/nv_config/nv_config.h278
-rw-r--r--src/platformspecific/windows/libs/nv_debug.h86
-rw-r--r--src/platformspecific/windows/libs/nv_global.h36
-rw-r--r--src/platformspecific/windows/libs/nv_math/NvVec.h316
-rw-r--r--src/platformspecific/windows/libs/nv_math/misc.h130
-rw-r--r--src/platformspecific/windows/libs/nv_math/nv_math.cpp64
-rw-r--r--src/platformspecific/windows/libs/nv_math/nv_math.h45
-rw-r--r--src/platformspecific/windows/libs/nv_math/nv_matrix.cpp1030
-rw-r--r--src/platformspecific/windows/libs/nv_math/nv_matrix.h117
-rw-r--r--src/platformspecific/windows/libs/nv_math/nv_quat.cpp199
-rw-r--r--src/platformspecific/windows/libs/nv_math/nv_quat.h63
-rw-r--r--src/platformspecific/windows/libs/nv_types.h81
-rw-r--r--src/platformspecific/windows/viewer/Resource.h43
-rw-r--r--src/qmlstreamer/q3dsincubationcontroller.h55
-rw-r--r--src/qmlstreamer/q3dsqmlstream.cpp106
-rw-r--r--src/qmlstreamer/q3dsqmlstream.h68
-rw-r--r--src/qmlstreamer/q3dsqmlstreamer_global.h41
-rw-r--r--src/qmlstreamer/q3dsqmlstreamerserviceimpl.cpp67
-rw-r--r--src/qmlstreamer/q3dsqmlstreamerserviceimpl.h52
-rw-r--r--src/qmlstreamer/q3dsqmlstreamproducer.cpp53
-rw-r--r--src/qmlstreamer/q3dsqmlstreamproducer.h61
-rw-r--r--src/qmlstreamer/q3dsqmlstreamproxy.cpp253
-rw-r--r--src/qmlstreamer/q3dsqmlstreamproxy.h79
-rw-r--r--src/qmlstreamer/q3dsqmlstreamrenderer.cpp483
-rw-r--r--src/qmlstreamer/q3dsqmlstreamrenderer.h124
-rw-r--r--src/qmlstreamer/q3dsqmlstreamservice.h80
-rw-r--r--src/qmlstreamer/q3dsqmlsubpresentationsettings.cpp78
-rw-r--r--src/qmlstreamer/q3dsqmlsubpresentationsettings.h55
-rw-r--r--src/qmlstreamer/qmlstreamer.pro50
-rw-r--r--src/render/Examples/Qt3DSRenderClearColorExample.cpp63
-rw-r--r--src/render/Examples/Qt3DSRenderExample.cpp491
-rw-r--r--src/render/Examples/Qt3DSRenderExample.h123
-rw-r--r--src/render/Examples/Qt3DSRenderExampleTools.cpp188
-rw-r--r--src/render/Examples/Qt3DSRenderExampleTools.h89
-rw-r--r--src/render/Examples/Qt3DSRenderRenderToTextureExample.cpp178
-rw-r--r--src/render/Examples/Qt3DSRenderSpinningCubeExample.cpp104
-rw-r--r--src/render/Qt3DSRenderAtomicCounterBuffer.cpp156
-rw-r--r--src/render/Qt3DSRenderAtomicCounterBuffer.h182
-rw-r--r--src/render/Qt3DSRenderAttribLayout.cpp57
-rw-r--r--src/render/Qt3DSRenderAttribLayout.h90
-rw-r--r--src/render/Qt3DSRenderBaseTypes.cpp1049
-rw-r--r--src/render/Qt3DSRenderBaseTypes.h2103
-rw-r--r--src/render/Qt3DSRenderComputeShader.cpp55
-rw-r--r--src/render/Qt3DSRenderComputeShader.h89
-rw-r--r--src/render/Qt3DSRenderConstantBuffer.cpp421
-rw-r--r--src/render/Qt3DSRenderConstantBuffer.h248
-rw-r--r--src/render/Qt3DSRenderContext.cpp1107
-rw-r--r--src/render/Qt3DSRenderContext.h1075
-rw-r--r--src/render/Qt3DSRenderDataBuffer.cpp158
-rw-r--r--src/render/Qt3DSRenderDataBuffer.h188
-rw-r--r--src/render/Qt3DSRenderDepthStencilState.cpp91
-rw-r--r--src/render/Qt3DSRenderDepthStencilState.h134
-rw-r--r--src/render/Qt3DSRenderDrawIndirectBuffer.cpp104
-rw-r--r--src/render/Qt3DSRenderDrawIndirectBuffer.h152
-rw-r--r--src/render/Qt3DSRenderDrawable.h54
-rw-r--r--src/render/Qt3DSRenderFragmentShader.cpp55
-rw-r--r--src/render/Qt3DSRenderFragmentShader.h89
-rw-r--r--src/render/Qt3DSRenderFrameBuffer.cpp300
-rw-r--r--src/render/Qt3DSRenderFrameBuffer.h277
-rw-r--r--src/render/Qt3DSRenderGeometryShader.cpp55
-rw-r--r--src/render/Qt3DSRenderGeometryShader.h89
-rw-r--r--src/render/Qt3DSRenderImageTexture.cpp103
-rw-r--r--src/render/Qt3DSRenderImageTexture.h143
-rw-r--r--src/render/Qt3DSRenderIndexBuffer.cpp100
-rw-r--r--src/render/Qt3DSRenderIndexBuffer.h138
-rw-r--r--src/render/Qt3DSRenderInputAssembler.cpp105
-rw-r--r--src/render/Qt3DSRenderInputAssembler.h157
-rw-r--r--src/render/Qt3DSRenderOcclusionQuery.cpp82
-rw-r--r--src/render/Qt3DSRenderOcclusionQuery.h120
-rw-r--r--src/render/Qt3DSRenderPathFontSpecification.cpp145
-rw-r--r--src/render/Qt3DSRenderPathFontSpecification.h165
-rw-r--r--src/render/Qt3DSRenderPathFontText.cpp191
-rw-r--r--src/render/Qt3DSRenderPathFontText.h139
-rw-r--r--src/render/Qt3DSRenderPathRender.cpp108
-rw-r--r--src/render/Qt3DSRenderPathRender.h114
-rw-r--r--src/render/Qt3DSRenderPathSpecification.cpp103
-rw-r--r--src/render/Qt3DSRenderPathSpecification.h141
-rw-r--r--src/render/Qt3DSRenderProgramPipeline.cpp134
-rw-r--r--src/render/Qt3DSRenderProgramPipeline.h138
-rw-r--r--src/render/Qt3DSRenderQueryBase.cpp54
-rw-r--r--src/render/Qt3DSRenderQueryBase.h127
-rw-r--r--src/render/Qt3DSRenderRasterizerState.cpp71
-rw-r--r--src/render/Qt3DSRenderRasterizerState.h94
-rw-r--r--src/render/Qt3DSRenderRenderBuffer.cpp114
-rw-r--r--src/render/Qt3DSRenderRenderBuffer.h158
-rw-r--r--src/render/Qt3DSRenderSampler.cpp84
-rw-r--r--src/render/Qt3DSRenderSampler.h124
-rw-r--r--src/render/Qt3DSRenderShader.h123
-rw-r--r--src/render/Qt3DSRenderShaderConstant.h448
-rw-r--r--src/render/Qt3DSRenderShaderProgram.cpp1248
-rw-r--r--src/render/Qt3DSRenderShaderProgram.h540
-rw-r--r--src/render/Qt3DSRenderStorageBuffer.cpp123
-rw-r--r--src/render/Qt3DSRenderStorageBuffer.h158
-rw-r--r--src/render/Qt3DSRenderSync.cpp87
-rw-r--r--src/render/Qt3DSRenderSync.h132
-rw-r--r--src/render/Qt3DSRenderTessellationShader.cpp74
-rw-r--r--src/render/Qt3DSRenderTessellationShader.h132
-rw-r--r--src/render/Qt3DSRenderTexture2D.cpp263
-rw-r--r--src/render/Qt3DSRenderTexture2D.h165
-rw-r--r--src/render/Qt3DSRenderTexture2DArray.cpp123
-rw-r--r--src/render/Qt3DSRenderTexture2DArray.h106
-rw-r--r--src/render/Qt3DSRenderTextureBase.cpp174
-rw-r--r--src/render/Qt3DSRenderTextureBase.h177
-rw-r--r--src/render/Qt3DSRenderTextureCube.cpp119
-rw-r--r--src/render/Qt3DSRenderTextureCube.h106
-rw-r--r--src/render/Qt3DSRenderTimerQuery.cpp75
-rw-r--r--src/render/Qt3DSRenderTimerQuery.h129
-rw-r--r--src/render/Qt3DSRenderVertexBuffer.cpp74
-rw-r--r--src/render/Qt3DSRenderVertexBuffer.h124
-rw-r--r--src/render/Qt3DSRenderVertexShader.cpp54
-rw-r--r--src/render/Qt3DSRenderVertexShader.h89
-rw-r--r--src/render/backends/Qt3DSRenderBackend.h2245
-rw-r--r--src/render/backends/gl/Q3DSRenderBackendGLES2.cpp902
-rw-r--r--src/render/backends/gl/Q3DSRenderBackendGLES2.h195
-rw-r--r--src/render/backends/gl/Qt3DSOpenGLExtensions.cpp170
-rw-r--r--src/render/backends/gl/Qt3DSOpenGLExtensions.h392
-rw-r--r--src/render/backends/gl/Qt3DSOpenGLPrefix.h48
-rw-r--r--src/render/backends/gl/Qt3DSOpenGLTokens.h408
-rw-r--r--src/render/backends/gl/Qt3DSOpenGLUtil.h2201
-rw-r--r--src/render/backends/gl/Qt3DSRenderBackendGL3.cpp796
-rw-r--r--src/render/backends/gl/Qt3DSRenderBackendGL3.h173
-rw-r--r--src/render/backends/gl/Qt3DSRenderBackendGL4.cpp875
-rw-r--r--src/render/backends/gl/Qt3DSRenderBackendGL4.h205
-rw-r--r--src/render/backends/gl/Qt3DSRenderBackendGLBase.cpp2230
-rw-r--r--src/render/backends/gl/Qt3DSRenderBackendGLBase.h531
-rw-r--r--src/render/backends/gl/Qt3DSRenderBackendInputAssemblerGL.h146
-rw-r--r--src/render/backends/gl/Qt3DSRenderBackendRenderStatesGL.h173
-rw-r--r--src/render/backends/gl/Qt3DSRenderBackendShaderProgramGL.h105
-rw-r--r--src/render/backends/gl/Qt3DSRenderContextGL.cpp91
-rw-r--r--src/render/backends/software/Qt3DSRenderBackendNULL.cpp588
-rw-r--r--src/render/backends/software/Qt3DSRenderBackendNULL.h46
-rw-r--r--src/render/glg/Qt3DSGLImplObjects.h83
-rw-r--r--src/runtime/Qt3DSActivationManager.cpp1027
-rw-r--r--src/runtime/Qt3DSActivationManager.h157
-rw-r--r--src/runtime/Qt3DSAnimationSystem.cpp432
-rw-r--r--src/runtime/Qt3DSAnimationSystem.h68
-rw-r--r--src/runtime/Qt3DSApplication.cpp2180
-rw-r--r--src/runtime/Qt3DSApplication.h261
-rw-r--r--src/runtime/Qt3DSApplicationValues.h369
-rw-r--r--src/runtime/Qt3DSAttributeHashes.cpp296
-rw-r--r--src/runtime/Qt3DSAttributeHashes.h286
-rw-r--r--src/runtime/Qt3DSAttributeHashes.txt249
-rw-r--r--src/runtime/Qt3DSCommandEventTypes.h83
-rw-r--r--src/runtime/Qt3DSCommandHelper.cpp129
-rw-r--r--src/runtime/Qt3DSCommandHelper.h55
-rw-r--r--src/runtime/Qt3DSComponentManager.cpp487
-rw-r--r--src/runtime/Qt3DSComponentManager.h143
-rw-r--r--src/runtime/Qt3DSElementHelper.cpp141
-rw-r--r--src/runtime/Qt3DSElementHelper.h57
-rw-r--r--src/runtime/Qt3DSElementSystem.cpp855
-rw-r--r--src/runtime/Qt3DSElementSystem.h616
-rw-r--r--src/runtime/Qt3DSEvent.h62
-rw-r--r--src/runtime/Qt3DSEventCallbacks.cpp258
-rw-r--r--src/runtime/Qt3DSEventCallbacks.h135
-rw-r--r--src/runtime/Qt3DSFrameworkTypes.h52
-rw-r--r--src/runtime/Qt3DSIComponentManager.h147
-rw-r--r--src/runtime/Qt3DSIInputSystem.h62
-rw-r--r--src/runtime/Qt3DSIScene.h160
-rw-r--r--src/runtime/Qt3DSIScriptBridge.h206
-rw-r--r--src/runtime/Qt3DSIStateful.h69
-rw-r--r--src/runtime/Qt3DSIText.h52
-rw-r--r--src/runtime/Qt3DSInputDefs.h413
-rw-r--r--src/runtime/Qt3DSInputEngine.cpp849
-rw-r--r--src/runtime/Qt3DSInputEngine.h125
-rw-r--r--src/runtime/Qt3DSInputEventTypes.h96
-rw-r--r--src/runtime/Qt3DSInputFrame.h118
-rw-r--r--src/runtime/Qt3DSKernelTypes.h225
-rw-r--r--src/runtime/Qt3DSLogicSystem.cpp293
-rw-r--r--src/runtime/Qt3DSLogicSystem.h60
-rw-r--r--src/runtime/Qt3DSOutputMemoryStream.cpp150
-rw-r--r--src/runtime/Qt3DSOutputMemoryStream.h123
-rw-r--r--src/runtime/Qt3DSParametersSystem.cpp171
-rw-r--r--src/runtime/Qt3DSParametersSystem.h66
-rw-r--r--src/runtime/Qt3DSPickFrame.h70
-rw-r--r--src/runtime/Qt3DSPresentation.cpp841
-rw-r--r--src/runtime/Qt3DSPresentation.h231
-rw-r--r--src/runtime/Qt3DSPresentationFrameData.cpp105
-rw-r--r--src/runtime/Qt3DSPresentationFrameData.h87
-rw-r--r--src/runtime/Qt3DSQmlElementHelper.cpp323
-rw-r--r--src/runtime/Qt3DSQmlElementHelper.h57
-rw-r--r--src/runtime/Qt3DSQmlEngine.cpp2690
-rw-r--r--src/runtime/Qt3DSQmlEngine.h226
-rw-r--r--src/runtime/Qt3DSRuntimeFactory.h108
-rw-r--r--src/runtime/Qt3DSSceneManager.h167
-rw-r--r--src/runtime/Qt3DSSlideSystem.cpp675
-rw-r--r--src/runtime/Qt3DSSlideSystem.h161
-rw-r--r--src/runtime/Qt3DSTimePolicy.cpp407
-rw-r--r--src/runtime/Qt3DSTimePolicy.h124
-rw-r--r--src/runtime/RuntimePrefix.h104
-rw-r--r--src/runtime/q3dsmaterialdefinitionparser.cpp138
-rw-r--r--src/runtime/q3dsmaterialdefinitionparser.h49
-rw-r--r--src/runtime/q3dsqmlbehavior.cpp123
-rw-r--r--src/runtime/q3dsqmlbehavior.h83
-rw-r--r--src/runtime/q3dsqmlscript.cpp742
-rw-r--r--src/runtime/q3dsqmlscript.h109
-rw-r--r--src/runtime/q3dsvariantconfig.cpp122
-rw-r--r--src/runtime/q3dsvariantconfig_p.h79
-rw-r--r--src/runtimerender/Qt3DSDistanceFieldGlyphCache.cpp518
-rw-r--r--src/runtimerender/Qt3DSDistanceFieldGlyphCacheManager.cpp75
-rw-r--r--src/runtimerender/Qt3DSDistanceFieldGlyphCacheManager_p.h75
-rw-r--r--src/runtimerender/Qt3DSDistanceFieldGlyphCache_p.h101
-rw-r--r--src/runtimerender/Qt3DSDistanceFieldRenderer.cpp1067
-rw-r--r--src/runtimerender/Qt3DSDistanceFieldRenderer.h171
-rw-r--r--src/runtimerender/Qt3DSFontDatabase.cpp106
-rw-r--r--src/runtimerender/Qt3DSFontDatabase_p.h82
-rw-r--r--src/runtimerender/Qt3DSOffscreenRenderKey.h153
-rw-r--r--src/runtimerender/Qt3DSOffscreenRenderManager.cpp498
-rw-r--r--src/runtimerender/Qt3DSOffscreenRenderManager.h256
-rw-r--r--src/runtimerender/Qt3DSOldNBustedRenderPlugin.cpp118
-rw-r--r--src/runtimerender/Qt3DSOldNBustedRenderPlugin.h102
-rw-r--r--src/runtimerender/Qt3DSOnscreenTextRenderer.cpp421
-rw-r--r--src/runtimerender/Qt3DSQtTextRenderer.cpp655
-rw-r--r--src/runtimerender/Qt3DSRender.h257
-rw-r--r--src/runtimerender/Qt3DSRenderClippingFrustum.cpp85
-rw-r--r--src/runtimerender/Qt3DSRenderClippingFrustum.h161
-rw-r--r--src/runtimerender/Qt3DSRenderContextCore.cpp858
-rw-r--r--src/runtimerender/Qt3DSRenderContextCore.h223
-rw-r--r--src/runtimerender/Qt3DSRenderCustomMaterialRenderContext.h94
-rw-r--r--src/runtimerender/Qt3DSRenderCustomMaterialShaderGenerator.cpp1265
-rw-r--r--src/runtimerender/Qt3DSRenderCustomMaterialShaderGenerator.h69
-rw-r--r--src/runtimerender/Qt3DSRenderCustomMaterialSystem.cpp2131
-rw-r--r--src/runtimerender/Qt3DSRenderCustomMaterialSystem.h174
-rw-r--r--src/runtimerender/Qt3DSRenderDefaultMaterialShaderGenerator.cpp1931
-rw-r--r--src/runtimerender/Qt3DSRenderDefaultMaterialShaderGenerator.h123
-rw-r--r--src/runtimerender/Qt3DSRenderDynamicObjectSystem.cpp1532
-rw-r--r--src/runtimerender/Qt3DSRenderDynamicObjectSystem.h286
-rw-r--r--src/runtimerender/Qt3DSRenderDynamicObjectSystemCommands.h622
-rw-r--r--src/runtimerender/Qt3DSRenderDynamicObjectSystemUtil.h126
-rw-r--r--src/runtimerender/Qt3DSRenderEffectSystem.cpp1872
-rw-r--r--src/runtimerender/Qt3DSRenderEffectSystem.h209
-rw-r--r--src/runtimerender/Qt3DSRenderEulerAngles.cpp383
-rw-r--r--src/runtimerender/Qt3DSRenderEulerAngles.h142
-rw-r--r--src/runtimerender/Qt3DSRenderGpuProfiler.cpp284
-rw-r--r--src/runtimerender/Qt3DSRenderGraphObjectPickQuery.h124
-rw-r--r--src/runtimerender/Qt3DSRenderGraphObjectSerializer.cpp670
-rw-r--r--src/runtimerender/Qt3DSRenderGraphObjectSerializer.h69
-rw-r--r--src/runtimerender/Qt3DSRenderGraphObjectTypes.h166
-rw-r--r--src/runtimerender/Qt3DSRenderImageScaler.cpp883
-rw-r--r--src/runtimerender/Qt3DSRenderImageScaler.h121
-rw-r--r--src/runtimerender/Qt3DSRenderImageTextureData.h138
-rw-r--r--src/runtimerender/Qt3DSRenderInputStreamFactory.cpp214
-rw-r--r--src/runtimerender/Qt3DSRenderInputStreamFactory.h69
-rw-r--r--src/runtimerender/Qt3DSRenderLightConstantProperties.h198
-rw-r--r--src/runtimerender/Qt3DSRenderMaterialHelpers.h94
-rw-r--r--src/runtimerender/Qt3DSRenderMaterialShaderGenerator.h152
-rw-r--r--src/runtimerender/Qt3DSRenderMesh.h187
-rw-r--r--src/runtimerender/Qt3DSRenderPathManager.cpp1964
-rw-r--r--src/runtimerender/Qt3DSRenderPathManager.h121
-rw-r--r--src/runtimerender/Qt3DSRenderPathMath.h713
-rw-r--r--src/runtimerender/Qt3DSRenderPathRenderContext.h94
-rw-r--r--src/runtimerender/Qt3DSRenderPixelGraphicsRenderer.cpp311
-rw-r--r--src/runtimerender/Qt3DSRenderPixelGraphicsRenderer.h54
-rw-r--r--src/runtimerender/Qt3DSRenderPixelGraphicsTypes.cpp66
-rw-r--r--src/runtimerender/Qt3DSRenderPixelGraphicsTypes.h103
-rw-r--r--src/runtimerender/Qt3DSRenderPlugin.cpp936
-rw-r--r--src/runtimerender/Qt3DSRenderPlugin.h148
-rw-r--r--src/runtimerender/Qt3DSRenderPluginCInterface.h330
-rw-r--r--src/runtimerender/Qt3DSRenderPluginGraphObject.h60
-rw-r--r--src/runtimerender/Qt3DSRenderPluginPropertyValue.h182
-rw-r--r--src/runtimerender/Qt3DSRenderProfiler.h112
-rw-r--r--src/runtimerender/Qt3DSRenderRay.cpp164
-rw-r--r--src/runtimerender/Qt3DSRenderRay.h101
-rw-r--r--src/runtimerender/Qt3DSRenderRenderList.cpp124
-rw-r--r--src/runtimerender/Qt3DSRenderRenderList.h125
-rw-r--r--src/runtimerender/Qt3DSRenderRotationHelper.h193
-rw-r--r--src/runtimerender/Qt3DSRenderShaderCache.cpp770
-rw-r--r--src/runtimerender/Qt3DSRenderShaderCache.h160
-rw-r--r--src/runtimerender/Qt3DSRenderShaderCodeGenerator.cpp526
-rw-r--r--src/runtimerender/Qt3DSRenderShaderCodeGenerator.h175
-rw-r--r--src/runtimerender/Qt3DSRenderShaderCodeGeneratorV2.cpp671
-rw-r--r--src/runtimerender/Qt3DSRenderShaderCodeGeneratorV2.h140
-rw-r--r--src/runtimerender/Qt3DSRenderShaderKeys.h802
-rw-r--r--src/runtimerender/Qt3DSRenderShadowMap.cpp219
-rw-r--r--src/runtimerender/Qt3DSRenderShadowMap.h183
-rw-r--r--src/runtimerender/Qt3DSRenderSubPresentationHelper.h69
-rw-r--r--src/runtimerender/Qt3DSRenderSubpresentation.cpp127
-rw-r--r--src/runtimerender/Qt3DSRenderSubpresentation.h110
-rw-r--r--src/runtimerender/Qt3DSRenderTaggedPointer.h85
-rw-r--r--src/runtimerender/Qt3DSRenderTessModeValues.h74
-rw-r--r--src/runtimerender/Qt3DSRenderTextTextureAtlas.cpp126
-rw-r--r--src/runtimerender/Qt3DSRenderTextTextureAtlas.h63
-rw-r--r--src/runtimerender/Qt3DSRenderTextTextureCache.cpp289
-rw-r--r--src/runtimerender/Qt3DSRenderTextTextureCache.h74
-rw-r--r--src/runtimerender/Qt3DSRenderTextTypes.h193
-rw-r--r--src/runtimerender/Qt3DSRenderTextureAtlas.cpp364
-rw-r--r--src/runtimerender/Qt3DSRenderTextureAtlas.h102
-rw-r--r--src/runtimerender/Qt3DSRenderThreadPool.cpp277
-rw-r--r--src/runtimerender/Qt3DSRenderThreadPool.h127
-rw-r--r--src/runtimerender/Qt3DSRenderUIPLoader.cpp2089
-rw-r--r--src/runtimerender/Qt3DSRenderUIPLoader.h133
-rw-r--r--src/runtimerender/Qt3DSRenderUIPSharedTranslation.cpp464
-rw-r--r--src/runtimerender/Qt3DSRenderUIPSharedTranslation.h485
-rw-r--r--src/runtimerender/Qt3DSRenderWidgets.cpp319
-rw-r--r--src/runtimerender/Qt3DSRenderWidgets.h181
-rw-r--r--src/runtimerender/Qt3DSRenderableImage.h77
-rw-r--r--src/runtimerender/Qt3DSRenderer.h249
-rw-r--r--src/runtimerender/Qt3DSRendererUtil.cpp119
-rw-r--r--src/runtimerender/Qt3DSRendererUtil.h62
-rw-r--r--src/runtimerender/Qt3DSTextRenderer.cpp87
-rw-r--r--src/runtimerender/Qt3DSTextRenderer.h150
-rw-r--r--src/runtimerender/android/DynamicLibLoader.h30
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderCamera.cpp496
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderCamera.h177
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderCustomMaterial.h147
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderDefaultMaterial.cpp74
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderDefaultMaterial.h148
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderDynamicObject.cpp160
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderDynamicObject.h113
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderEffect.cpp61
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderEffect.h86
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderGraphObject.h77
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderImage.cpp152
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderImage.h114
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderLayer.cpp105
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderLayer.h203
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderLight.cpp55
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderLight.h90
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderLightmaps.cpp41
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderLightmaps.h77
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderMaterialDirty.h61
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderModel.cpp75
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderModel.h76
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderNode.cpp499
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderNode.h307
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderPath.cpp59
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderPath.h156
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderPathSubPath.h65
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderPresentation.cpp43
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderPresentation.h94
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderReferencedMaterial.h63
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderScene.cpp122
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderScene.h84
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderText.cpp68
-rw-r--r--src/runtimerender/graphobjects/Qt3DSRenderText.h76
-rw-r--r--src/runtimerender/linux/DynamicLibLoader.h92
-rw-r--r--src/runtimerender/macos/DynamicLibLoader.h30
-rw-r--r--src/runtimerender/q3dsqmlrender.cpp144
-rw-r--r--src/runtimerender/q3dsqmlrender.h101
-rw-r--r--src/runtimerender/qnx/DynamicLibLoader.h30
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRenderableObjects.cpp543
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRenderableObjects.h472
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRendererImpl.cpp2051
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRendererImpl.h549
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp2220
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.h182
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderHelper.cpp261
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderHelper.h115
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp1477
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.h367
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRendererImplShaders.cpp3007
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRendererImplShaders.h452
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSVertexPipelineImpl.h463
-rw-r--r--src/runtimerender/resourcemanager/Qt3DSRenderBufferLoader.cpp326
-rw-r--r--src/runtimerender/resourcemanager/Qt3DSRenderBufferLoader.h85
-rw-r--r--src/runtimerender/resourcemanager/Qt3DSRenderBufferManager.cpp1092
-rw-r--r--src/runtimerender/resourcemanager/Qt3DSRenderBufferManager.h119
-rw-r--r--src/runtimerender/resourcemanager/Qt3DSRenderImageBatchLoader.cpp538
-rw-r--r--src/runtimerender/resourcemanager/Qt3DSRenderImageBatchLoader.h96
-rw-r--r--src/runtimerender/resourcemanager/Qt3DSRenderLoadedTexture.cpp715
-rw-r--r--src/runtimerender/resourcemanager/Qt3DSRenderLoadedTexture.h184
-rw-r--r--src/runtimerender/resourcemanager/Qt3DSRenderLoadedTextureBMP.cpp1262
-rw-r--r--src/runtimerender/resourcemanager/Qt3DSRenderLoadedTextureDDS.cpp695
-rw-r--r--src/runtimerender/resourcemanager/Qt3DSRenderLoadedTextureDDS.h88
-rw-r--r--src/runtimerender/resourcemanager/Qt3DSRenderLoadedTextureFreeImageCompat.h413
-rw-r--r--src/runtimerender/resourcemanager/Qt3DSRenderLoadedTextureGIF.cpp851
-rw-r--r--src/runtimerender/resourcemanager/Qt3DSRenderLoadedTextureHDR.cpp255
-rw-r--r--src/runtimerender/resourcemanager/Qt3DSRenderLoadedTextureKTX.cpp277
-rw-r--r--src/runtimerender/resourcemanager/Qt3DSRenderLoadedTextureKTX.h39
-rw-r--r--src/runtimerender/resourcemanager/Qt3DSRenderPrefilterTexture.cpp599
-rw-r--r--src/runtimerender/resourcemanager/Qt3DSRenderPrefilterTexture.h129
-rw-r--r--src/runtimerender/resourcemanager/Qt3DSRenderResourceBufferObjects.cpp101
-rw-r--r--src/runtimerender/resourcemanager/Qt3DSRenderResourceBufferObjects.h96
-rw-r--r--src/runtimerender/resourcemanager/Qt3DSRenderResourceManager.cpp436
-rw-r--r--src/runtimerender/resourcemanager/Qt3DSRenderResourceManager.h81
-rw-r--r--src/runtimerender/resourcemanager/Qt3DSRenderResourceTexture2D.cpp174
-rw-r--r--src/runtimerender/resourcemanager/Qt3DSRenderResourceTexture2D.h126
-rw-r--r--src/runtimerender/windows/DynamicLibLoader.h80
-rw-r--r--src/src.pro10
-rw-r--r--src/state/Qt3DSState.h94
-rw-r--r--src/state/Qt3DSStateScriptContext.h123
-rw-r--r--src/state/Qt3DSStateTypes.h97
-rw-r--r--src/state/Qt3DSStateVisualBindingContextCommands.h348
-rw-r--r--src/system/Qt3DSArray.h135
-rw-r--r--src/system/Qt3DSArray.inl287
-rw-r--r--src/system/Qt3DSAssert.cpp93
-rw-r--r--src/system/Qt3DSAssert.h78
-rw-r--r--src/system/Qt3DSAudioPlayer.h42
-rw-r--r--src/system/Qt3DSBasicPluginDLL.h67
-rw-r--r--src/system/Qt3DSBezierEval.h182
-rw-r--r--src/system/Qt3DSBoundingBox.cpp150
-rw-r--r--src/system/Qt3DSBoundingBox.h85
-rw-r--r--src/system/Qt3DSCircularArray.h102
-rw-r--r--src/system/Qt3DSCircularArray.inl225
-rw-r--r--src/system/Qt3DSColor.cpp95
-rw-r--r--src/system/Qt3DSColor.h85
-rw-r--r--src/system/Qt3DSConfig.h49
-rw-r--r--src/system/Qt3DSCubicRoots.cpp38
-rw-r--r--src/system/Qt3DSCubicRoots.h78
-rw-r--r--src/system/Qt3DSCubicRootsImpl.h177
-rw-r--r--src/system/Qt3DSDLLManager.cpp220
-rw-r--r--src/system/Qt3DSDLLManager.h96
-rw-r--r--src/system/Qt3DSDataLogger.cpp151
-rw-r--r--src/system/Qt3DSDataLogger.h226
-rw-r--r--src/system/Qt3DSDataLogger.hpp96
-rw-r--r--src/system/Qt3DSDataLoggerEnums.h117
-rw-r--r--src/system/Qt3DSDataLoggerViewer.h71
-rw-r--r--src/system/Qt3DSEGLTimer.h70
-rw-r--r--src/system/Qt3DSEndian.h38
-rw-r--r--src/system/Qt3DSEulerAngles.cpp390
-rw-r--r--src/system/Qt3DSEulerAngles.h141
-rw-r--r--src/system/Qt3DSFNDTimer.h44
-rw-r--r--src/system/Qt3DSFile.cpp77
-rw-r--r--src/system/Qt3DSFile.h94
-rw-r--r--src/system/Qt3DSFileStream.cpp237
-rw-r--r--src/system/Qt3DSFileStream.h93
-rw-r--r--src/system/Qt3DSFixedArray.h87
-rw-r--r--src/system/Qt3DSFixedArray.inl150
-rw-r--r--src/system/Qt3DSFunctionWrappers.cpp65
-rw-r--r--src/system/Qt3DSFunctionWrappers.h416
-rw-r--r--src/system/Qt3DSHash.h105
-rw-r--r--src/system/Qt3DSIFileStream.h56
-rw-r--r--src/system/Qt3DSIStream.h162
-rw-r--r--src/system/Qt3DSITimer.h61
-rw-r--r--src/system/Qt3DSMacros.h189
-rw-r--r--src/system/Qt3DSMatrix.cpp897
-rw-r--r--src/system/Qt3DSMatrix.h146
-rw-r--r--src/system/Qt3DSMemory.cpp137
-rw-r--r--src/system/Qt3DSMemory.h183
-rw-r--r--src/system/Qt3DSMemoryFilter.cpp126
-rw-r--r--src/system/Qt3DSMemoryFilter.h69
-rw-r--r--src/system/Qt3DSMemoryHeap.cpp236
-rw-r--r--src/system/Qt3DSMemoryHeap.h133
-rw-r--r--src/system/Qt3DSMemoryManager.cpp453
-rw-r--r--src/system/Qt3DSMemoryManager.h133
-rw-r--r--src/system/Qt3DSMemoryPool.cpp298
-rw-r--r--src/system/Qt3DSMemoryPool.h104
-rw-r--r--src/system/Qt3DSMemoryProbe.cpp149
-rw-r--r--src/system/Qt3DSMemoryProbe.h144
-rw-r--r--src/system/Qt3DSMemorySettings.h131
-rw-r--r--src/system/Qt3DSMemoryStatistics.cpp647
-rw-r--r--src/system/Qt3DSMemoryStatistics.h137
-rw-r--r--src/system/Qt3DSMemoryTracker.cpp164
-rw-r--r--src/system/Qt3DSMemoryTracker.h104
-rw-r--r--src/system/Qt3DSPlatformSpecific.h207
-rw-r--r--src/system/Qt3DSTimer.cpp116
-rw-r--r--src/system/Qt3DSTimer.h142
-rw-r--r--src/system/Qt3DSTypes.cpp54
-rw-r--r--src/system/Qt3DSTypes.h121
-rw-r--r--src/system/Qt3DSVector3.cpp466
-rw-r--r--src/system/Qt3DSVector3.h117
-rw-r--r--src/system/SystemPrefix.h92
-rw-r--r--src/uipparser/Qt3DSIPresentation.h158
-rw-r--r--src/uipparser/Qt3DSUIPParser.h155
-rw-r--r--src/uipparser/Qt3DSUIPParserActionHelper.cpp738
-rw-r--r--src/uipparser/Qt3DSUIPParserActionHelper.h172
-rw-r--r--src/uipparser/Qt3DSUIPParserImpl.cpp2623
-rw-r--r--src/uipparser/Qt3DSUIPParserImpl.h679
-rw-r--r--src/uipparser/Qt3DSUIPParserObjectRefHelper.cpp1011
-rw-r--r--src/uipparser/Qt3DSUIPParserObjectRefHelper.h159
-rw-r--r--src/viewer/Qt3DSAudioPlayerImpl.cpp60
-rw-r--r--src/viewer/Qt3DSAudioPlayerImpl.h48
-rw-r--r--src/viewer/Qt3DSViewerApp.cpp1001
-rw-r--r--src/viewer/Qt3DSViewerApp.h525
-rw-r--r--src/viewer/Qt3DSViewerTimer.h120
-rw-r--r--src/viewer/qt3dsruntimeglobal.h45
-rw-r--r--src_dummy/main.cpp58
-rw-r--r--src_dummy/src_dummy.pro5
-rw-r--r--sync.profile10
-rw-r--r--testres.qrc14
-rw-r--r--tests/tests.pro1
-rw-r--r--tools/attributehashes/AttributeHashes.cpp344
-rw-r--r--tools/attributehashes/attributehashes.pro16
-rw-r--r--tools/tools.pro10
-rw-r--r--tools/viewer/Viewer.qrc14
-rw-r--r--tools/viewer/android/AndroidManifest.xml77
-rw-r--r--tools/viewer/main.cpp384
-rw-r--r--tools/viewer/qml/StyledButton.qml52
-rw-r--r--tools/viewer/qml/StyledMenu.qml95
-rw-r--r--tools/viewer/qml/StyledMenuButton.qml71
-rw-r--r--tools/viewer/qml/StyledMenuItem.qml159
-rw-r--r--tools/viewer/qml/StyledMenuSeparator.qml47
-rw-r--r--tools/viewer/qml/main.qml594
-rw-r--r--tools/viewer/remotedeploymentreceiver.cpp202
-rw-r--r--tools/viewer/remotedeploymentreceiver.h79
-rw-r--r--tools/viewer/resources/images/3D-studio-viewer.icobin0 -> 112324 bytes
-rw-r--r--tools/viewer/resources/images/3D-studio-viewer.svg38
-rw-r--r--tools/viewer/resources/images/arrow.pngbin0 -> 523 bytes
-rw-r--r--tools/viewer/resources/images/arrow@2x.pngbin0 -> 600 bytes
-rw-r--r--tools/viewer/resources/images/check.pngbin0 -> 502 bytes
-rw-r--r--tools/viewer/resources/images/check@2x.pngbin0 -> 638 bytes
-rw-r--r--tools/viewer/resources/images/viewer.icnsbin0 -> 161003 bytes
-rw-r--r--tools/viewer/viewer.cpp416
-rw-r--r--tools/viewer/viewer.h128
-rw-r--r--tools/viewer/viewer.pro49
-rw-r--r--utils.pri8
1465 files changed, 317085 insertions, 0 deletions
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..5282d18
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "src/3rdparty/EASTL"]
+ path = src/3rdparty/EASTL
+ url = ../qt3dstudio-eastl.git
diff --git a/.qmake.conf b/.qmake.conf
new file mode 100644
index 0000000..37bf76e
--- /dev/null
+++ b/.qmake.conf
@@ -0,0 +1,5 @@
+load(qt_build_config)
+
+MODULE_VERSION = 2.4.0
+
+CMAKE_MODULE_TESTS=-
diff --git a/Studio/Content/Behavior Library/CameraLookAt.qml b/Studio/Content/Behavior Library/CameraLookAt.qml
new file mode 100644
index 0000000..a4d0c9d
--- /dev/null
+++ b/Studio/Content/Behavior Library/CameraLookAt.qml
@@ -0,0 +1,116 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt 3D Studio.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*[[
+ <Property name="cameraTarget" formalName="Camera Target" type="ObjectRef" default="Scene.Layer.Camera" description="Object in scene the camera should look at" />
+ <Property name="startImmediately" formalName="Start Immediately?" type="Boolean" default="True" publishLevel="Advanced" description="Start immediately, or wait for\nthe Enable action to be called?" />
+
+ <Handler name="start" formalName="Start" category="CameraLookAt" description="Begin looking the target" />
+ <Handler name="stop" formalName="Stop" category="CameraLookAt" description="Stop looking the target" />
+]]*/
+
+import QtStudio3D.Behavior 1.0
+
+Behavior {
+ //External:
+ property string cameraTarget
+ property bool startImmediately
+ //Internal:
+ property bool running: false
+ property var updateFunction
+
+ function start() {
+ running = true;
+ }
+
+ function stop() {
+ running = false;
+ }
+
+ onInitialize: {
+ if (startImmediately)
+ start();
+ }
+
+ onUpdate: {
+ if (!running)
+ return;
+ var targetTransform = calculateGlobalTransform(cameraTarget);
+ var targetSpot = targetTransform.row(3).toVector3d();
+ var cameraTransform = calculateGlobalTransform();
+ var cameraSpot = cameraTransform.row(3).toVector3d();
+
+ var matrix = calculateGlobalTransform("parent").inverted();
+ matrix.m41 = 0;
+ matrix.m42 = 0;
+ matrix.m43 = 0;
+
+ var rotateRay = targetSpot
+ .minus(cameraSpot)
+ .times(matrix);
+
+ var rotation = lookAt(rotateRay);
+ setAttributeVector("rotation", rotation);
+ }
+
+ function getAttributeVector(name) {
+ var vec = Qt.vector3d(0, 0, 0);
+ getAttribute(name + ".x", vec.x);
+ getAttribute(name + ".y", vec.y);
+ getAttribute(name + ".z", vec.z);
+ return vec;
+ }
+
+ function setAttributeVector(name, vec) {
+ setAttribute(name + ".x", vec.x);
+ setAttribute(name + ".y", vec.y);
+ setAttribute(name + ".z", vec.z);
+ }
+}
diff --git a/Studio/Content/Effect Library/AdditiveColorGradient.effect b/Studio/Content/Effect Library/AdditiveColorGradient.effect
new file mode 100644
index 0000000..7131963
--- /dev/null
+++ b/Studio/Content/Effect Library/AdditiveColorGradient.effect
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <Property formalName="Top Color" name="top_color" type="Color" default="0.65 0.35 0.15" description="Top color of the gradient."/>
+ <Property formalName="Bottom Color" name="bottom_color" type="Color" default="0.05 0.35 0.75" description="Bottom color of the gradient."/>
+ </MetaData>
+ <Shaders>
+ <Shared></Shared>
+ <VertexShaderShared></VertexShaderShared>
+ <FragmentShaderShared></FragmentShaderShared>
+ <Shader name="main">
+ <VertexShader></VertexShader>
+ <FragmentShader><![CDATA[
+
+void frag()
+{
+ vec4 origColor = texture2D_0(TexCoord);
+ vec2 uv = TexCoord.xy;
+
+ vec4 gradient = vec4(mix(vec4(bottom_color.rgb, 1.0), vec4(top_color.rgb, 1.0), uv.y));
+
+ gl_FragColor = origColor + gradient;
+}
+ ]]></FragmentShader>
+ </Shader>
+ </Shaders>
+ <Passes>
+ <Pass shader="main" input="[source]" output="[dest]"/>
+ </Passes>
+</Effect>
+
+
diff --git a/Studio/Content/Effect Library/BaseEffect.effect b/Studio/Content/Effect Library/BaseEffect.effect
new file mode 100644
index 0000000..f0f5340
--- /dev/null
+++ b/Studio/Content/Effect Library/BaseEffect.effect
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ </MetaData>
+ <Shaders>
+ <Shared></Shared>
+ <VertexShaderShared></VertexShaderShared>
+ <FragmentShaderShared></FragmentShaderShared>
+ <Shader name="main">
+ <VertexShader></VertexShader>
+ <FragmentShader><![CDATA[
+
+void frag()
+{
+ // save original fragments to a variable
+ vec4 original = texture2D_0(TexCoord);
+
+ //output the unmodified original fragments;
+ gl_FragColor = original;
+}
+
+ ]]></FragmentShader>
+ </Shader>
+ </Shaders>
+ <Passes>
+ <Pass shader="main" input="[source]" output="[dest]"/>
+ </Passes>
+</Effect>
+
+
diff --git a/Studio/Content/Effect Library/Bloom.effect b/Studio/Content/Effect Library/Bloom.effect
new file mode 100644
index 0000000..97f9c12
--- /dev/null
+++ b/Studio/Content/Effect Library/Bloom.effect
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <Property name="Threshold" formalName="Threshold of the luminocity pass" description="Objects brighter than this will\nbe part of the filter" min=".1" max=".98" default=".8" />
+ <Property name="PoissonRotation" hidden="True" default="0"/>
+ <Property name="PoissonDistance" hidden="True" default="4"/>
+ <Property name="Downsample2" filter="linear" clamp="clamp" type="Texture" />
+ <Property name="Downsample4" filter="linear" clamp="clamp" type="Texture" />
+ <Property name="Downsample8" filter="linear" clamp="clamp" type="Texture" />
+ <Property name="Downsample16" filter="linear" clamp="clamp" type="Texture" />
+ <Property name="DepthSampler" type="Texture" filter="nearest" clamp="clamp"/>
+ </MetaData>
+ <Shaders>
+ <Shared>
+#include "blur.glsllib"
+varying float range;
+ </Shared>
+ <Shader name="CLEARPASS">
+ <VertexShader>
+// Range of possible values that we care about.
+void vert ()
+{
+
+}
+ </VertexShader>
+ <FragmentShader>
+void frag() // Luminosity pass with exponential color channel decay based on the threshold above.
+{
+ gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);
+}
+ </FragmentShader>
+ </Shader>
+ <Shader name="STENCILPASS">
+ <VertexShader>
+// Range of possible values that we care about.
+void vert ()
+{
+
+}
+ </VertexShader>
+ <FragmentShader>
+void frag() // Luminosity pass with exponential color channel decay based on the threshold above.
+{
+ gl_FragColor = texture2D_0(TexCoord);
+}
+ </FragmentShader>
+ </Shader>
+ <Shader name="LUMINOSITY">
+ <VertexShader>
+// No op
+void vert ()
+{
+
+}
+ </VertexShader>
+ <FragmentShader>
+void frag() // Luminosity pass with exponential color channel decay based on the threshold above.
+{
+ vec4 color = texture2D_0(TexCoord);
+ float luminosity = dot(color.rgb, vec3(0.299, 0.587, 0.114));
+ float decay = min( 1.0, max( 0.0, (luminosity - Threshold) / range ) );
+ decay = decay * decay;
+ gl_FragColor = vec4( color.rgb * decay, color.a );
+}
+ </FragmentShader>
+ </Shader>
+ <Shader name="BLUR">
+ <VertexShader>
+
+vec2 ToRotatedPoissonTexCoord( vec3 poisson, vec2 inputTex, vec2 inc, mat2 rotation )
+{
+ vec2 rotatedPoisson = rotation * vec2( poisson.xy );
+ return vec2( inputTex.x + rotatedPoisson.x * inc.x, inputTex.y + rotatedPoisson.y * inc.y );
+}
+
+void SetupPoissonBlurCoordsRotation(float inBlurAmount, vec2 inTexInfo, float inRotationRadians )
+{
+ float incX = inBlurAmount / inTexInfo.x;
+ float incY = inBlurAmount / inTexInfo.y;
+ float rotCos = cos( inRotationRadians );
+ float rotSin = sin( inRotationRadians );
+ mat2 rotMatrix = mat2( rotCos, rotSin, -rotSin, rotCos );
+ vec2 incVec = vec2( incX, incY );
+
+ TexCoord0 = ToRotatedPoissonTexCoord( poisson0, TexCoord, incVec, rotMatrix );
+ TexCoord1 = ToRotatedPoissonTexCoord( poisson1, TexCoord, incVec, rotMatrix );
+ TexCoord2 = ToRotatedPoissonTexCoord( poisson2, TexCoord, incVec, rotMatrix );
+ TexCoord3 = ToRotatedPoissonTexCoord( poisson3, TexCoord, incVec, rotMatrix );
+ TexCoord4 = ToRotatedPoissonTexCoord( poisson4, TexCoord, incVec, rotMatrix );
+ TexCoord5 = ToRotatedPoissonTexCoord( poisson5, TexCoord, incVec, rotMatrix );
+ TexCoord6 = ToRotatedPoissonTexCoord( poisson6, TexCoord, incVec, rotMatrix );
+ TexCoord7 = ToRotatedPoissonTexCoord( poisson7, TexCoord, incVec, rotMatrix );
+}
+
+void vert ()
+{
+ SetupPoissonBlurCoordsRotation( PoissonDistance, Texture0Info.xy, PoissonRotation);
+}
+ </VertexShader>
+ <FragmentShader>
+vec4 PoissonBlur(sampler2D inSampler )
+{
+ float mult0 = (1.0 - poisson0.z);
+ float mult1 = (1.0 - poisson1.z);
+ float mult2 = (1.0 - poisson2.z);
+ float mult3 = (1.0 - poisson3.z);
+ float mult4 = (1.0 - poisson4.z);
+ float mult5 = (1.0 - poisson5.z);
+ float mult6 = (1.0 - poisson6.z);
+ float mult7 = (1.0 - poisson7.z);
+
+ float multTotal = mult0 + mult1 + mult2 + mult3 + mult4 + mult5 + mult6 + mult7;
+ float multMultiplier = ( multTotal > 0.0 ? 1.0 / multTotal : 0.0 );
+
+ vec4 outColor = GetTextureValue( inSampler, TexCoord0, 1.0 ) * (mult0 * multMultiplier);
+ outColor += GetTextureValue( inSampler, TexCoord1, 1.0 ) * (mult1 * multMultiplier);
+ outColor += GetTextureValue( inSampler, TexCoord2, 1.0 ) * (mult2 * multMultiplier);
+ outColor += GetTextureValue( inSampler, TexCoord3, 1.0 ) * (mult3 * multMultiplier);
+ outColor += GetTextureValue( inSampler, TexCoord4, 1.0 ) * (mult4 * multMultiplier);
+ outColor += GetTextureValue( inSampler, TexCoord5, 1.0 ) * (mult5 * multMultiplier);
+ outColor += GetTextureValue( inSampler, TexCoord6, 1.0 ) * (mult6 * multMultiplier);
+ outColor += GetTextureValue( inSampler, TexCoord7, 1.0 ) * (mult7 * multMultiplier);
+ return outColor;
+}
+
+void frag()
+{
+ //Passing in 1.0 means the value will not get alpha-multiplied again
+ gl_FragColor = PoissonBlur( Texture0 );
+}
+ </FragmentShader>
+ </Shader>
+ <Shader name="COMBINER">
+ <FragmentShader>
+
+void frag()
+{
+ vec4 sourceColor = texture2D_0(TexCoord);
+
+
+ vec3 summation = texture2D_Downsample2(TexCoord).xyz
+ + texture2D_Downsample4(TexCoord).xyz
+ + texture2D_Downsample8(TexCoord).xyz
+ + texture2D_Downsample16(TexCoord).xyz;
+ gl_FragColor = vec4( clamp( sourceColor.x + summation.x, 0.0, sourceColor.a )
+ , clamp( sourceColor.y + summation.y, 0.0, sourceColor.a )
+ , clamp( sourceColor.z + summation.z, 0.0, sourceColor.a )
+ , sourceColor.a );
+
+ /*
+
+ gl_FragColor = vec4( texture2D_Downsample2(TexCoord).xyz
+ , sourceColor.a );
+ */
+}
+ </FragmentShader>
+ </Shader>
+ </Shaders>
+ <Passes>
+ <Buffer name="luminosity_buffer" type="ubyte" format="rgba" filter="linear" wrap="clamp" lifetime="frame"/>
+ <Buffer name="luminosity_buffer2" type="ubyte" format="rgba" filter="linear" wrap="clamp" size=".5" lifetime="frame"/>
+ <Buffer name="downsample_buffer2" type="ubyte" format="rgba" filter="linear" wrap="clamp" size=".5" lifetime="frame"/>
+ <Buffer name="downsample_buffer4" type="ubyte" format="rgba" filter="linear" wrap="clamp" size=".25" lifetime="frame"/>
+ <Buffer name="downsample_buffer8" type="ubyte" format="rgba" filter="linear" wrap="clamp" size=".125" lifetime="frame"/>
+ <Buffer name="downsample_buffer16" type="ubyte" format="rgba" filter="linear" wrap="clamp" size=".0625" lifetime="frame"/>
+ <Pass shader="CLEARPASS" input="[source]" output="luminosity_buffer">
+ <RenderState name="Stencil" value="false"/>
+ </Pass>
+ <Pass shader="STENCILPASS" input="[source]" output="luminosity_buffer">
+ <RenderState name="Stencil" value="true"/>
+ </Pass>
+ <Pass shader="LUMINOSITY" input="luminosity_buffer" output="luminosity_buffer2">
+ <RenderState name="Stencil" value="false"/>
+ </Pass>
+ <Pass shader="BLUR" input="luminosity_buffer2" output="downsample_buffer2">
+ <SetParam name="PoissonDistance" value="4"/>
+ <SetParam name="PoissonRotation" value="0"/>
+ </Pass>
+ <Pass shader="BLUR" input="luminosity_buffer2" output="downsample_buffer4">
+ <SetParam name="PoissonDistance" value="4"/>
+ <SetParam name="PoissonRotation" value="0.62831"/>
+ </Pass>
+ <Pass shader="BLUR" input="luminosity_buffer2" output="downsample_buffer8">
+ <SetParam name="PoissonDistance" value="6"/>
+ <SetParam name="PoissonRotation" value="1.25663"/>
+ </Pass>
+ <Pass shader="BLUR" input="luminosity_buffer2" output="downsample_buffer16">
+ <SetParam name="PoissonDistance" value="10"/>
+ <SetParam name="PoissonRotation" value="1.88495"/>
+ </Pass>
+ <Pass shader="COMBINER" input="[source]">
+ <BufferInput param="Downsample2" value="downsample_buffer2"/>
+ <BufferInput param="Downsample4" value="downsample_buffer4"/>
+ <BufferInput param="Downsample8" value="downsample_buffer8"/>
+ <BufferInput param="Downsample16" value="downsample_buffer16"/>
+ <RenderState name="Stencil" value="false"/>
+ </Pass>
+ </Passes>
+</Effect>
+
diff --git a/Studio/Content/Effect Library/Blur.effect b/Studio/Content/Effect Library/Blur.effect
new file mode 100644
index 0000000..2b9b988
--- /dev/null
+++ b/Studio/Content/Effect Library/Blur.effect
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <Property name="amount" formalName="Blur Amount" min="0" max="0.10" default="0.01" description="Amount of Blur"/>
+ </MetaData>
+ <Shaders>
+ <Shared></Shared>
+ <VertexShaderShared></VertexShaderShared>
+ <FragmentShaderShared></FragmentShaderShared>
+ <Shader name="main">
+ <VertexShader></VertexShader>
+ <FragmentShader><![CDATA[
+void frag()
+{
+
+ vec4 c1 = texture2D_0(vec2(TexCoord.x - amount, TexCoord.y - amount));
+ vec4 c2 = texture2D_0(vec2(TexCoord.x + amount, TexCoord.y - amount));
+ vec4 c3 = texture2D_0(vec2(TexCoord.x - amount, TexCoord.y + amount));
+ vec4 c4 = texture2D_0(vec2(TexCoord.x + amount, TexCoord.y + amount));
+
+ vec4 f1 = vec4(mix(c1, c2, 0.5));
+ vec4 f2 = vec4(mix(c3, c4, 0.5));
+
+ vec4 c5 = texture2D_0(vec2(TexCoord.x - (amount * 2.0), TexCoord.y));
+ vec4 c6 = texture2D_0(vec2(TexCoord.x, TexCoord.y - (amount * 2.0)));
+ vec4 c7 = texture2D_0(vec2(TexCoord.x, TexCoord.y + (amount * 2.0)));
+ vec4 c8 = texture2D_0(vec2(TexCoord.x + (amount * 2.0), TexCoord.y));
+
+ vec4 f3 = vec4(mix(c5, c6, 0.5));
+ vec4 f4 = vec4(mix(c7, c8, 0.5));
+
+ vec4 r1 = vec4(mix(f1, f2, 0.5));
+ vec4 r2 = vec4(mix(f3, f4, 0.5));
+
+ gl_FragColor = vec4(mix(r1, r2, 0.5));
+
+
+}
+ ]]></FragmentShader>
+ </Shader>
+ </Shaders>
+ <Passes>
+ <Pass shader="main" input="[source]" output="[dest]"/>
+ </Passes>
+</Effect>
+
+
diff --git a/Studio/Content/Effect Library/Brush Strokes.effect b/Studio/Content/Effect Library/Brush Strokes.effect
new file mode 100644
index 0000000..e6e0e1e
--- /dev/null
+++ b/Studio/Content/Effect Library/Brush Strokes.effect
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <!--Simulates an artistic painting of the image-->
+ <Property name="NoiseSamp" formalName="Noise" filter="linear" clamp="repeat" type="Texture" default="./maps/effects/brushnoise.png" description="Texture to be used for the brush texture"/>
+ <Property name="brushAngle" formalName="Brush Angle" default="45" description="Amount to rotate the noise texture."/>
+ <Property name="brushLen" formalName="Stroke Length" min="0" max="3" default="1" description="How far to offset the image/'brush'."/>
+ <Property name="brushSize" formalName="Stroke Size" min="10" max="200" default="100" description="Scale the brush.\nSmaller values yield larger sizes."/>
+ </MetaData>
+ <Shaders>
+ <Shader>
+ <FragmentShader>
+void frag (void)
+{
+ if ( flagNoiseSamp != 0 ) {
+ float alpha = radians(brushAngle);
+ float cosAlpha = cos(alpha);
+ float sinAlpha = sin(alpha);
+ mat2 rotMat = mat2(cosAlpha, sinAlpha, -sinAlpha, cosAlpha);
+
+ vec2 uv0 = TexCoord / brushSize * 1000.0;
+ uv0 = (uv0.yx * rotMat).yx;
+
+ vec2 uv1 = texture2D_NoiseSamp(fract(uv0)).xy - 0.5;
+ uv1*= vec2(1.0, 0.01);
+ uv1*= rotMat;
+ vec2 uv2 = TexCoord + uv1 * 0.1 * brushLen;
+
+ vec2 halfPixelSize = 0.5 / Texture0Info.xy;
+ colorOutput(texture2D_0(clamp(uv2, halfPixelSize, 1.0-halfPixelSize)));
+ }
+ else
+ colorOutput(texture2D_0(TexCoord));
+}
+ </FragmentShader>
+ </Shader>
+ </Shaders>
+</Effect>
diff --git a/Studio/Content/Effect Library/ChromaticAberration.effect b/Studio/Content/Effect Library/ChromaticAberration.effect
new file mode 100644
index 0000000..6b553e7
--- /dev/null
+++ b/Studio/Content/Effect Library/ChromaticAberration.effect
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <Property name="Dispersion" formalName="Aberration Amount" description="Amount of Chromatic Aberration" default="0"/>
+ <Property name="FocusDepth" formalName="Focus Depth" description="Dispersion will scale in relation\nto distance from this depth" default="0"/>
+ <Property name="MaskSampler" formalName="Effect Mask" description="Grayscale texture to control where and how\nstrong on screen the aberration effect occurs" type="Texture" filter="linear" clamp="clamp" default="./maps/effects/white.png" />
+ <Property name="DepthDebug" formalName="Debug Dispersion Amount" type="Boolean" description="Allows you to see effect of controls.\nBlack objects will disperse less and\nwhite will disperse more" default="False"/>
+ <Property name="DepthSampler" type="Texture" filter="nearest" clamp="clamp"/>
+ <Property name="SourceSampler" type="Texture" filter="linear" clamp="clamp"/>
+ </MetaData>
+ <Shaders>
+ <Shader Name="DISPERSE">
+ <FragmentShader>
+#include "depthpass.glsllib"
+
+uniform vec2 CameraClipRange;
+
+void frag()
+{
+ vec4 depthSample = texture(DepthSampler, TexCoord);
+ float depthVal = getDepthValue( depthSample, CameraClipRange );
+ float rawDepth = depthValueToLinearDistance( depthVal, CameraClipRange );
+
+ float depthScale = abs(CameraClipRange.y - CameraClipRange.x);
+ float depthDisp = abs(rawDepth - FocusDepth) / depthScale;
+ float finalDisperse = Dispersion * depthDisp;
+ float effectAmt = texture(MaskSampler, TexCoord).x;
+
+ if ( DepthDebug )
+ {
+ gl_FragColor.rgb = vec3( depthDisp * effectAmt );
+ return;
+ }
+
+ gl_FragColor = texture(SourceSampler, TexCoord);
+
+ ivec2 texSize = textureSize( SourceSampler, 0 );
+ vec2 dispDir = normalize( TexCoord.xy - vec2(0.5) );
+ dispDir /= 2.0 * vec2( texSize );
+ vec3 mixColor;
+ mixColor = gl_FragColor.rgb;
+ mixColor.r = texture(SourceSampler, TexCoord+dispDir*finalDisperse).r;
+ mixColor.b = texture(SourceSampler, TexCoord-dispDir*finalDisperse).b;
+
+ gl_FragColor.rgb = mix( gl_FragColor.rgb, mixColor, effectAmt );
+}
+ </FragmentShader>
+ </Shader>
+ </Shaders>
+ <Passes>
+ <Pass shader="DISPERSE">
+ <BufferInput value="[source]" param="SourceSampler" />
+ <DepthInput param="DepthSampler"/>
+ </Pass>
+ </Passes>
+</Effect>
diff --git a/Studio/Content/Effect Library/ColorMaster.effect b/Studio/Content/Effect Library/ColorMaster.effect
new file mode 100644
index 0000000..20e5b4d
--- /dev/null
+++ b/Studio/Content/Effect Library/ColorMaster.effect
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <Property name="red" formalName="Red Amount" min="0" max="2.0" default="1.0" description="Amount of Red"/>
+ <Property name="green" formalName="Green Amount" min="0" max="2.0" default="1.0" description="Amount of Green"/>
+ <Property name="blue" formalName="Blue Amount" min="0" max="2.0" default="1.0" description="Amount of Blue"/>
+ <Property name="strength_gray" formalName="Saturation" min="-1" max="1" default="0.0" description="Strength of Color"/>
+ </MetaData>
+ <Shaders>
+ <Shared></Shared>
+ <VertexShaderShared></VertexShaderShared>
+ <FragmentShaderShared></FragmentShaderShared>
+ <Shader name="main">
+ <VertexShader></VertexShader>
+ <FragmentShader><![CDATA[
+
+vec4 desaturate(vec3 color, float strength)
+{
+ vec3 lum = vec3(0.299, 0.587, 0.114);
+ // lum values based on: ITU-R BT.601
+ vec3 gray = vec3(dot(lum, color));
+ return vec4(mix(color, gray, -strength), 1.0);
+}
+void frag()
+{
+ vec4 sourceColor = texture2D_0(TexCoord);
+ vec4 basecolor = vec4(sourceColor.r*red,sourceColor.g*green,sourceColor.b*blue,sourceColor.a);
+ gl_FragColor = desaturate(basecolor.rgb,strength_gray);
+}
+ ]]></FragmentShader>
+ </Shader>
+ </Shaders>
+ <Passes>
+ <Pass shader="main" input="[source]" output="[dest]"/>
+ </Passes>
+</Effect>
+
+
diff --git a/Studio/Content/Effect Library/Corona.effect b/Studio/Content/Effect Library/Corona.effect
new file mode 100644
index 0000000..fb50812
--- /dev/null
+++ b/Studio/Content/Effect Library/Corona.effect
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <!--Creates a corona around a sprite.-->
+ <Property name="HBlurBias" formalName="Horizontal Blur" min="0" max="10" default="2" description="Amount of corona horizontally."/>
+ <Property name="VBlurBias" formalName="Vertical Blur" min="0" max="10" default="2" description="Amount of corona vertically."/>
+ <Property name="Trailfade" formalName="Fade Amount" min="0" max="1" default="0.8" description="0=no glow\n0.5=fade quickly\n1.0=persistent trails"/>
+ <Property name="GlowSampler" filter="nearest" clamp="clamp" type="Texture" />
+ <Property name="GlowCol" formalName="Glow Color" type="Color" default="1 0.6 0.0" description="The color to use for the glow."/>
+ <Property name="NoiseSamp" formalName="Noise" filter="linear" clamp="repeat" default="./maps/effects/noise.png" type="Texture" description="Texture to be used for the noise texture"/>
+ <Property name="NoiseScale" formalName="Noise Density" min="0" max="10" default="2" description="The density of the noise in corona.\nThe higher the value, the denser\nand smaller the noise;\nthe lower the value, the bigger the\nnoise scale."/>
+ <Property name="NoiseBright" formalName="Noise Brightness" min="0" max="5" default="4" description="Brightness of the noise."/>
+ <Property name="NoiseRatio" formalName="Noise Amount" min="0" max="1" default=".15" description="Magnitude of the noise."/>
+ <Property name="CrawlLen" formalName="Crawl Length" min="0" max="1" default=".3" description="Length of the corona trail in animation."/>
+ <Property name="CrawlAngle" formalName="Crawl Angle" default="0" description="Angle of the corona trail in animation."/>
+ <Property name="Sprite" filter="nearest" clamp="clamp" type="Texture" />
+ </MetaData>
+ <Shaders>
+ <Shared>
+#include "blur.glsllib"
+uniform float AppFrame; // frame number since app starts
+uniform float FPS;
+ </Shared>
+ <Shader name="CORONA_HBLUR">
+ <Shared>
+varying vec2 crawl; // corona crawl direction and magnitude
+ </Shared>
+ <VertexShader>
+void vert ()
+{
+ SetupHorizontalGaussianBlur(Texture0Info.x, HBlurBias, TexCoord);
+ // compute crawl
+ float alpha = radians(CrawlAngle + 180.0);
+ crawl = vec2(CrawlLen * sin(alpha), CrawlLen * cos(alpha));
+}
+ </VertexShader>
+ <FragmentShader>
+void frag()
+{
+ //Passing in 1.0 means the value will not get alpha-multiplied again
+ float OutCol = GaussianAlphaBlur( GlowSampler, 1.0 );
+ OutCol *= Trailfade; // fade away glow color
+ OutCol += texture2D_0( TexCoord ).a; // add glow color in the original tex area
+
+ vec2 nuv = NoiseScale * TexCoord3 + AppFrame / FPS * crawl;
+ vec4 noise = texture2D_NoiseSamp(fract(nuv));
+ float ns = (1.0 - NoiseRatio) + NoiseRatio * NoiseBright * noise.x;
+ OutCol *= ns;
+ gl_FragColor = vec4( OutCol );
+}
+ </FragmentShader>
+ </Shader>
+ <Shader name="CORONA_VBLUR">
+ <VertexShader>
+void vert ()
+{
+ SetupVerticalGaussianBlur( Texture0Info.y, VBlurBias, TexCoord );
+}
+ </VertexShader>
+ <FragmentShader>
+void frag() // PS_Blur_Vertical_9tap
+{
+ float OutCol = GaussianAlphaBlur( Texture0, Texture0Info.z );
+ gl_FragColor = OutCol * vec4(GlowCol.rgb, 1.0);
+}
+ </FragmentShader>
+ </Shader>
+ <Shader name="CORONA_BLEND">
+ <VertexShader>
+void vert()
+{
+}
+ </VertexShader>
+ <FragmentShader>
+void frag ()
+{
+ vec4 src = texture2D_0( TexCoord );
+ vec4 dst = texture2D_Sprite(TexCoord);
+ colorOutput( src * (1.0 - dst.a) + dst );
+}
+ </FragmentShader>
+ </Shader>
+ </Shaders>
+ <Passes>
+ <Buffer name="glow_buffer" type="ubyte" format="rgba" filter="linear" wrap="clamp" size="0.55" lifetime="scene"/>
+ <Buffer name="temp_buffer" type="ubyte" format="rgba" filter="linear" wrap="clamp" size="0.55" lifetime="frame"/>
+
+ <Pass shader="CORONA_HBLUR" input="[source]" output="temp_buffer">
+ <BufferInput param="GlowSampler" value="glow_buffer"/>
+ </Pass>
+ <Pass shader="CORONA_VBLUR" input="temp_buffer" output="glow_buffer"/>
+
+ <Pass shader="CORONA_BLEND" input="glow_buffer">
+ <BufferInput param="Sprite" value="[source]"/>
+ </Pass>
+ </Passes>
+</Effect>
diff --git a/Studio/Content/Effect Library/Depth Of Field Bokeh.effect b/Studio/Content/Effect Library/Depth Of Field Bokeh.effect
new file mode 100644
index 0000000..c715258
--- /dev/null
+++ b/Studio/Content/Effect Library/Depth Of Field Bokeh.effect
@@ -0,0 +1,302 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <Property name="FocusDistance" formalName="Focus Distance" description="Objects exactly distance +- &quot;In Focus Width&quot;\nfrom the camera will be in focus" default="600"/>
+ <Property name="FocusWidth" formalName="Depth of Field" description="Objects within this range of Focus\nDistance will be in focus" default="20"/>
+ <Property name="MaxBokehRadius" formalName="Max Bokeh Radius" description="Maximum radius of a Bokeh sprite" default="15"/>
+ <Property name="MaxCoCRadius" formalName="Max CoC Radius" description="Maximum radius of a CoC" default="15"/>
+ <Property name="MinBokehThreshold" formalName="Min Bokeh Threshold" description="Minimum luminance difference for\nBokeh detection" default="1.0"/>
+ <Property name="MaxBokehThreshold" formalName="Max Bokeh Threshold" description="Maximum luminance difference for\nBokeh detection" default="1000.0"/>
+ <Property name="MinCoCThreshold" formalName="Min CoC Threshold" description="Minimum CoC radius for Bokeh detection" default="3.0"/>
+ <Property name="DepthDebug" formalName="Debug Focus Rendering" type="Boolean" description="Allows you to see exactly how the Focus\nvariables work. Black objects are\nin focus, white are blurred" default="False"/>
+ <Property name="BokehShapeSampler" formalName="Bokeh shape" filter="linear" clamp="repeat" default="./maps/effects/HexagonalBokeh.png" type="Texture" description="Texture to be used for the bokeh shape"/>
+ <Property name="DepthSampler" type="Texture" filter="nearest" clamp="clamp"/>
+ <Property name="SourceSampler" type="Texture" filter="linear" clamp="clamp"/>
+ <Property name="BokehDetectSampler" type="Image2D" format="rgba32f" binding="1"/>
+ <Property name="BokehColorSampler" type="Image2D" format="rgba32f" binding="2"/>
+ <Property name="BokehSampler" type="Texture" filter="nearest" clamp="clamp"/>
+ <Property name="BokehPositionSampler" type="Texture" filter="nearest" clamp="clamp"/>
+ <Property name="BokehBufferSampler" type="Texture" filter="nearest" clamp="clamp"/>
+ <Property name="MergedBufferSampler" type="Texture" filter="linear" clamp="clamp"/>
+ <Property name="BokehCounter" type="Buffer" format="uvec4" usage="storage" binding="1" align="std140"/>
+
+ </MetaData>
+ <Shaders>
+ <Shared>
+#include "blur.glsllib"
+const float BlurAmount = 4.0;
+ </Shared>
+ <Shader name="CLEAR">
+ <VertexShader>
+void vert()
+{
+
+}
+ </VertexShader>
+ <FragmentShader>
+void frag() // Simple averaging box blur.
+{
+ gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);
+}
+ </FragmentShader>
+ </Shader>
+ <Shader name="BOKEH_DETECT">
+ <VertexShader>
+
+void vert()
+{
+
+}
+
+ </VertexShader>
+ <FragmentShader>
+
+void frag() // Mix the input blur and the depth texture with the sprite
+{
+ vec4 sourceColor = textureLod(Texture0, TexCoord, 0.0);
+
+ float depthTap = getDepthValue( texture2D(DepthSampler, TexCoord), CameraClipRange );
+ float linearDepth = depthValueToLinearDistance( depthTap, CameraClipRange );
+ float FocusStart = FocusDistance - FocusWidth;
+ float FocusEnd = FocusDistance + FocusWidth;
+ float blur = clamp( abs(linearDepth - FocusDistance) / (FocusEnd-FocusStart), 0.00, 1.0);
+ //float blur = GetDepthMultiplier( TexCoord, DepthSampler, FocusDistance, FocusWidth, FocusWidth );
+ gl_FragColor = vec4( linearDepth, blur, 0.0, 1.0);
+
+ // use a 3x3 filter to compute luminance difference
+ vec3 avgColor = vec3(0);
+ avgColor += textureLodOffset(Texture0, TexCoord, 0.0, ivec2(1, 0)).xyz;
+ avgColor += textureLodOffset(Texture0, TexCoord, 0.0, ivec2(0, 1)).xyz;
+ avgColor += textureLodOffset(Texture0, TexCoord, 0.0, ivec2(-1, 0)).xyz;
+ avgColor += textureLodOffset(Texture0, TexCoord, 0.0, ivec2(0, -1)).xyz;
+ avgColor += textureLodOffset(Texture0, TexCoord, 0.0, ivec2(1, 1)).xyz;
+ avgColor += textureLodOffset(Texture0, TexCoord, 0.0, ivec2(1, -1)).xyz;
+ avgColor += textureLodOffset(Texture0, TexCoord, 0.0, ivec2(-1, -1)).xyz;
+ avgColor += textureLodOffset(Texture0, TexCoord, 0.0, ivec2(-1, 1)).xyz;
+ avgColor /= 8.0;
+
+ float currentLum = dot(vec3(0.2126, 0.7152, 0.0722), sourceColor.xyz);
+ float averageLum = dot(vec3(0.2126, 0.7152, 0.0722), avgColor);
+ //float currentLum = dot(vec3(1.0), sourceColor.xyz);
+ //float averageLum = dot(vec3(1.0), avgColor);
+ float lumDiff = max(currentLum - averageLum, 0.0);
+
+ float cocSize = blur * MaxCoCRadius;
+
+ if( lumDiff > MinBokehThreshold &amp;&amp; lumDiff &lt; MaxBokehThreshold &amp;&amp; cocSize > MinCoCThreshold )
+ {
+ ivec2 sourceSize, storeCoord;
+ sourceSize = ivec2(textureSize(Texture0, 0).xy);
+
+ uint add = uint(1);
+ int current = int(atomicAdd( BokehCounter_data[0].y, add));
+
+ storeCoord.y = int(floor(float(current/sourceSize.x)));
+ storeCoord.x = current - storeCoord.y*sourceSize.x;
+
+ imageStore(BokehDetectSampler, ivec2(storeCoord.xy), vec4(TexCoord.x * float(sourceSize.x), TexCoord.y * float(sourceSize.y), linearDepth, blur));
+
+ vec3 bokehColor = sourceColor.xyz / (cocSize);
+ imageStore(BokehColorSampler, ivec2(storeCoord.xy), vec4(bokehColor, 1.0));
+ }
+}
+ </FragmentShader>
+ </Shader>
+ <Shader name="BOKEH_RENDER">
+ <VertexShader>
+out vec4 varColor;
+out float varRadius;
+out float varDepth;
+
+void vert()
+{
+ ivec2 bufSize, coord;
+ bufSize = textureSize(BokehPositionSampler,0).xy;
+ coord.y = int(floor(float(gl_InstanceID / bufSize.x)));
+ coord.x = gl_InstanceID - coord.y * bufSize.x;
+
+ varColor = texelFetch(BokehSampler, coord, 0);
+ vec4 pos = texelFetch(BokehPositionSampler, coord, 0);
+
+ varRadius = pos.w * MaxBokehRadius;
+ varDepth = pos.z;
+
+ // convert to NDC -1, 1 range
+ //pos.xy /= DestSize;
+ //pos.xy = pos.xy * 2.0 - 1.0;
+
+ vec4 pos1 = vec4( (attr_pos.xy + pos.xy) / DestSize.xy , 0.0, 1.0 );
+ gl_Position = pos1;
+}
+
+ </VertexShader>
+ <GeometryShader>
+#include "viewProperties.glsllib"
+
+in float varRadius[];
+in float varDepth[];
+in vec4 varColor[];
+out vec4 geColor;
+out float geDepth;
+out vec2 geUVPos;
+
+layout (points) in;
+layout (triangle_strip, max_vertices = 4) out;
+
+void main()
+{
+ gl_Layer = 0;
+ geColor = varColor[0];
+ geDepth = varDepth[0];
+ vec2 rcpSize = 1.0 / DestSize;
+
+ //emit triangle at pos.
+ vec2 offsetx = vec2(rcpSize.x * varRadius[0], 0.0);
+ vec2 offsety = vec2(0.0, rcpSize.y * varRadius[0]);
+ vec2 offsets = vec2(-1.0, -1.0); // Screen offset
+
+ // Expand point into a quad
+ gl_Position = vec4(offsets + 2.0*(gl_in[0].gl_Position.xy - offsetx - offsety),0.0 ,1.0);
+ geUVPos = vec2(0,0);
+ EmitVertex();
+ gl_Position = vec4(offsets + 2.0*(gl_in[0].gl_Position.xy + offsetx - offsety),0.0 ,1.0);
+ geUVPos = vec2(1,0);
+ EmitVertex();
+ gl_Position = vec4(offsets + 2.0*(gl_in[0].gl_Position.xy - offsetx + offsety),0.0 ,1.0);
+ geUVPos = vec2(0,1);
+ EmitVertex();
+ gl_Position = vec4(offsets + 2.0*(gl_in[0].gl_Position.xy + offsetx + offsety),0.0 ,1.0);
+ geUVPos = vec2(1,1);
+ EmitVertex();
+
+ EndPrimitive();
+}
+ </GeometryShader>
+ <FragmentShader>
+in vec4 geColor;
+in vec2 geUVPos;
+in float geDepth;
+
+void frag()
+{
+ float alpha = textureLod(BokehShapeSampler, geUVPos, 0.0 ).r;
+ vec2 bd = textureLod(Texture0, gl_FragCoord.xy/vec2(textureSize(Texture0, 0)), 0.0 ).xy;
+ float blur = bd.x;
+ float depth = bd.y;
+
+ float weight = clamp(depth - geDepth + 1.0, 0.0, 1.0);
+ weight = clamp( weight + blur, 0.0, 1.0);
+
+ gl_FragColor = vec4( geColor.xyz * alpha * weight, alpha * weight);
+}
+ </FragmentShader>
+ </Shader>
+
+<Shader name="MERGE">
+ <VertexShader>
+
+void vert()
+{
+ // reset bokeh counter
+ BokehCounter_data[0].y = uint(0);
+}
+ </VertexShader>
+ <FragmentShader>
+
+void frag() // Mix the input blur and the depth texture with the sprite
+{
+ vec4 sourceCol = texture2D( SourceSampler, TexCoord );
+
+ ivec2 storeCoord;
+ ivec2 sourceSize = textureSize(BokehBufferSampler, 0).xy;
+ storeCoord = ivec2(float(sourceSize.x) * TexCoord.x, float(sourceSize.y) * TexCoord.y);
+ vec4 bokehCol = texelFetch( BokehBufferSampler, storeCoord, 0 );
+ gl_FragColor = vec4( bokehCol.xyz + sourceCol.xyz, sourceCol.a );
+}
+ </FragmentShader>
+ </Shader>
+<Shader name="DOWNSAMPLE">
+ <VertexShader>
+void vert()
+{
+ SetupBoxBlurCoords(vec2(Texture0Info.xy));
+}
+ </VertexShader>
+ <FragmentShader>
+void frag() // Simple averaging box blur.
+{
+ gl_FragColor = BoxDepthBlur(DepthSampler, Texture0, Texture0Info.z, FocusDistance, FocusWidth, FocusWidth);
+}
+ </FragmentShader>
+ </Shader>
+<Shader name="BLUR">
+ <VertexShader>
+
+void vert()
+{
+ SetupPoissonBlurCoords( BlurAmount, DestSize.xy );
+}
+
+ </VertexShader>
+ <FragmentShader>
+
+void frag() // Mix the input blur and the depth texture with the sprite
+{
+ float centerMultiplier = GetDepthMultiplier( TexCoord, DepthSampler, FocusDistance, FocusWidth, FocusWidth );
+ if ( DepthDebug )
+ {
+ gl_FragColor = vec4( centerMultiplier,centerMultiplier,centerMultiplier, 1.0 );
+ }
+ else
+ {
+ vec4 blurColor = PoissonDepthBlur(Texture0, Texture0Info.z, DepthSampler, FocusDistance, FocusWidth, FocusWidth );
+ gl_FragColor = mix( texture2D(MergedBufferSampler,TexCoord), blurColor, centerMultiplier );
+ }
+}
+ </FragmentShader>
+ </Shader>
+ </Shaders>
+
+ <Passes>
+ <Buffer name="depthblur_buffer" type="fp16" format="rg" filter="nearest" wrap="clamp" size="1.0" lifetime="frame"/>
+ <Buffer name="bokeh_buffer" type="ubyte" format="rgba" filter="nearest" wrap="clamp" size="1.0" lifetime="scene"/>
+ <Buffer name="merged_buffer" type="ubyte" format="source" filter="nearest" wrap="clamp" size="1.0" lifetime="frame"/>
+ <Image name="bokeh_detect_image" type="fp16" format="rgba" filter="nearest" wrap="clamp" size="1.0" lifetime="scene" access="readwrite"/>
+ <Image name="bokeh_color_image" type="fp16" format="rgba" filter="nearest" wrap="clamp" size="1.0" lifetime="scene" access="readwrite"/>
+ <DataBuffer name="DrawIndirectBuffer" type="indirect" wrapName="BokehCounter" wrapType="storage" format="uint" size="4" lifetime="frame"/>
+ <Buffer name="downsample_buffer" type="ubyte" format="source" filter="linear" wrap="clamp" size=".5" lifetime="frame"/>
+
+ <Pass shader="CLEAR" input="[source]" output="bokeh_buffer">
+ </Pass>
+
+ <Pass shader="BOKEH_DETECT" input="[source]" output="depthblur_buffer">
+ <DepthInput param="DepthSampler"/>
+ <ImageInput value="bokeh_color_image" param="BokehColorSampler" usage="image"/>
+ <ImageInput value="bokeh_detect_image" param="BokehDetectSampler" usage="image"/>
+ <DataBufferInput param="BokehCounter" usage="storage"/>
+ </Pass>
+
+ <Pass shader="BOKEH_RENDER" input="depthblur_buffer" output="bokeh_buffer">
+ <ImageInput value="bokeh_color_image" param="BokehSampler" usage="texture" sync="true"/>
+ <ImageInput value="bokeh_detect_image" param="BokehPositionSampler" usage="texture" sync="true"/>
+ <DataBufferInput param="DrawIndirectBuffer" usage="indirect"/>
+ <Blending source="SrcAlpha" dest="One"/>
+ </Pass>
+
+ <Pass shader="MERGE" input="bokeh_buffer" output="merged_buffer">
+ <BufferInput value="[source]" param="SourceSampler" />
+ <BufferInput value="bokeh_buffer" param="BokehBufferSampler" />
+ <DataBufferInput param="BokehCounter" usage="storage"/>
+ </Pass>
+
+ <Pass shader="DOWNSAMPLE" input="merged_buffer" output="downsample_buffer">
+ <DepthInput param="DepthSampler"/>
+ </Pass>
+
+ <Pass shader="BLUR" input="downsample_buffer" output="[dest]" format="source">
+ <BufferInput value="merged_buffer" param="MergedBufferSampler" />
+ <DepthInput param="DepthSampler"/>
+ </Pass>
+ </Passes>
+</Effect>
+
diff --git a/Studio/Content/Effect Library/Depth Of Field HQ Blur.effect b/Studio/Content/Effect Library/Depth Of Field HQ Blur.effect
new file mode 100644
index 0000000..6649bf7
--- /dev/null
+++ b/Studio/Content/Effect Library/Depth Of Field HQ Blur.effect
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <Property name="FocusDistance" formalName="Focus Distance" description="Objects exactly distance +- &quot;In Focus Width&quot;\nfrom the camera will be in focus" default="600"/>
+ <Property name="FocusWidth" formalName="Depth of Field" description="Objects within this range of Focus\nDistance will be in focus" default="20"/>
+ <Property name="DepthDebug" formalName="Debug Focus Rendering" type="Boolean" description="Allows you to see exactly how the Focus\nvariables work. Black objects are in\nfocus, white are blurred" default="False"/>
+ <Property name="DepthSampler" type="Texture" filter="nearest" clamp="clamp"/>
+ <Property name="SourceSampler" type="Texture" filter="linear" clamp="clamp"/>
+ </MetaData>
+ <Shaders>
+ <Shared>
+#include "blur.glsllib"
+const float BlurAmount = 4.0;
+ </Shared>
+ <Shader name="DOWNSAMPLE">
+ <VertexShader>
+void vert()
+{
+ SetupBoxBlurCoords(vec2(Texture0Info.xy));
+}
+ </VertexShader>
+ <FragmentShader>
+void frag() // Simple averaging box blur.
+{
+ gl_FragColor = BoxDepthBlur(DepthSampler, Texture0, Texture0Info.z, FocusDistance, FocusWidth, FocusWidth);
+}
+ </FragmentShader>
+ </Shader>
+ <Shader name="BLUR">
+ <VertexShader>
+
+void vert()
+{
+ SetupPoissonBlurCoords( BlurAmount, DestSize.xy );
+}
+
+ </VertexShader>
+ <FragmentShader>
+
+void frag() // Mix the input blur and the depth texture with the sprite
+{
+ float centerMultiplier = GetDepthMultiplier( TexCoord, DepthSampler, FocusDistance, FocusWidth, FocusWidth );
+ if ( DepthDebug )
+ {
+ gl_FragColor = vec4( centerMultiplier,centerMultiplier,centerMultiplier, 1.0 );
+ }
+ else
+ {
+ vec4 blurColor = PoissonDepthBlur(Texture0, Texture0Info.z, DepthSampler, FocusDistance, FocusWidth, FocusWidth );
+ gl_FragColor = mix( texture2D_SourceSampler(TexCoord), blurColor, centerMultiplier );
+ }
+}
+ </FragmentShader>
+ </Shader>
+ </Shaders>
+ <Passes>
+ <Buffer name="downsample_buffer" type="ubyte" format="rgba" filter="linear" wrap="clamp" size=".5" lifetime="frame"/>
+ <Pass shader="DOWNSAMPLE" input="[source]" output="downsample_buffer">
+ <DepthInput param="DepthSampler"/>
+ </Pass>
+ <Pass shader="BLUR" input="downsample_buffer">
+ <BufferInput value="[source]" param="SourceSampler" />
+ <DepthInput param="DepthSampler"/>
+ </Pass>
+ </Passes>
+</Effect>
+
diff --git a/Studio/Content/Effect Library/Desaturate.effect b/Studio/Content/Effect Library/Desaturate.effect
new file mode 100644
index 0000000..02c3119
--- /dev/null
+++ b/Studio/Content/Effect Library/Desaturate.effect
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <Property name="strenght_gray" formalName="Effect Strenght" min="0" max="1" default="1.0" description="Strenght of the Grayscale"/>
+ </MetaData>
+ <Shaders>
+ <Shared></Shared>
+ <VertexShaderShared></VertexShaderShared>
+ <FragmentShaderShared></FragmentShaderShared>
+ <Shader name="main">
+ <VertexShader></VertexShader>
+ <FragmentShader><![CDATA[
+
+vec4 desaturate(vec3 color, float strenght)
+{
+ vec3 lum = vec3(0.299, 0.587, 0.114);
+ // lum values based on: ITU-R BT.601
+ vec3 gray = vec3(dot(lum, color));
+ return vec4(mix(color, gray, strenght), 1.0);
+}
+void frag()
+{
+ vec4 origColor = texture2D_0(TexCoord);
+
+ gl_FragColor = desaturate(origColor.rgb,strenght_gray);
+}
+ ]]></FragmentShader>
+ </Shader>
+ </Shaders>
+ <Passes>
+ <Pass shader="main" input="[source]" output="[dest]"/>
+ </Passes>
+</Effect>
+
+
diff --git a/Studio/Content/Effect Library/Distortion Ripple.effect b/Studio/Content/Effect Library/Distortion Ripple.effect
new file mode 100644
index 0000000..0929be1
--- /dev/null
+++ b/Studio/Content/Effect Library/Distortion Ripple.effect
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <!--Distorts the image in a ripple way.-->
+ <Property name="radius" formalName="Radius" min="0" max="100" default="100.0" description="Adjusts the spread between ripples."/>
+ <Property name="center" formalName="Center" type="Float2" default="0.5 0.5" description="Adjusts the focus point of the distortion."/>
+ <Property name="ripples" formalName="Wave Width" min="2" max="100" default="95.0" description="Adjusts the number of ripples."/>
+ <Property name="height" formalName="Wave Height" min="0" max="100" default="25.0" description="Adjusts the distortion amount."/>
+ <Property name="phase" formalName="Ripple Phase" default="0.0" description="The offset of each wave. Animate this\nproperty to see the waves move."/>
+ </MetaData>
+ <Shaders>
+ <Shared>
+varying vec2 center_vec;
+float PI2 = radians(360.0);
+ </Shared>
+ <Shader>
+ <VertexShader>
+void vert ()
+{
+ center_vec = TexCoord - center;
+ //Multiply by x/y ratio so we see a sphere on the screen
+ //instead of an ellipse.
+ center_vec.y *= Texture0Info.y / Texture0Info.x;
+}
+ </VertexShader>
+ <FragmentShader>
+<![CDATA[
+void frag()
+{
+ float dist_to_center = length(center_vec) * 100.0 / radius;;
+
+ vec2 texc;
+ if(dist_to_center > 1.0) {
+ texc = TexCoord;
+ } else {
+ float r = PI2 * (1.0 - dist_to_center);
+ float distortion = sin(r * (100.0-ripples) + radians(phase));
+ texc = TexCoord - ( TexCoord - center ) * distortion * height / 800.0;
+ }
+
+ if ( texc.x < 0.0 || texc.x > 1.0 || texc.y < 0.0 || texc.y > 1.0 )
+ gl_FragColor = vec4(0.0);
+ else
+ colorOutput(texture2D_0(texc));
+}
+]]>
+ </FragmentShader>
+ </Shader>
+ </Shaders>
+</Effect>
diff --git a/Studio/Content/Effect Library/Distortion Sphere.effect b/Studio/Content/Effect Library/Distortion Sphere.effect
new file mode 100644
index 0000000..3ed1e70
--- /dev/null
+++ b/Studio/Content/Effect Library/Distortion Sphere.effect
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <!--Distorts the image in a spherical way.-->
+ <Property name="radius" formalName="Radius" min="0" max="1" default=".3" description="Adjusts the distorted area."/>
+ <Property name="height" formalName="Height" min="-1" max="1" default=".3" description="Adjusts the distortion amount."/>
+ <Property name="center" formalName="Center" type="Float2" default="0.5 0.5" description="Adjusts the focus point of the distortion."/>
+ </MetaData>
+ <Shaders>
+ <Shared>
+varying vec2 center_vec;
+ </Shared>
+ <Shader>
+ <VertexShader>
+void vert ()
+{
+ center_vec = TexCoord - center;
+ //Multiply by x/y ratio so we see a sphere on the screen
+ //instead of an ellipse.
+ center_vec.y *= Texture0Info.y / Texture0Info.x;
+}
+ </VertexShader>
+ <FragmentShader>
+<![CDATA[
+void frag()
+{
+ float dist_to_center = length(center_vec) / radius;;
+
+ vec2 texc;
+ if(dist_to_center > 1.0) {
+ texc = TexCoord;
+ } else {
+ float distortion = 1.0 - dist_to_center * dist_to_center;
+ texc = TexCoord - (TexCoord - center) * distortion * height;
+ }
+
+ if ( texc.x < 0.0 || texc.x > 1.0 || texc.y < 0.0 || texc.y > 1.0 )
+ gl_FragColor = vec4(0.0);
+ else
+ colorOutput(texture2D_0(texc));
+}
+]]>
+ </FragmentShader>
+ </Shader>
+ </Shaders>
+</Effect> \ No newline at end of file
diff --git a/Studio/Content/Effect Library/Distortion Spiral.effect b/Studio/Content/Effect Library/Distortion Spiral.effect
new file mode 100644
index 0000000..a5a9697
--- /dev/null
+++ b/Studio/Content/Effect Library/Distortion Spiral.effect
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <!--Distorts the image in a spiraling way.-->
+ <Property name="radius" formalName="Radius" min="0" max="1" default=".3" description="Adjusts the distorted area."/>
+ <Property name="spiral" formalName="Spiral" min="-10" max="10" default="1.0" description="Adjusts the spiraling amount."/>
+ <Property name="center" formalName="Center" type="Float2" default="0.5 0.5" description="Adjusts the focus point of the distortion."/>
+ </MetaData>
+ <Shaders>
+ <Shared>
+varying vec2 center_vec;
+float PI2 = radians(360.0);
+ </Shared>
+ <Shader>
+ <VertexShader>
+void vert ()
+{
+ center_vec = TexCoord - center;
+ //Multiply by x/y ratio so we see a sphere on the screen
+ //instead of an ellipse.
+ center_vec.y *= Texture0Info.y / Texture0Info.x;
+}
+ </VertexShader>
+ <FragmentShader>
+<![CDATA[
+void frag()
+{
+ float dist_to_center = length(center_vec) / radius;;
+
+ vec2 texc;
+ if(dist_to_center > 1.0) {
+ texc = TexCoord;
+ } else {
+ float rotation_amount = (1.0 - dist_to_center) * (1.0 - dist_to_center);
+ float r = PI2 * rotation_amount * spiral / 4.0;
+ float cos_r = cos(r);
+ float sin_r = sin(r);
+ mat2 rotation = mat2(cos_r, sin_r, -sin_r, cos_r);
+ texc = center + rotation * (TexCoord - center);
+ }
+
+ if ( texc.x < 0.0 || texc.x > 1.0 || texc.y < 0.0 || texc.y > 1.0 )
+ gl_FragColor = vec4(0.0);
+ else
+ colorOutput(texture2D_0(texc));
+}
+]]>
+ </FragmentShader>
+ </Shader>
+ </Shaders>
+</Effect> \ No newline at end of file
diff --git a/Studio/Content/Effect Library/Edge Detect.effect b/Studio/Content/Effect Library/Edge Detect.effect
new file mode 100644
index 0000000..2b200d0
--- /dev/null
+++ b/Studio/Content/Effect Library/Edge Detect.effect
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <!--Smooth, unchanging areas of the image are turned black, while areas of the image with sharp color changes are brightened to highlight the 'edges' in the image.-->
+ <Property name="amount" formalName="Amount" min="0" max="1" default="1" description="0 = no effect\n1 = maximum effect"/>
+ </MetaData>
+ <Shaders>
+ <Shared>
+////////////////////////////////////////////////////////////
+// vert / frag shaders.
+
+varying vec4 TexCoordBLL; //Bottom Left and Bottom Tap
+varying vec4 TexCoordTLT; //Top Left and Top Tap
+varying vec4 TexCoordTRR; //Upper Right and Right Tap
+varying vec4 TexCoordBRB; //Bottom Right and Bottom Tap
+ </Shared>
+ <Shader>
+ <VertexShader>
+void vert()
+{
+ //Pass Through the Texture Taps
+ float deltax = 1.0/Texture0Info.x;
+ float deltay = 1.0/Texture0Info.y;
+
+ //Bottom Left
+ TexCoordBLL.x = TexCoord.s - deltax;
+ TexCoordBLL.y = TexCoord.t - deltay;
+
+ //Left
+ TexCoordBLL.z = TexCoord.s - deltax;
+ TexCoordBLL.w = TexCoord.t;
+
+ //Top Left
+ TexCoordTLT.x = TexCoord.s - deltax;
+ TexCoordTLT.y = TexCoord.t + deltay;
+
+ //Top
+ TexCoordTLT.z = TexCoord.s;
+ TexCoordTLT.w = TexCoord.t + deltay;
+
+ //Upper Right
+ TexCoordTRR.x = TexCoord.s + deltax;
+ TexCoordTRR.y = TexCoord.t + deltay;
+
+ //Right
+ TexCoordTRR.z = TexCoord.s + deltax;
+ TexCoordTRR.w = TexCoord.t;
+
+ //Bottom Right
+ TexCoordBRB.x = TexCoord.s + deltax;
+ TexCoordBRB.y = TexCoord.t - deltay;
+
+ //Bottom
+ TexCoordBRB.z = TexCoord.s;
+ TexCoordBRB.w = TexCoord.t - deltay;
+}
+ </VertexShader>
+ <FragmentShader>
+void frag (void)
+{
+ vec4 centerTap = texture2D_0(TexCoord);
+ vec4 edgeTap = texture2D_0(TexCoordBLL.xy) +
+ texture2D_0(TexCoordBLL.zw) +
+ texture2D_0(TexCoordTLT.xy) +
+ texture2D_0(TexCoordTLT.zw) +
+ texture2D_0(TexCoordTRR.xy) +
+ texture2D_0(TexCoordTRR.zw) +
+ texture2D_0(TexCoordBRB.xy) +
+ texture2D_0(TexCoordBRB.zw);
+ vec3 edgeDetect = 8.0*(centerTap.rgb + -0.125*edgeTap.rgb);
+ edgeDetect = clamp(edgeDetect, 0.0, centerTap.a);
+
+ colorOutput(vec4(mix(centerTap.rgb, edgeDetect, amount), centerTap.a));
+}
+ </FragmentShader>
+ </Shader>
+ </Shaders>
+</Effect>
+
+
+
diff --git a/Studio/Content/Effect Library/Emboss.effect b/Studio/Content/Effect Library/Emboss.effect
new file mode 100644
index 0000000..876db3a
--- /dev/null
+++ b/Studio/Content/Effect Library/Emboss.effect
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <Property name="amount" formalName="Amount" min="0" max="0.01" default="0.003" description="Amount"/>
+ </MetaData>
+ <Shaders>
+ <Shared></Shared>
+ <VertexShaderShared></VertexShaderShared>
+ <FragmentShaderShared></FragmentShaderShared>
+ <Shader name="main">
+ <VertexShader></VertexShader>
+ <FragmentShader><![CDATA[
+
+void frag()
+{
+ vec4 origColor = texture2D_0(TexCoord);
+
+ float step_w = amount;
+ float step_h = amount;
+
+ vec4 t1 = texture2D_0(vec2(TexCoord.x - step_w, TexCoord.y - step_h));
+ vec4 t2 = texture2D_0(vec2(TexCoord.x, TexCoord.y - step_h));
+ vec4 t3 = texture2D_0(vec2(TexCoord.x - step_w, TexCoord.y));
+ vec4 t4 = texture2D_0(TexCoord);
+
+ vec3 rr = -4.0 * t1.rgb - 4.0 * t2.rgb - 4.0 * t3.rgb + 12.0 * t4.rgb;
+ float y = (rr.r + rr.g + rr.b) / 3.0;
+
+ vec4 result = vec4(vec3(y, y, y) + 0.3, origColor.a);
+
+ gl_FragColor = result;
+}
+ ]]></FragmentShader>
+ </Shader>
+ </Shaders>
+ <Passes>
+ <Pass shader="main" input="[source]" output="[dest]"/>
+ </Passes>
+</Effect>
+
+
diff --git a/Studio/Content/Effect Library/FXAA.effect b/Studio/Content/Effect Library/FXAA.effect
new file mode 100644
index 0000000..0434a38
--- /dev/null
+++ b/Studio/Content/Effect Library/FXAA.effect
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <Property name="Sprite" filter="nearest" clamp="clamp" type="Texture" />
+ </MetaData>
+ <Shaders>
+ <Shader name="RGBL">
+ <FragmentShader>
+void frag() // Create RGBL buffer
+{
+ vec4 color = texture2D_0(TexCoord);
+ color.a = dot(color.rgb, vec3(0.299, 0.587, 0.114));
+ gl_FragColor = color;
+}
+ </FragmentShader>
+ </Shader>
+ <Shader name="BLUR">
+ <FragmentShader>
+#define FXAA_VERION 311
+#define FXAA_PC 1
+#define FXAA_GLSL_130 1
+#define FXAA_LINEAR 1
+#if FXAA_VERION >= 311
+#include "Fxaa3_11.glsllib"
+#else
+#include "Fxaa3_8.glsllib"
+#endif
+
+void frag() // Mix the input blur and the depth texture with the sprite
+{
+ float sprightA = texture2D_Sprite( TexCoord ).a;
+#if FXAA_VERION >= 311
+ vec4 aaPix = FxaaPixelShader( TexCoord, vec4(0.0,0.0,0.0,0.0), Texture0, Texture0, Texture0, vec2(1.0 / DestSize.x, 1.0 / DestSize.y),
+ vec4(0,0,0,0), vec4(0,0,0,0), vec4(0,0,0,0), 0.75, 0.166, 0.0833, 8.0, 0.125, 0.05, vec4(0,0,0,0) );
+#else
+ vec4 aaPix = FxaaPixelShader( TexCoord, vec4(0.0,0.0,0.0,0.0), Texture0, vec2(1.0 / DestSize.x, 1.0 / DestSize.y), vec4(0,0,0,0) );
+#endif
+ gl_FragColor = vec4(aaPix.rgb, sprightA );
+}
+ </FragmentShader>
+ </Shader>
+ </Shaders>
+ <Passes>
+ <Buffer name="rgbl_buffer" type="ubyte" format="rgba" filter="linear" wrap="clamp" lifetime="frame"/>
+ <Pass shader="RGBL" input="[source]" output="rgbl_buffer"/>
+ <Pass shader="BLUR" input="rgbl_buffer">
+ <BufferInput param="Sprite" value="[source]"/>
+ </Pass>
+ </Passes>
+</Effect>
+
diff --git a/Studio/Content/Effect Library/FrameFlipper.effect b/Studio/Content/Effect Library/FrameFlipper.effect
new file mode 100644
index 0000000..6529e6c
--- /dev/null
+++ b/Studio/Content/Effect Library/FrameFlipper.effect
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <Property name="horflip" formalName="Flip Horizontally" type="Boolean" description="Flip Frame horizontally" default="False"/>
+ <Property name="verflip" formalName="Flip Vertically" type="Boolean" description="Flip Frame vertically" default="False"/>
+ </MetaData>
+ <Shaders>
+ <Shared></Shared>
+ <VertexShaderShared></VertexShaderShared>
+ <FragmentShaderShared></FragmentShaderShared>
+ <Shader name="main">
+ <VertexShader></VertexShader>
+ <FragmentShader><![CDATA[
+void frag()
+{
+ float yflippedCoord = 1.0 - TexCoord.y;
+ float xflippedCoord = 1.0 - TexCoord.x;
+ vec2 flippedCoord = TexCoord;
+
+ if(horflip || verflip){
+ if(horflip){
+ flippedCoord.x = xflippedCoord;
+ }
+ if(verflip){
+ flippedCoord.y = yflippedCoord;
+ }
+ }
+
+ vec4 origColor = texture2D_0(flippedCoord);
+
+ gl_FragColor = origColor;
+}
+ ]]></FragmentShader>
+ </Shader>
+ </Shaders>
+ <Passes>
+ <Pass shader="main" input="[source]" output="[dest]"/>
+ </Passes>
+</Effect>
+
+
diff --git a/Studio/Content/Effect Library/FullScreenTextureOverlay.effect b/Studio/Content/Effect Library/FullScreenTextureOverlay.effect
new file mode 100644
index 0000000..42be3f3
--- /dev/null
+++ b/Studio/Content/Effect Library/FullScreenTextureOverlay.effect
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <Property name="Overlay" formalName="Overlay Texture" description="Overlay texture" type="Texture" clamp="repeat" />
+ <Property name="overlay_repeat" formalName="Repeat" min="0" max="50" default="1" description="Times to repeat the image over screen."/>
+ </MetaData>
+ <Shaders>
+ <Shared></Shared>
+ <FragmentShaderShared></FragmentShaderShared>
+ <Shader name="main">
+ <VertexShader></VertexShader>
+ <FragmentShader><![CDATA[
+
+void frag()
+{
+ vec4 smp = texture(Overlay, TexCoord.xy*overlay_repeat);
+ gl_FragColor = smp;
+}
+ ]]></FragmentShader>
+ </Shader>
+ </Shaders>
+ <Passes>
+ <Pass shader="main" input="[source]" output="[dest]"/>
+ </Passes>
+</Effect>
+
+
diff --git a/Studio/Content/Effect Library/Gaussian Blur.effect b/Studio/Content/Effect Library/Gaussian Blur.effect
new file mode 100644
index 0000000..958d9fe
--- /dev/null
+++ b/Studio/Content/Effect Library/Gaussian Blur.effect
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <!--Quickly blurs by an adjustable amount. Gaussian refers to the bell-shaped curve that is generated when the shader applies a weighted average to the pixels. The Gaussian Blur filter adds low-frequency detail and can produce a hazy effect.-->
+ <Property name="BlurBias" formalName="Blurriness" min="0" max="10" default="2" description="0 = no blur\n10 = maximum blur" />
+ </MetaData>
+ <Shaders>
+ <Shared>
+#include "blur.glsllib"
+ </Shared>
+ <Shader name="HBLUR">
+ <VertexShader>
+void vert()
+{
+ SetupHorizontalGaussianBlur(Texture0Info.x, BlurBias, TexCoord);
+}
+ </VertexShader>
+ <FragmentShader>
+void frag()
+{
+ gl_FragColor = GaussianBlur(Texture0, Texture0Info.z);
+}
+ </FragmentShader>
+ </Shader>
+ <Shader name="VBLUR">
+ <VertexShader>
+void vert()
+{
+ SetupVerticalGaussianBlur(Texture0Info.y, BlurBias, TexCoord);
+}
+ </VertexShader>
+ <FragmentShader>
+
+void frag() // PS_Blur_Vertical_9tap
+{
+ vec4 fragColor = GaussianBlur(Texture0, Texture0Info.z);
+ colorOutput(fragColor);
+}
+ </FragmentShader>
+ </Shader>
+ </Shaders>
+ <Passes>
+ <Buffer name="temp_buffer" type="ubyte" format="rgba" filter="linear" wrap="clamp" size="1.0" lifetime="frame"/>
+ <Pass name="1" shader="HBLUR" input="[source]" output="temp_buffer"/>
+ <Pass name="2" shader="VBLUR" input="temp_buffer"/>
+ </Passes>
+</Effect>
+
diff --git a/Studio/Content/Effect Library/HDRBloomTonemap.effect b/Studio/Content/Effect Library/HDRBloomTonemap.effect
new file mode 100644
index 0000000..4424393
--- /dev/null
+++ b/Studio/Content/Effect Library/HDRBloomTonemap.effect
@@ -0,0 +1,282 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <Property name="GammaValue" formalName="Gamma" default="2.2" min="0.1" max="4"/>
+ <Property name="Exposure" min="-9" max="9" default="0"/>
+
+ <Property name="BloomThreshold" formalName="Bloom Threshold" description="Objects brighter than this will\ngenerate a bloom" default="1.0" />
+ <Property name="BlurFalloff" formalName="Bloom Falloff" description="Size of the bloom. Smaller\nnumber means larger bloom." default="0" min="0" max="10"/>
+
+ <Property name="TonemappingLerp" formalName="Effect Amount" description="Adjust between no change and\nfull effect." default="1" min="0" max="1" hidden="True"/>
+
+ <!--
+ <Property name="Key" formalName="Luminance Key" min="0" max="1" default="0.04"/>
+ <Property name="expLum" formalName="Exposure Luminance" default="2.0"/>
+ <Property name="TonemappingLod" formalName="Tonemapping adaptation rate" default="10" min="0" max="20"/>
+ -->
+ <Property name="ChannelThreshold" formalName="Channel Threshold" hidden="True" description="Channel threshold" default="1.0" />
+ <Property name="PoissonRotation" hidden="True" default="0"/>
+ <Property name="PoissonDistance" hidden="True" default="4"/>
+ <Property name="Downsample2" filter="linear" clamp="clamp" type="Texture" />
+ <Property name="Downsample4" filter="linear" clamp="clamp" type="Texture" />
+
+ </MetaData>
+ <Shaders>
+ <Shared>
+#include "blur.glsllib"
+#include "luminance.glsllib"
+float get_blur_falloff() { return exp2( -BlurFalloff ); }
+float get_exposure() { return exp2( Exposure ); }
+ </Shared>
+ <Shader name="LUMINOSITY">
+ <VertexShader>
+vec2 ToRotatedPoissonTexCoord( vec3 poisson, vec2 inputTex, vec2 inc, mat2 rotation )
+{
+ vec2 rotatedPoisson = rotation * vec2( poisson.xy );
+ return vec2( inputTex.x + rotatedPoisson.x * inc.x, inputTex.y + rotatedPoisson.y * inc.y );
+}
+
+void SetupPoissonBlurCoordsRotation(float inBlurAmount, vec2 inTexInfo, float inRotationRadians )
+{
+ float incX = inBlurAmount / inTexInfo.x;
+ float incY = inBlurAmount / inTexInfo.y;
+ float rotCos = cos( inRotationRadians );
+ float rotSin = sin( inRotationRadians );
+ mat2 rotMatrix = mat2( rotCos, rotSin, -rotSin, rotCos );
+ vec2 incVec = vec2( incX, incY );
+
+ TexCoord0 = ToRotatedPoissonTexCoord( poisson0, TexCoord, incVec, rotMatrix );
+ TexCoord1 = ToRotatedPoissonTexCoord( poisson1, TexCoord, incVec, rotMatrix );
+ TexCoord2 = ToRotatedPoissonTexCoord( poisson2, TexCoord, incVec, rotMatrix );
+ TexCoord3 = ToRotatedPoissonTexCoord( poisson3, TexCoord, incVec, rotMatrix );
+ TexCoord4 = ToRotatedPoissonTexCoord( poisson4, TexCoord, incVec, rotMatrix );
+ TexCoord5 = ToRotatedPoissonTexCoord( poisson5, TexCoord, incVec, rotMatrix );
+ TexCoord6 = ToRotatedPoissonTexCoord( poisson6, TexCoord, incVec, rotMatrix );
+ TexCoord7 = ToRotatedPoissonTexCoord( poisson7, TexCoord, incVec, rotMatrix );
+}
+// No op
+void vert ()
+{
+ SetupPoissonBlurCoordsRotation( 5.0 * get_blur_falloff(), Texture0Info.xy, 0.0);
+}
+ </VertexShader>
+ <FragmentShader>
+
+float cutoff( float color )
+{
+ return color >= BloomThreshold ? color : 0.0;
+}
+vec4 cutoffColor( sampler2D inSampler, vec2 texCoord )
+{
+ vec4 color = GetTextureValue(inSampler, texCoord, 1.0);
+ vec3 exposed_color = color.xyz * get_exposure();
+ vec3 cutoff_color = vec3( cutoff( color.x ), cutoff( color.y ), cutoff( color.z ) );
+ float pixelMult = dot( cutoff_color, cutoff_color ) > 0.0 ? 1.0 : 0.0;
+ return vec4( exposed_color.xyz, color.a ) * pixelMult;
+}
+
+vec4 PoissonBlur(sampler2D inSampler )
+{
+ //flatten out the poisson for this step, we really just want to smear.
+ float mult0 = 1.0;
+ float mult1 = mult0;
+ float mult2 = mult0;
+ float mult3 = mult2;
+ float mult4 = mult2;
+ float mult5 = mult2;
+ float mult6 = mult2;
+ float mult7 = mult2;
+
+ float multTotal = mult0 + mult1 + mult2 + mult3 + mult4 + mult5 + mult6 + mult7;
+ float multMultiplier = ( multTotal > 0.0 ? 1.0 / multTotal : 0.0 );
+
+ vec4 outColor = cutoffColor( inSampler, TexCoord0 ) * (mult0 * multMultiplier);
+ outColor += cutoffColor( inSampler, TexCoord1 ) * (mult1 * multMultiplier);
+ outColor += cutoffColor( inSampler, TexCoord2 ) * (mult2 * multMultiplier);
+ outColor += cutoffColor( inSampler, TexCoord3 ) * (mult3 * multMultiplier);
+ outColor += cutoffColor( inSampler, TexCoord4 ) * (mult4 * multMultiplier);
+ outColor += cutoffColor( inSampler, TexCoord5 ) * (mult5 * multMultiplier);
+ outColor += cutoffColor( inSampler, TexCoord6 ) * (mult6 * multMultiplier);
+ outColor += cutoffColor( inSampler, TexCoord7 ) * (mult7 * multMultiplier);
+ return outColor;
+}
+
+void frag() // Luminosity pass with exponential color channel decay based on the threshold above.
+{
+ gl_FragColor = PoissonBlur( Texture0 );
+}
+ </FragmentShader>
+ </Shader>
+ <Shader name="BLUR">
+ <VertexShader>
+
+vec2 ToRotatedPoissonTexCoord( vec3 poisson, vec2 inputTex, vec2 inc, mat2 rotation )
+{
+ vec2 rotatedPoisson = rotation * vec2( poisson.xy );
+ return vec2( inputTex.x + rotatedPoisson.x * inc.x, inputTex.y + rotatedPoisson.y * inc.y );
+}
+
+void SetupPoissonBlurCoordsRotation(float inBlurAmount, vec2 inTexInfo, float inRotationRadians )
+{
+ float incX = inBlurAmount / inTexInfo.x;
+ float incY = inBlurAmount / inTexInfo.y;
+ float rotCos = cos( inRotationRadians );
+ float rotSin = sin( inRotationRadians );
+ mat2 rotMatrix = mat2( rotCos, rotSin, -rotSin, rotCos );
+ vec2 incVec = vec2( incX, incY );
+
+ TexCoord0 = ToRotatedPoissonTexCoord( poisson0, TexCoord, incVec, rotMatrix );
+ TexCoord1 = ToRotatedPoissonTexCoord( poisson1, TexCoord, incVec, rotMatrix );
+ TexCoord2 = ToRotatedPoissonTexCoord( poisson2, TexCoord, incVec, rotMatrix );
+ TexCoord3 = ToRotatedPoissonTexCoord( poisson3, TexCoord, incVec, rotMatrix );
+ TexCoord4 = ToRotatedPoissonTexCoord( poisson4, TexCoord, incVec, rotMatrix );
+ TexCoord5 = ToRotatedPoissonTexCoord( poisson5, TexCoord, incVec, rotMatrix );
+ TexCoord6 = ToRotatedPoissonTexCoord( poisson6, TexCoord, incVec, rotMatrix );
+ TexCoord7 = ToRotatedPoissonTexCoord( poisson7, TexCoord, incVec, rotMatrix );
+}
+
+void vert ()
+{
+ SetupPoissonBlurCoordsRotation( PoissonDistance, Texture0Info.xy, PoissonRotation);
+}
+ </VertexShader>
+ <FragmentShader>
+vec4 PoissonBlur(sampler2D inSampler )
+{
+ float mult0 = (1.0 - poisson0.z);
+ float mult1 = (1.0 - poisson1.z);
+ float mult2 = (1.0 - poisson2.z);
+ float mult3 = (1.0 - poisson3.z);
+ float mult4 = (1.0 - poisson4.z);
+ float mult5 = (1.0 - poisson5.z);
+ float mult6 = (1.0 - poisson6.z);
+ float mult7 = (1.0 - poisson7.z);
+
+ float multTotal = mult0 + mult1 + mult2 + mult3 + mult4 + mult5 + mult6 + mult7;
+ float multMultiplier = ( multTotal > 0.0 ? 1.0 / multTotal : 0.0 ) * get_blur_falloff();
+
+ vec4 outColor = GetTextureValue( inSampler, TexCoord0, 1.0 ) * (mult0 * multMultiplier);
+ outColor += GetTextureValue( inSampler, TexCoord1, 1.0 ) * (mult1 * multMultiplier);
+ outColor += GetTextureValue( inSampler, TexCoord2, 1.0 ) * (mult2 * multMultiplier);
+ outColor += GetTextureValue( inSampler, TexCoord3, 1.0 ) * (mult3 * multMultiplier);
+ outColor += GetTextureValue( inSampler, TexCoord4, 1.0 ) * (mult4 * multMultiplier);
+ outColor += GetTextureValue( inSampler, TexCoord5, 1.0 ) * (mult5 * multMultiplier);
+ outColor += GetTextureValue( inSampler, TexCoord6, 1.0 ) * (mult6 * multMultiplier);
+ outColor += GetTextureValue( inSampler, TexCoord7, 1.0 ) * (mult7 * multMultiplier);
+ return outColor;
+}
+
+void frag()
+{
+ //Passing in 1.0 means the value will not get alpha-multiplied again
+ gl_FragColor = PoissonBlur( Texture0 );
+}
+ </FragmentShader>
+ </Shader>
+ <Shader name="COMBINER">
+ <FragmentShader>
+ /*
+
+float GetAdaptedLuminance( sampler2D inSampler )
+{
+
+ vec3 col = textureLod( inSampler, TexCoord, TonemappingLod).rgb;
+ return luminance( col );
+}
+
+vec3 GetTonemappedReinhard( sampler2D inSampler, vec3 inSource, vec3 inBlurred )
+{
+ // adapted luminance value
+ float adpLm = GetAdaptedLuminance( inSampler );
+ // luminance of current color
+ float curLm = luminance( inSource.rgb );
+ // relative luminance
+ float relLm = Key/adpLm;
+ // displayable value D
+ float D = (relLm * (1.0 + relLm/(expLum*expLum)) / (1.0 + relLm));
+ // tone map result
+ vec3 color = inBlurred.xyz * relLm;
+ //vec3 gamaColor = pow(color, vec3(1.0/2.2));
+
+ //return gamaColor;
+ return vec3(relLm, relLm, relLm );
+}
+
+vec3 GetTonemappedReinhardSimple( vec3 inSource, vec3 inBlurred )
+{
+ vec3 texColor = inBlurred * 1.0; // Hardcoded Exposure Adjustment
+ texColor = texColor/(1.0 + texColor);
+ vec3 retColor = pow( texColor, vec3(1.0/2.2) );
+ return retColor;
+}
+*/
+
+void frag()
+{
+ vec4 sourceColor = texture2D_0(TexCoord);
+
+
+ vec4 summation = texture2D_Downsample2(TexCoord)
+ + texture2D_Downsample4(TexCoord);
+
+ vec3 bloom_result = sourceColor.xyz * get_exposure() + summation.xyz;
+
+ //Threshold defines the white point for the image which shouldn't be adaptive.
+ vec3 thresholded = clamp( bloom_result.xyz, 0.0, ChannelThreshold ) / ChannelThreshold;
+
+ vec3 tonemapped = pow( thresholded, vec3( 1.0 / GammaValue ) );
+
+ vec3 final_color = mix( thresholded, tonemapped, TonemappingLerp );
+
+ float resultAlpha = max( summation.a, sourceColor.a );
+
+ gl_FragColor = vec4( final_color, resultAlpha );
+
+ /*
+ gl_FragColor = vec4( texture2D_Downsample2(TexCoord).xyz
+ , 1.0 );
+ */
+}
+ </FragmentShader>
+ </Shader>
+ <Shader name="Passthrough">
+ <VertexShader>
+void vert ()
+{
+}
+ </VertexShader>
+ <FragmentShader>
+void frag()
+{
+ //Passing in 1.0 means the value will not get alpha-multiplied again
+ gl_FragColor = GetTextureValue( Texture0, TexCoord, 1.0 );
+}
+ </FragmentShader>
+ </Shader>
+ </Shaders>
+ <Passes>
+ <Buffer name="luminosity_buffer2" format="source" filter="linear" wrap="clamp" size=".5" lifetime="scene"/>
+ <Buffer name="downsample_buffer2" format="source" filter="linear" wrap="clamp" size=".5" lifetime="scene"/>
+ <Buffer name="downsample_buffer4" format="source" filter="linear" wrap="clamp" size=".25" lifetime="scene"/>
+ <Pass shader="LUMINOSITY" input="[source]" output='downsample_buffer2' >
+ </Pass>
+ <Pass shader="LUMINOSITY" input="downsample_buffer2" output='luminosity_buffer2' >
+ </Pass>
+ <!--<Pass shader='Passthrough' input='luminosity_buffer2' />-->
+
+ <Pass shader="BLUR" input="luminosity_buffer2" output="downsample_buffer2">
+ <SetParam name="PoissonDistance" value="4"/>
+ <SetParam name="PoissonRotation" value="0"/>
+ </Pass>
+ <Pass shader="BLUR" input="luminosity_buffer2" output="downsample_buffer4">
+ <SetParam name="PoissonDistance" value="4"/>
+ <SetParam name="PoissonRotation" value="0.62831"/>
+ </Pass>
+ <Pass shader="COMBINER" input="[source]">
+ <BufferInput param="Downsample2" value="downsample_buffer2"/>
+ <BufferInput param="Downsample4" value="downsample_buffer4"/>
+ <RenderState name="Stencil" value="false"/>
+ </Pass>
+ </Passes>
+</Effect>
+
diff --git a/Studio/Content/Effect Library/LightTable.effect b/Studio/Content/Effect Library/LightTable.effect
new file mode 100644
index 0000000..91f5913
--- /dev/null
+++ b/Studio/Content/Effect Library/LightTable.effect
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <Property name="SurfDist" formalName="Distance to Surface" description="Distance from camera to the paper surface" default="100"/>
+ <Property name="BlurDist" formalName="Distance to Full Blur" description="Distance from the paper surface that\ncorresponds to fully blurred" default="100"/>
+ <Property name="MaxBlur" formalName="Max Blur Radius" description="Blur radius defined as 'full blur'" min="1" max="100" default="50"/>
+ <Property name="OverlayDif" formalName="Diffuse Texture" description="Texture overlay color for the paper surface" type="Texture" clamp="repeat" />
+ <Property name="OverlayTrn" formalName="Translucent Texture" description="Texture overlay translucency for the\npaper surface" type="Texture" clamp="repeat" />
+ <Property name="OverlayNrm" formalName="Normal Texture" description="Texture overlay normal for the paper\nsurface" type="Texture" clamp="repeat" />
+ <Property name="OverlayScale" formalName="Texture Scale" description="Texture overlay scaling factor" type="Float2" default="1 1"/>
+ <Property name="OverlayRot" formalName="Texture Rotation" description="Texture overlay rotation angle" default="0" min="0" max="360"/>
+ <Property name="OverlayTrans" formalName="Translucency blocking" description="How much translucency through the overlay" default="2.0"/>
+ <Property name="LightCol" formalName="Light Color" description="Color of the backlight" type="Color" default="1 1 1"/>
+ <Property name="LightBrt" formalName="Light Brightness" description="Brightness of the backlight" default="1.0"/>
+ <Property name="LightExp" formalName="Light Exposure" descriptoin="Pre-emptive exposure operation to prevent\nblowout" default="1.0"/>
+
+ <Property name="DimplePos" formalName="Dimple Position" description="On-screen position of a depth\n'pressure dimple'" type="Float2" default="0 0"/>
+ <Property name="DimpleDepth" formalName="Dimple Pressure" description="How deep the 'pressure dimple' goes" default="0"/>
+ <Property name="DimpleSize" formalName="Dimple Size" description="How big the pressure dimple is in\nonscreen pixels" default="1" min="1" max="1000"/>
+
+ <!-- Internal buffers plus a few extra options -->
+ <Property name="DepthSampler" type="Texture" filter="nearest" clamp="clamp"/>
+ <Property name="DistBuffer" type="Texture" filter="nearest" clamp="clamp"/>
+ <Property name="BlurBuffer" type="Texture" filter="nearest" clamp="clamp"/>
+ <Property name="SrcSampler" type="Texture" filter="linear" clamp="clamp"/>
+ <Property name="HalfSampler" type="Texture" filter="linear" clamp="clamp"/>
+ <Property name="BlurDebug" formalName="Debug Blur Amt" type="Boolean" default="False"/>
+ <Property name="DepthDebug" formalName="Debug Depth Map" type="Boolean" default="False"/>
+ </MetaData>
+<Shaders>
+ <Shared>
+#include "depthpass.glsllib"
+
+uniform vec2 CameraClipRange;
+ </Shared>
+ <Shader name="DOWNSAMPALPHA">
+ <FragmentShader>
+void frag()
+{
+ // Simple averaging blur, but makes sure to include the alpha channel from the blur weights
+ // Only need to do this once to actually set the alphas in the blur buffers.
+ vec4 smp0 = textureOffset(Texture0, TexCoord.xy, ivec2(-1,-1));
+ vec4 smp1 = textureOffset(Texture0, TexCoord.xy, ivec2(0,-1));
+ vec4 smp2 = textureOffset(Texture0, TexCoord.xy, ivec2(-1,0));
+ vec4 smp3 = texture(Texture0, TexCoord.xy);
+
+ smp0.w *= textureOffset(DistBuffer, TexCoord.xy, ivec2(-1,-1)).w;
+ smp1.w *= textureOffset(DistBuffer, TexCoord.xy, ivec2(0,-1)).w;
+ smp2.w *= textureOffset(DistBuffer, TexCoord.xy, ivec2(-1,0)).w;
+ smp3.w *= texture(DistBuffer, TexCoord.xy).w;
+
+ gl_FragColor = 0.25 * (smp0 + smp1 + smp2 + smp3);
+}
+ </FragmentShader>
+ </Shader>
+ <Shader name="DOWNSAMPLE">
+ <FragmentShader>
+void frag() // Simple averaging blur.
+{
+ vec4 smp0 = textureOffset(Texture0, TexCoord.xy, ivec2(-1,-1));
+ vec4 smp1 = textureOffset(Texture0, TexCoord.xy, ivec2(0,-1));
+ vec4 smp2 = textureOffset(Texture0, TexCoord.xy, ivec2(-1,0));
+ vec4 smp3 = texture(Texture0, TexCoord.xy);
+
+ gl_FragColor = 0.25 * (smp0 + smp1 + smp2 + smp3);
+}
+ </FragmentShader>
+ </Shader>
+ <Shader name="FINDBLURAMT">
+ <FragmentShader>
+void frag()
+{
+ float planeDepth = SurfDist;
+
+ vec2 dvec = gl_FragCoord.xy - vec2(DimplePos);
+ float dimple = dot(dvec, dvec) / (DimpleSize * DimpleSize);
+ planeDepth += exp2(-dimple) * DimpleDepth;
+
+ vec4 depthSample = texture(DepthSampler, TexCoord);
+ float depthVal = getDepthValue( depthSample, CameraClipRange );
+ float rawDepth = depthValueToLinearDistance( depthVal, CameraClipRange );
+
+ if (DepthDebug)
+ {
+ gl_FragColor = vec4( (rawDepth - CameraClipRange.x) / (CameraClipRange.y - CameraClipRange.x) );
+ return;
+ }
+
+ float blurAmt = smoothstep(0.0, 1.0, (rawDepth - planeDepth) / BlurDist);
+ gl_FragColor = vec4(blurAmt, blurAmt, blurAmt, 1.0 - blurAmt);
+}
+ </FragmentShader>
+ </Shader>
+ <Shader name="BLURX">
+ <FragmentShader>
+void frag()
+{
+ vec4 smp = texture(DistBuffer, TexCoord.xy);
+ float sigma = clamp(smp.x * MaxBlur * 0.25, 1.0, 25.0);
+ int smpCount = int(ceil( sigma ));
+ vec4 value = texture(BlurBuffer, TexCoord.xy);
+ float wtsum = 1.0;
+ for (int i = 1; i &lt;= smpCount; ++i)
+ {
+ // Base 2 Gaussian blur
+ float wt = float(i) / (sigma * 0.5);
+ wt = exp2( -wt*wt );
+ value += wt * textureOffset(BlurBuffer, TexCoord.xy, ivec2(-i,0));
+ value += wt * textureOffset(BlurBuffer, TexCoord.xy, ivec2(i,0));
+ wtsum += wt * 2.0;
+ }
+
+ gl_FragColor = value / wtsum;
+}
+ </FragmentShader>
+ </Shader>
+ <Shader name="BLURY">
+ <FragmentShader>
+void frag()
+{
+ vec4 smp = texture(DistBuffer, TexCoord.xy);
+
+ float sigma = clamp(smp.x * MaxBlur * 0.25, 1.0, 25.0);
+ int smpCount = int(ceil( sigma ));
+ vec4 value = texture(BlurBuffer, TexCoord.xy);
+ value.w *= smp.w;
+ float wtsum = 1.0;
+ for (int i = 1; i &lt;= smpCount; ++i)
+ {
+ // Base 2 Gaussian blur
+ float wt = float(i) / (sigma * 0.5);
+ wt = exp2( -wt*wt );
+ value += wt * textureOffset(BlurBuffer, TexCoord.xy, ivec2(0,-i));
+ value += wt * textureOffset(BlurBuffer, TexCoord.xy, ivec2(0,i));
+ wtsum += wt * 2.0;
+ }
+
+ gl_FragColor = value / wtsum;
+}
+ </FragmentShader>
+ </Shader>
+ <Shader name="COMBINE">
+ <FragmentShader>
+void frag()
+{
+ float blurFac = texture(DistBuffer, TexCoord.xy).x;
+ float lod = log2(MaxBlur * blurFac);
+ float fac0 = clamp(lod, 0.0, 1.0);
+ float fac1 = clamp(lod-1.0, 0.0, 1.0);
+
+ if (BlurDebug || DepthDebug)
+ {
+ gl_FragColor = vec4(blurFac);
+ return;
+ }
+
+ vec4 result = texture(SrcSampler, TexCoord.xy);
+ vec4 lvl1 = texture(HalfSampler, TexCoord.xy);
+ vec4 fullBlr = texture(BlurBuffer, TexCoord.xy);
+
+ // Basically this says that if the blur factor is really small (less than 2 pixels)
+ // we favor the full resolution. If it's between 2 and 4 pixels, we favor the half-res
+ // version (which is like one mip level down)... anything beyond that, we use the bottom
+ // level which actually has the proper local blur.
+ result = mix(mix(result, lvl1, fac0), fullBlr, fac1);
+
+ // Transform the texture (assuming rotation about the center of the texture)
+ float cosX = cos(OverlayRot * 0.01745329251);
+ float sinX = sin(OverlayRot * 0.01745329251);
+ mat3x3 texMat = mat3x3( 1.0, 0.0, -0.5, 0.0, 1.0, -0.5, 0.0, 0.0, 1.0 );
+ texMat *= mat3x3( cosX, -sinX, 0.0, sinX, cosX, 0.0, 0.0, 0.0, 1.0);
+ texMat *= mat3x3( 1.0, 0.0, 0.5, 0.0, 1.0, 0.5, 0.0, 0.0, 1.0 );
+ texMat *= mat3x3( OverlayScale.x, 0.0, 0.0, 0.0, OverlayScale.y, 0.0, 0.0, 0.0, 1.0);
+ vec3 texForm = texMat * vec3(TexCoord.xy, 1.0);
+ vec4 overSmp = texture(OverlayDif, texForm.xy);
+ float overTrn = 1.0 - texture(OverlayTrn, texForm.xy).x;
+ float nDotL = (texture(OverlayNrm, texForm.xy).z - 0.5) * 2.0;
+
+ // Want to see how much of a "difference" there is between the light
+ // color and the object color.
+ // We are basically acting as if the objects on the layer are occluders
+ // so the alpha as a result of blurring is like a transparency.
+ // The behavior is that the brighter the light is, the more of a "gap" there is
+ vec3 backlight = LightCol.rgb * LightBrt;
+
+ // Assume that the color map I'm using already tells us what N.dot.L is (for now)
+ float translucency = exp2( -overTrn * OverlayTrans );
+
+// vec3 colorDelta = backlight - result.rgb;
+// float deltaC = dot(colorDelta, colorDelta) * (1.0 - result.w) * LightBrt / LightExp;
+// result.rgb -= result.rgb * smoothstep(deltaC, 1.0, result.w);
+
+// gl_FragColor = vec4( result.rgb, 1.0 );
+// return;
+
+ backlight *= mix(vec3(1.0), result.rgb, result.w);
+ backlight *= nDotL * translucency * overSmp.rgb;
+
+ backlight = vec3(1.0) - exp2(-6.28*backlight/LightExp);
+
+ gl_FragColor = vec4(backlight, 1.0);
+}
+ </FragmentShader>
+ </Shader>
+</Shaders>
+<Passes>
+ <Buffer name="halfBuffer" type="ubyte" format="rgba" filter="linear" wrap="clamp" size=".5" lifetime="frame"/>
+ <Buffer name="qtrBuffer" type="ubyte" format="rgba" filter="linear" wrap="clamp" size=".25" lifetime="frame"/>
+ <Buffer name="tempqtr" type="ubyte" format="rgba" filter="linear" wrap="clamp" size=".25" lifetime="frame"/>
+ <Buffer name="blurweights" type="ubyte" format="rgba" filter="linear" wrap="clamp" size="1" lifetime="frame"/>
+ <Pass shader="FINDBLURAMT" output="blurweights">
+ <DepthInput param="DepthSampler"/>
+ </Pass>
+ <Pass shader="DOWNSAMPALPHA" input="[source]" output="halfBuffer">
+ <BufferInput param="DistBuffer" value="blurweights" />
+ </Pass>
+ <Pass shader="DOWNSAMPLE" input="halfBuffer" output="qtrBuffer"/>
+ <Pass shader="BLURX" output="tempqtr">
+ <BufferInput param="BlurBuffer" value="qtrBuffer" />
+ <BufferInput param="DistBuffer" value="blurweights" />
+ </Pass>
+ <Pass shader="BLURY" output="qtrBuffer">
+ <BufferInput param="BlurBuffer" value="tempqtr" />
+ <BufferInput param="DistBuffer" value="blurweights" />
+ </Pass>
+ <Pass shader="COMBINE">
+ <BufferInput param="SrcSampler" value="[source]" />
+ <BufferInput param="HalfSampler" value="halfBuffer" />
+ <BufferInput param="BlurBuffer" value="qtrBuffer" />
+ <BufferInput param="DistBuffer" value="blurweights" />
+ </Pass>
+</Passes>
+</Effect>
diff --git a/Studio/Content/Effect Library/Motion Blur.effect b/Studio/Content/Effect Library/Motion Blur.effect
new file mode 100644
index 0000000..6d8d4cf
--- /dev/null
+++ b/Studio/Content/Effect Library/Motion Blur.effect
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <!--Create an apparent streaking for rapidly moving objects in the layer.-->
+ <Property name="fadeAmount" formalName="Fade Amount" min="0" max="1" default=".05" description="0 = object trails persist\n1.0 = object trails fade out\nimmediately (no trail)" />
+ <Property name="GlowSampler" type="Texture" filter="nearest" clamp="clamp" />
+ <Property name="Sprite" type="Texture" filter="nearest" clamp="clamp" />
+ </MetaData>
+ <Shaders>
+ <Shared>
+#include "blur.glsllib"
+ </Shared>
+
+ <Shader name="HBLUR">
+ <VertexShader>
+void vert()
+{
+ SetupHorizontalGaussianBlur3Tap( Texture0Info.x, 1.0, TexCoord );
+}
+ </VertexShader>
+ <FragmentShader>
+void frag()
+{
+ vec4 src = texture2D_0(TexCoord);
+
+ float Trailfade = 1.0 - fadeAmount;
+ vec4 OutCol = GaussianBlur3TapPremultiplied( GlowSampler ) * Trailfade;
+
+ // change the color so that it looks different. saturate it a bit.
+ float srcSum = dot(vec3(1.0), src.rgb);
+ src.rgb = src.rgb * 0.7 + vec3(srcSum,srcSum,srcSum) * 0.3;
+ gl_FragColor.rgb = (1.0 - src.a) * OutCol.rgb + src.rgb;
+ gl_FragColor.a = src.a + OutCol.a;
+}
+ </FragmentShader>
+ </Shader>
+ <Shader name="VBLUR">
+ <VertexShader>
+void vert()
+{
+ SetupVerticalGaussianBlur3Tap( Texture0Info.y, 1.0, TexCoord );
+}
+ </VertexShader>
+ <FragmentShader>
+void frag() // PS_Blur_Vertical
+{
+ vec4 OutCol = GaussianBlur3TapPremultiplied( Texture0 );
+ gl_FragColor = OutCol;
+}
+ </FragmentShader>
+ </Shader>
+ <Shader name="BLEND">
+ <FragmentShader>
+void frag()
+{
+ vec4 src = texture2D_0(TexCoord);
+ vec4 dst = texture2D_Sprite(TexCoord);
+
+ colorOutput(src * (1.0-dst.a) + dst);
+}
+ </FragmentShader>
+ </Shader>
+ </Shaders>
+ <Passes>
+ <Buffer name="glow_buffer" type="ubyte" format="rgba" filter="linear" wrap="clamp" size=".25" lifetime="scene"/>
+ <Buffer name="temp_buffer" type="ubyte" format="rgba" filter="linear" wrap="clamp" size=".25" lifetime="frame"/>
+
+ <Pass name="1" shader="HBLUR" input="[source]" output="temp_buffer">
+ <BufferInput param="GlowSampler" value="glow_buffer"/>
+ </Pass>
+ <Pass name="2" shader="VBLUR" input="temp_buffer" output="glow_buffer"/>
+ <Pass name="pass3_Composite" shader="BLEND" input="glow_buffer">
+ <BufferInput param="Sprite" value="[source]"/>
+ </Pass>
+ </Passes>
+</Effect>
diff --git a/Studio/Content/Effect Library/SCurveTonemap.effect b/Studio/Content/Effect Library/SCurveTonemap.effect
new file mode 100644
index 0000000..fc0259b
--- /dev/null
+++ b/Studio/Content/Effect Library/SCurveTonemap.effect
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <Property name="Shoulder" formalName="Shoulder Slope" type="Float" default="1" min="0" max="3"/>
+ <Property name="ShoulderWt" formalName="Shoulder Emphasis" type="Float" default="0" min="-1" max="1"/>
+ <Property name="Toe" formalName="Toe Slope" type="Float" default="1" min="0" max="3"/>
+ <Property name="ToeWt" formalName="Toe Emphasis" type="Float" default="0" min="-1" max="1"/>
+ <Property name="Contrast" formalName="Contrast Boost" type="Float" default="0" min="-1" max="2"/>
+ <Property name="Saturation" formalName="Saturation Level" type="Float" default="1" min="0" max="2"/>
+ <Property name="GammaValue" formalName="Gamma" type="Float" default="2.2" min="0.1" max="8"/>
+ <Property name="UseExposure" formalName="Use Exposure" type="Boolean" default="False"/>
+ <Property name="WhiteVal" formalName="White Point" type="Float" default="1.0" min="0.01" max="128.0">
+ <ShowIfEqual property="UseExposure" value="False"/>
+ </Property>
+ <Property name="ExposeVal" formalName="Exposure Value" type="Float" default="1.0" min="0.01" max="16.0">
+ <ShowIfEqual property="UseExposure" value="True"/>
+ </Property>
+ </MetaData>
+ <Shaders>
+ <Shared>
+#include "luminance.glsllib"
+
+float remapLum( float inLum, float whitePt )
+{
+ return clamp( inLum / whitePt, 0.0, 1.0 );
+}
+
+float exposeLum( float inLum, float exposure )
+{
+ return 1.0 - exp2( -inLum / exposure );
+}
+
+vec3 gammaCorrect( vec3 inColor, float gammaExp )
+{
+ return pow( inColor, vec3( 1.0 / gammaExp ) );
+}
+
+vec3 adjSaturation( vec3 inRGB, float satFactor )
+{
+ // Must be done in linear space (before gamma correction)
+ float P = sqrt( luminance( inRGB * inRGB ) );
+ vec3 outCol;
+ outCol = (inRGB - vec3(P)) * satFactor;
+ outCol += vec3(P);
+ return outCol;
+}
+
+ </Shared>
+<Shader name="TONEMAP">
+<FragmentShader>
+float curveCompute( float inLum, float slope0, float slope1 )
+{
+ float a1 = slope0;
+ float a2 = 3.0 - 2.0 * slope0 - slope1;
+ float a3 = slope1 + slope0 - 2.0;
+
+ // Cubic curve fit. This results in a curve that is 0 where inColor is 0
+ // equals 1 when inColor is 1, and the derivative at 0 is slope0 and the
+ // derivative at 1 is slope1
+ return ((((a3 * inLum) + a2)*inLum) + a1)*inLum;
+}
+
+float toeEmphasize( float inParam )
+{
+ float a1 = 1.0 - ToeWt;
+ float a2 = 2.0 * ToeWt;
+ float a3 = -ToeWt;
+
+ return ((((a3 * inParam) + a2) * inParam) + a1) * inParam;
+}
+
+float shoulderEmphasize( float inParam )
+{
+ float a1 = 1.0;
+ float a2 = ShoulderWt;
+ float a3 = -ShoulderWt;
+
+ return ((((a3 * inParam) + a2) * inParam) + a1) * inParam;
+}
+
+void frag()
+{
+ // k = shadow slope, m = midtone slope, n = highlight slope
+ float k = Toe;
+ float m = 1.0 + Contrast;
+ float n = Shoulder;
+
+ //vec4 sourceColor = texture(SourceSampler, TexCoord);
+ vec4 sourceColor = texture(Texture0, TexCoord);
+ vec3 sourceSep = RGBToYPbPr(sourceColor.rgb);
+
+ float lum = sourceSep.r;
+
+ if (UseExposure)
+ lum = exposeLum( lum, ExposeVal );
+ else
+ lum = remapLum( lum, WhiteVal );
+
+ float param0 = toeEmphasize( 2.0 * lum ); // Parametrization for Curve Part 1
+ float param1 = shoulderEmphasize( 2.0 * lum - 1.0 ); // Parametrization for Curve Part 2
+
+ float lum0 = 0.5 * curveCompute( param0, k, m );
+ float lum1 = 0.5 * curveCompute( param1, m, n ) + 0.5;
+ sourceSep.r = (lum > 0.5) ? lum1 : lum0;
+
+ // Convert back to RGB and gamma correct
+ vec3 finalColor = YPbPrToRGB( sourceSep );
+ finalColor = gammaCorrect( adjSaturation( finalColor, Saturation ), GammaValue );
+ gl_FragColor = vec4( finalColor, sourceColor.a );
+}
+</FragmentShader>
+</Shader>
+ </Shaders>
+ <Passes>
+ <Pass shader="TONEMAP" input="[source]" />
+ </Passes>
+</Effect> \ No newline at end of file
diff --git a/Studio/Content/Effect Library/SMAA1X.effect b/Studio/Content/Effect Library/SMAA1X.effect
new file mode 100644
index 0000000..66ee8f6
--- /dev/null
+++ b/Studio/Content/Effect Library/SMAA1X.effect
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <Property name="searchTex" filter="nearest" clamp="clamp" type="Texture" default="./maps/effects/SearchTex-yflipped.png" hidden="True"/>
+ <Property name="areaTex" filter="linear" clamp="clamp" type="Texture" default="./maps/effects/AreaTex-yflipped.png" hidden="True"/>
+ <Property name="blendTex" filter="linear" clamp="clamp" type="Texture" hidden="True"/>
+ </MetaData>
+ <Shaders>
+ <Shared>
+vec2 pixelIncrements;
+#define SMAA_PIXEL_SIZE pixelIncrements
+#define SMAA_HLSL_3 0
+#define SMAA_HLSL_4 0
+#define SMAA_HLSL_4_1 0
+#define SMAA_GLSL_3 1
+#define SMAA_GLSL_4 0
+#define SMAA_PRESET_LOW 0
+#define SMAA_PRESET_MEDIUM 0
+#define SMAA_PRESET_HIGH 1
+#define SMAA_PRESET_ULTRA 0
+#define SMAA_PRESET_CUSTOM 0
+ vec2 pixelSizes;
+ </Shared>
+ <Shader name="EdgeDetect">
+ <VertexShader>
+#define SMAA_ONLY_COMPILE_VS 1
+#include "SMAA.glsllib"
+
+out float4 svPosition;
+out float4 offset[3];
+
+void vert ()
+{
+ pixelIncrements = vec2( 1.0 / Texture0Info.x, 1.0 / Texture0Info.y );
+ float4 tempOffset[3];
+ float4 tempPos;
+ SMAAEdgeDetectionVS(gl_Position, tempPos, TexCoord, tempOffset);
+
+ offset[0] = tempOffset[0];
+ offset[1] = tempOffset[1];
+ offset[2] = tempOffset[2];
+ svPosition = tempPos;
+}
+ </VertexShader>
+ <FragmentShader>
+#define SMAA_ONLY_COMPILE_PS 1
+#include "SMAA.glsllib"
+
+in float4 svPosition;
+in float4 offset[3];
+
+
+void frag()
+{
+ pixelIncrements = vec2( 1.0 / Texture0Info.x, 1.0 / Texture0Info.y );
+ gl_FragColor = SMAALumaEdgeDetectionPS(TexCoord, offset, Texture0);
+}
+ </FragmentShader>
+ </Shader>
+
+ <Shader name="BlendingWeightCalculation">
+
+ <VertexShader>
+#define SMAA_ONLY_COMPILE_VS 1
+#include "SMAA.glsllib"
+out float4 svPosition;
+out float4 offset[3];
+out float2 pixcoord;
+void vert()
+{
+ pixelIncrements = vec2( 1.0 / Texture0Info.x, 1.0 / Texture0Info.y );
+ float4 tempOffset[3];
+ float4 tempPos;
+ float2 tempPixCoord;
+ SMAABlendingWeightCalculationVS(gl_Position, tempPos, TexCoord, tempPixCoord, tempOffset);
+
+
+ offset[0] = tempOffset[0];
+ offset[1] = tempOffset[1];
+ offset[2] = tempOffset[2];
+ svPosition = tempPos;
+ pixcoord = tempPixCoord;
+}
+ </VertexShader>
+ <FragmentShader>
+#define SMAA_ONLY_COMPILE_PS 1
+#include "SMAA.glsllib"
+in float4 svPosition;
+in float4 offset[3];
+in float2 pixcoord;
+//Required for temporal
+int4 subsampleIndices;
+
+void frag()
+{
+ pixelIncrements = vec2( 1.0 / Texture0Info.x, 1.0 / Texture0Info.y );
+ gl_FragColor = SMAABlendingWeightCalculationPS(TexCoord, pixcoord, offset, Texture0, areaTex, searchTex, subsampleIndices);
+}
+ </FragmentShader>
+ </Shader>
+ <Shader name="NeighborhoodBlending">
+ <VertexShader>
+#define SMAA_ONLY_COMPILE_VS 1
+#include "SMAA.glsllib"
+
+out float4 svPosition;
+out float4 offset[2];
+
+void vert ()
+{
+ pixelIncrements = vec2( 1.0 / Texture0Info.x, 1.0 / Texture0Info.y );
+ float4 tempOffset[2];
+ float4 tempPos;
+ SMAANeighborhoodBlendingVS(gl_Position, tempPos, TexCoord, tempOffset);
+ offset[0] = tempOffset[0];
+ offset[1] = tempOffset[1];
+ svPosition = tempPos;
+}
+ </VertexShader>
+ <FragmentShader>
+#define SMAA_ONLY_COMPILE_PS 1
+#include "SMAA.glsllib"
+
+in float4 svPosition;
+in float4 offset[2];
+void frag()
+{
+ pixelIncrements = vec2( 1.0 / Texture0Info.x, 1.0 / Texture0Info.y );
+ gl_FragColor = SMAANeighborhoodBlendingPS(TexCoord, offset, Texture0, blendTex);
+}
+ </FragmentShader>
+ </Shader>
+ </Shaders>
+ <Passes>
+ <Buffer name="edges_buffer" type="ubyte" format="rg" filter="linear" wrap="clamp" lifetime="scene"/>
+ <Buffer name="blend_buffer" type="ubyte" format="rgba" filter="linear" wrap="clamp" lifetime="scene"/>
+ <Buffer name="stencil_buffer" format='depth24stencil8' lifetime="frame" />
+ <Pass shader="EdgeDetect" input='[source]' output='edges_buffer'>
+ <DepthStencil buffer='stencil_buffer' flags='clear-stencil' stencil-fail='replace' depth-fail='replace' depth-pass='replace' stencil-function='always' reference='1'/>
+ </Pass>
+ <Pass shader="BlendingWeightCalculation" input='edges_buffer' output='blend_buffer' >
+ <DepthStencil buffer='stencil_buffer' stencil-fail='keep' depth-fail='keep' depth-pass='keep' stencil-function='equal' reference='1'/>
+ </Pass>
+ <Pass shader='NeighborhoodBlending' input='[source]' >
+ <BufferInput param='blendTex' value="blend_buffer"/>
+ </Pass>
+ </Passes>
+</Effect>
+
diff --git a/Studio/Content/Effect Library/Screen Space AO.effect b/Studio/Content/Effect Library/Screen Space AO.effect
new file mode 100644
index 0000000..84da723
--- /dev/null
+++ b/Studio/Content/Effect Library/Screen Space AO.effect
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <Property name="FilterSize" formalName="Filter Size" description="Range to shoot samples for conversion" default="4"/>
+ <Property name="DistScale" formalName="Distance Scale" description="Divisor for distances during filtering;\nlarger equals more subtle" default="8"/>
+ <Property name="DistBias" formalName="Distance Bias" description="Depth bias to prevent self-shadowing artifacts" default="1"/>
+ <Property name="DebugView" formalName="Debug SSAO effect" type="Boolean" description="Allows you to see the effect of\nthe filter directly to help setup\nparameters" default="False"/>
+ <Property name="DepthSampler" type="Texture" filter="nearest" clamp="clamp"/>
+ <Property name="SourceSampler" type="Texture" filter="linear" clamp="clamp"/>
+ </MetaData>
+
+ <Shaders>
+
+ <Shader name="SSAO">
+ <FragmentShader>
+#include "depthpass.glsllib"
+uniform vec2 CameraClipRange;
+
+void frag( void )
+{
+ float ret = 16.0;
+
+ vec3 kernel[16];
+
+ // Not particularly random set of samples, I know, which means some risk
+ // of artifacts due to regularity.
+ kernel[0] = vec3(0.355512, -0.709318, -0.102371);
+ kernel[1] = vec3(0.534186, 0.71511, -0.115167);
+ kernel[2] = vec3(-0.87866, 0.157139, -0.115167);
+ kernel[3] = vec3(0.140679, -0.475516, -0.0639818);
+ kernel[4] = vec3(-0.0796121, 0.158842, -0.677075);
+ kernel[5] = vec3(-0.0759516, -0.101676, -0.483625);
+ kernel[6] = vec3(0.12493, -0.0223423, -0.483625);
+ kernel[7] = vec3(-0.0720074, 0.243395, -0.967251);
+ kernel[8] = vec3(-0.207641, 0.414286, 0.187755);
+ kernel[9] = vec3(-0.277332, -0.371262, 0.187755);
+ kernel[10] = vec3(0.63864, -0.114214, 0.262857);
+ kernel[11] = vec3(-0.184051, 0.622119, 0.262857);
+ kernel[12] = vec3(0.110007, -0.219486, 0.435574);
+ kernel[13] = vec3(0.235085, 0.314707, 0.696918);
+ kernel[14] = vec3(-0.290012, 0.0518654, 0.522688);
+ kernel[15] = vec3(0.0975089, -0.329594, 0.609803);
+
+ ivec2 iCoords = ivec2( gl_FragCoord.xy + vec2(0.5, 0.5) );
+ float depth = getDepthValue(texelFetch(DepthSampler, iCoords, 0), CameraClipRange);
+ depth = depthValueToLinearDistance( depth, CameraClipRange );
+
+ for( int i = 15; i >= 0; --i )
+ {
+ // Note -- this cheap 2D trick is partially correct, but what we really need is to
+ // get the actual position, shoot the ray in 3d and re-project to get the actual
+ // 3D distance between points.
+ vec3 ray = kernel[i] * FilterSize;
+ ivec2 newSamp = ivec2( iCoords + ray.xy );
+ float sampleDepth = getDepthValue( texelFetch(DepthSampler, newSamp, 0), CameraClipRange );
+ sampleDepth = depthValueToLinearDistance( sampleDepth, CameraClipRange );
+
+ // Occlusion is applied based on a Cauchy distribution filter
+ float occlDist = max(sampleDepth - depth - DistBias, 0.0) / DistScale;
+
+ // This gives us an occlusion based on distance where the closest stuff
+ // occludes the most, but the extra little subtraction of a yet tighter
+ // Cauchy lobe means that we avoid the super-close stuff in order to limit
+ // self occlusion. The 1.5 multiplier is to assure that the maximum possible
+ // effect of a given sample is 1.0 exactly.
+ float occlFactor = 1.0 / ( 1.0 + occlDist*occlDist*0.04 );
+ occlFactor -= 1.0 / ( 1.0 + occlDist*occlDist );
+ ret -= 1.5 * occlFactor;
+
+ }
+ ret /= 16.0;
+
+ vec4 backColor = texture2D_SourceSampler(TexCoord);
+ if (DebugView)
+ {
+ backColor = vec4( 1.0 );
+ }
+
+ gl_FragColor = vec4( ret,ret,ret, 1.0 ) * backColor;
+}
+ </FragmentShader>
+ </Shader>
+ </Shaders>
+ <Passes>
+ <Pass shader="SSAO">
+ <BufferInput value="[source]" param="SourceSampler" />
+ <DepthInput param="DepthSampler" />
+ </Pass>
+ </Passes>
+</Effect>
diff --git a/Studio/Content/Effect Library/Sepia.effect b/Studio/Content/Effect Library/Sepia.effect
new file mode 100644
index 0000000..3129e33
--- /dev/null
+++ b/Studio/Content/Effect Library/Sepia.effect
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <!--Name of the effect is implicitly the file stem with extension -->
+ <!--Metadata stands for properties, events, and handlers and has the same format as the viewer's metadata file
+ and the data inserted at the top of lua files-->
+ <MetaData>
+ <!--Properties are automatically translated into the effect format when we generate the effect's GLSL file -->
+ <!--Colorizes the image to a faded brown color, simulating old film coloration.-->
+ <Property name="amount" formalName="Amount" min="0" max="1" default="1" description="0 = no change to image\n1 = full sepia effect" />
+ </MetaData>
+ <!-- default shader doesn't need to be named-->
+ <Shaders>
+ <!-- an implicit #include "effect.glsllib" is done at the top of all the produced shader files -->
+ <!-- Shared sections are pasted at the top of the files after the uniform declarations. Here you put your
+ varying declarations as well as functions that all the shaders need to use-->
+ <!--Sepia doesn't share anything so all of the shared sections could be omitted and you would get the same
+ code-->
+ <Shared></Shared>
+ <!--Shared data that you want all vertex shaders to see -->
+ <VertexShaderShared></VertexShaderShared>
+ <!--Shared data that you all fragment shaders to see -->
+ <FragmentShaderShared></FragmentShaderShared>
+ <!-- shaders can have names. No name means the shader gets its integer index as its name-->
+ <Shader name="main">
+ <!-- Shaders can also have Shared sections that are shared between the vertex and fragment shaders
+ of only precisely this shader-->
+ <!--no vertex shader or empty vertex shader means just output a vert(){} for the vertex shader-->
+ <VertexShader></VertexShader>
+ <FragmentShader><![CDATA[
+void frag()
+{
+ mat3 sepiaMat = mat3(0.0);
+
+ sepiaMat[0][0] = 0.393;
+ sepiaMat[1][0] = 0.769;
+ sepiaMat[2][0] = 0.189;
+
+ sepiaMat[0][1] = 0.349;
+ sepiaMat[1][1] = 0.686;
+ sepiaMat[2][1] = 0.168;
+
+ sepiaMat[0][2] = 0.272;
+ sepiaMat[1][2] = 0.534;
+ sepiaMat[2][2] = 0.131;
+
+ vec4 origColor = texture2D_0(TexCoord);
+ vec3 sepiaColor = sepiaMat*origColor.rgb;
+ sepiaColor = clamp( sepiaColor.rgb, 0.0, origColor.a );
+
+ colorOutput(vec4(mix( origColor.rgb, sepiaColor, amount ), origColor.a));
+}
+ ]]></FragmentShader>
+ </Shader>
+ </Shaders>
+ <!-- if there is only one shader then we can assume there is only one pass and we can go from there -->
+ <!-- for this example, however, I am demonstrating the pass xml elements-->
+ <Passes>
+ <!-- single pass, input is the special source name and output is the special destination name which is assumed
+ for the last pass -->
+ <Pass shader="main" input="[source]" output="[dest]"/>
+ </Passes>
+</Effect>
+
+
diff --git a/Studio/Content/Effect Library/Stylize - Scatter.effect b/Studio/Content/Effect Library/Stylize - Scatter.effect
new file mode 100644
index 0000000..7bd30b5
--- /dev/null
+++ b/Studio/Content/Effect Library/Stylize - Scatter.effect
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <!--Scatters the pixels in a layer, creating a blurry or smeared appearance. Without changing the color of each individual pixel, the Scatter effect redistributes the pixels randomly, but in the same general area as their original positions.-->
+ <Property name="NoiseSamp" formalName="Noise" filter="linear" clamp="repeat" type="Texture" default="./maps/effects/brushnoise.png" hidden="True"/>
+ <Property name="Amount" formalName="Scatter Amount" min="0" max="127" default="20.0" description="Determines how much to scatter."/>
+ <Property name="dir" formalName="Grain" list="Both:Horizontal:Vertical" default="Both" description="The direction in which to scatter the\npixels, horizontally or vertically.\nSelect Both to scatter pixels in all directions."/>
+ <Property name="isRand" formalName="Randomize Every Frame" type="Boolean" default="False" description="Specifies whether scattering changes at\neach frame. To animate scattering without\nkeyframes, select the Randomize Every Frame\noption."/>
+ </MetaData>
+ <Shaders>
+ <Shader>
+ <FragmentShader>
+uniform float AppFrame; // frame number since app starts
+void frag (void)
+{
+ float size = 15.0;
+ float amount = Amount / 127.0 * 0.4;
+
+ vec2 uv = TexCoord * size;
+ if (isRand)
+ uv = fract(uv + 0.031 * AppFrame);
+
+ uv = texture2D_NoiseSamp(fract(uv)).xy - 0.5;
+
+ if (dir == 0) { // both directions
+ uv *= (vec2(1.5, 0.15) * amount);
+
+ } else if (dir == 1) { // x direction
+ uv *= (vec2(1.3, 0.0) * amount);
+
+ } else { // y direction
+ uv *= (vec2(0.0, 0.29) * amount);
+ }
+
+ uv += TexCoord;
+
+ // shift half of a pixel size of the source to avoid the artifact on upper right borders.
+ // FBO size is bigger than the sprite, so clamping to [0, 1] will introduce artifacts
+ // (when OpenGL glTexParameter is set to linear). Lets not rely on OpenGL to clamp. we
+ // do it here.
+ vec2 halfPixelSize = 0.5 / Texture0Info.xy;
+ colorOutput(texture2D_0(clamp(uv, halfPixelSize, 1.0-halfPixelSize)));
+}
+ </FragmentShader>
+ </Shader>
+ </Shaders>
+</Effect>
diff --git a/Studio/Content/Effect Library/Tilt Shift.effect b/Studio/Content/Effect Library/Tilt Shift.effect
new file mode 100644
index 0000000..ddd9f60
--- /dev/null
+++ b/Studio/Content/Effect Library/Tilt Shift.effect
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <Property name="FocusPos" formalName="Focus Position" description="Height of the focus bar in\nnormalized coordinates" min="0" max="1" default=".5"/>
+ <Property name="FocusWidth" formalName="Focus Width" description="Objects within this range of Focus Distance\nwill be in focus" min="0" max="1" default=".2"/>
+ <Property name="BlurDebug" formalName="Debug Rendering" type="Boolean" description="Allows you to see exactly how the Focus\nvariables work. Black objects are in\nfocus, white are blurred" default="False"/>
+ <Property name="BlurAmount" formalName="Blur Amount" description="Increase the amount of blur. Amounts\nabove 4 may cause artifacts" min="0" max="10" default="4" />
+ <Property name="SourceSampler" type="Texture" filter="linear" clamp="clamp"/>
+ <Property name="VerticalEffect" formalName="Vertical" type='Boolean' description="Makes the effect work vertically\ninstead of horizontally" default="False"/>
+ <Property name="InvertBlur" formalName="Invert Blur" type="Boolean" description="Inverts the blur area so the center\nis blurred vs. the outer" default="False"/>
+ </MetaData>
+ <Shaders>
+ <Shared>
+#include "blur.glsllib"
+
+float AdvancedGetTiltShiftMultiplier(vec2 inTexCoord, float inFocusBarHeight, float inFocusWidth, bool inVertical, bool inInvert )
+{
+ //For now, you can't rotate the focus blur but in time you will be able to.
+ float texPos = inVertical ? inTexCoord.x : inTexCoord.y;
+ float focusDiff = max( 0.0, abs( texPos - inFocusBarHeight ) - (inFocusWidth/2.0) ) / inFocusWidth;
+ float retval = clamp( focusDiff, 0.0, 1.0 );
+ return inInvert ? 1.0 - retval : retval;
+}
+
+ </Shared>
+ <Shader name="DOWNSAMPLE">
+ <VertexShader>
+void vert()
+{
+ SetupBoxBlurCoords(vec2(Texture0Info.xy));
+}
+ </VertexShader>
+ <FragmentShader>
+
+vec4 AdvancedBoxTiltShiftBlur( sampler2D inBlurSampler, float inBlurSamplerAlphaFlag
+ , float inFocusBarHeight, float inFocusWidth
+ , bool inVertical, bool inInvert )
+{
+ float mult0 = .25 * AdvancedGetTiltShiftMultiplier( TexCoord0, inFocusBarHeight, inFocusWidth, inVertical, inInvert );
+ float mult1 = .25 * AdvancedGetTiltShiftMultiplier( TexCoord1, inFocusBarHeight, inFocusWidth, inVertical, inInvert );
+ float mult2 = .25 * AdvancedGetTiltShiftMultiplier( TexCoord2, inFocusBarHeight, inFocusWidth, inVertical, inInvert );
+ float mult3 = .25 * AdvancedGetTiltShiftMultiplier( TexCoord3, inFocusBarHeight, inFocusWidth, inVertical, inInvert );
+ float multTotal = mult0 + mult1 + mult2 + mult3;
+ float totalDivisor = multTotal != 0.0 ? 1.0 / multTotal : 0.0;
+ vec4 OutCol = GetTextureValuePreMult(inBlurSampler, TexCoord0) * mult0;
+ OutCol += GetTextureValuePreMult(inBlurSampler, TexCoord1) * mult1;
+ OutCol += GetTextureValuePreMult(inBlurSampler, TexCoord2) * mult2;
+ OutCol += GetTextureValuePreMult(inBlurSampler, TexCoord3) * mult3;
+ return OutCol * totalDivisor;
+}
+void frag() // Simple averaging box blur.
+{
+ gl_FragColor = AdvancedBoxTiltShiftBlur(Texture0, Texture0Info.z, FocusPos, FocusWidth, VerticalEffect, InvertBlur );
+}
+ </FragmentShader>
+ </Shader>
+ <Shader name="BLUR">
+ <VertexShader>
+
+void vert()
+{
+ SetupPoissonBlurCoords( BlurAmount, DestSize.xy );
+}
+
+ </VertexShader>
+ <FragmentShader>
+
+vec4 AdvancedPoissonTiltShiftBlur(sampler2D inSampler, float inAlphaFlag, float inBarHeight, float inFocusWidth, bool inVertical, bool inInvert )
+{
+ float mult0 = (1.0 - poisson0.z) * AdvancedGetTiltShiftMultiplier( TexCoord0, inBarHeight, inFocusWidth, inVertical, inInvert );
+ float mult1 = (1.0 - poisson1.z) * AdvancedGetTiltShiftMultiplier( TexCoord1, inBarHeight, inFocusWidth, inVertical, inInvert );
+ float mult2 = (1.0 - poisson2.z) * AdvancedGetTiltShiftMultiplier( TexCoord2, inBarHeight, inFocusWidth, inVertical, inInvert );
+ float mult3 = (1.0 - poisson3.z) * AdvancedGetTiltShiftMultiplier( TexCoord3, inBarHeight, inFocusWidth, inVertical, inInvert );
+ float mult4 = (1.0 - poisson4.z) * AdvancedGetTiltShiftMultiplier( TexCoord4, inBarHeight, inFocusWidth, inVertical, inInvert );
+
+ float multTotal = mult0 + mult1 + mult2 + mult3 + mult4;
+ float multMultiplier = multTotal > 0.0 ? 1.0 / multTotal : 0.0;
+
+ vec4 outColor = GetTextureValuePreMult( inSampler, TexCoord0 ) * (mult0 * multMultiplier);
+ outColor += GetTextureValuePreMult( inSampler, TexCoord1 ) * (mult1 * multMultiplier);
+ outColor += GetTextureValuePreMult( inSampler, TexCoord2 ) * (mult2 * multMultiplier);
+ outColor += GetTextureValuePreMult( inSampler, TexCoord3 ) * (mult3 * multMultiplier);
+ outColor += GetTextureValuePreMult( inSampler, TexCoord4 ) * (mult4 * multMultiplier);
+ return outColor;
+}
+
+void frag() // Mix the input blur and the depth texture with the sprite
+{
+ float centerMultiplier = AdvancedGetTiltShiftMultiplier( TexCoord, FocusPos, FocusWidth, VerticalEffect, InvertBlur );
+ if ( BlurDebug )
+ {
+ gl_FragColor = vec4( centerMultiplier,centerMultiplier,centerMultiplier, 1.0 );
+ }
+ else
+ {
+ vec4 blurColor = AdvancedPoissonTiltShiftBlur(Texture0, Texture0Info.z, FocusPos, FocusWidth, VerticalEffect, InvertBlur );
+ gl_FragColor = mix( texture2D_SourceSampler(TexCoord), blurColor, centerMultiplier );
+ }
+}
+ </FragmentShader>
+ </Shader>
+ </Shaders>
+ <Passes>
+ <Buffer name="downsample_buffer" type="ubyte" format="rgba" filter="linear" wrap="clamp" size=".5" lifetime="frame"/>
+ <Pass shader="DOWNSAMPLE" input="[source]" output="downsample_buffer"/>
+ <Pass shader="BLUR" input="downsample_buffer">
+ <BufferInput value="[source]" param="SourceSampler" />
+ </Pass>
+ </Passes>
+</Effect>
+
diff --git a/Studio/Content/Effect Library/VignetteEffect.effect b/Studio/Content/Effect Library/VignetteEffect.effect
new file mode 100644
index 0000000..7fbf7db
--- /dev/null
+++ b/Studio/Content/Effect Library/VignetteEffect.effect
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Effect>
+ <MetaData>
+ <Property name="vig_color" formalName="Vignet Color" type="Color" default="0.5 0.5 0.5" description="The color to use for the Vignetting."/>
+ <Property name="vig_strength" formalName="Strength" min="0" max="15" default="15.0" description="Strength of Vignetting."/>
+ <Property name="vig_radius" formalName="Radius" min="0" max="5" default="0.35" description="Size of Vignetting."/>
+ </MetaData>
+ <Shaders>
+ <Shared></Shared>
+ <VertexShaderShared></VertexShaderShared>
+ <FragmentShaderShared></FragmentShaderShared>
+ <Shader name="main">
+ <VertexShader></VertexShader>
+ <FragmentShader><![CDATA[
+
+void frag()
+{
+ vec4 origColor = texture2D_0(TexCoord);
+ vec2 uv = TexCoord.xy;
+ vec2 center = vec2(0.5);
+
+ vec4 bg = origColor;
+
+ uv *= 1.0 - uv.yx;
+ float vig = uv.x * uv.y * vig_strength;
+ vig = pow(vig, vig_radius);
+
+ vec4 vigColor = vec4(vig_color.rgb, vig) * vig;
+ gl_FragColor = mix(origColor, vigColor, 1.0 - vig);
+}
+ ]]></FragmentShader>
+ </Shader>
+ </Shaders>
+ <Passes>
+ <Pass shader="main" input="[source]" output="[dest]"/>
+ </Passes>
+</Effect>
+
+
diff --git a/Studio/Content/Effect Library/maps/effects/AreaTex-yflipped.dds b/Studio/Content/Effect Library/maps/effects/AreaTex-yflipped.dds
new file mode 100644
index 0000000..2f248cb
--- /dev/null
+++ b/Studio/Content/Effect Library/maps/effects/AreaTex-yflipped.dds
Binary files differ
diff --git a/Studio/Content/Effect Library/maps/effects/AreaTex-yflipped.png b/Studio/Content/Effect Library/maps/effects/AreaTex-yflipped.png
new file mode 100644
index 0000000..1d20d45
--- /dev/null
+++ b/Studio/Content/Effect Library/maps/effects/AreaTex-yflipped.png
Binary files differ
diff --git a/Studio/Content/Effect Library/maps/effects/CircleBokeh.png b/Studio/Content/Effect Library/maps/effects/CircleBokeh.png
new file mode 100644
index 0000000..c7da55e
--- /dev/null
+++ b/Studio/Content/Effect Library/maps/effects/CircleBokeh.png
Binary files differ
diff --git a/Studio/Content/Effect Library/maps/effects/HexagonalBokeh.png b/Studio/Content/Effect Library/maps/effects/HexagonalBokeh.png
new file mode 100644
index 0000000..5a2a7e6
--- /dev/null
+++ b/Studio/Content/Effect Library/maps/effects/HexagonalBokeh.png
Binary files differ
diff --git a/Studio/Content/Effect Library/maps/effects/SearchTex-yflipped.png b/Studio/Content/Effect Library/maps/effects/SearchTex-yflipped.png
new file mode 100644
index 0000000..b2f664c
--- /dev/null
+++ b/Studio/Content/Effect Library/maps/effects/SearchTex-yflipped.png
Binary files differ
diff --git a/Studio/Content/Effect Library/maps/effects/brushnoise.dds b/Studio/Content/Effect Library/maps/effects/brushnoise.dds
new file mode 100644
index 0000000..4fdc704
--- /dev/null
+++ b/Studio/Content/Effect Library/maps/effects/brushnoise.dds
Binary files differ
diff --git a/Studio/Content/Effect Library/maps/effects/brushnoise.png b/Studio/Content/Effect Library/maps/effects/brushnoise.png
new file mode 100644
index 0000000..43e2034
--- /dev/null
+++ b/Studio/Content/Effect Library/maps/effects/brushnoise.png
Binary files differ
diff --git a/Studio/Content/Effect Library/maps/effects/noise.dds b/Studio/Content/Effect Library/maps/effects/noise.dds
new file mode 100644
index 0000000..fdb5f20
--- /dev/null
+++ b/Studio/Content/Effect Library/maps/effects/noise.dds
Binary files differ
diff --git a/Studio/Content/Effect Library/maps/effects/noise.png b/Studio/Content/Effect Library/maps/effects/noise.png
new file mode 100644
index 0000000..69dd166
--- /dev/null
+++ b/Studio/Content/Effect Library/maps/effects/noise.png
Binary files differ
diff --git a/Studio/Content/Effect Library/maps/effects/noise3.dds b/Studio/Content/Effect Library/maps/effects/noise3.dds
new file mode 100644
index 0000000..31156b5
--- /dev/null
+++ b/Studio/Content/Effect Library/maps/effects/noise3.dds
Binary files differ
diff --git a/Studio/Content/Effect Library/maps/effects/noise3.png b/Studio/Content/Effect Library/maps/effects/noise3.png
new file mode 100644
index 0000000..f4857de
--- /dev/null
+++ b/Studio/Content/Effect Library/maps/effects/noise3.png
Binary files differ
diff --git a/Studio/Content/Effect Library/maps/effects/noiseUniform.dds b/Studio/Content/Effect Library/maps/effects/noiseUniform.dds
new file mode 100644
index 0000000..760ed6c
--- /dev/null
+++ b/Studio/Content/Effect Library/maps/effects/noiseUniform.dds
Binary files differ
diff --git a/Studio/Content/Effect Library/maps/effects/noiseUniform.png b/Studio/Content/Effect Library/maps/effects/noiseUniform.png
new file mode 100644
index 0000000..c9f2969
--- /dev/null
+++ b/Studio/Content/Effect Library/maps/effects/noiseUniform.png
Binary files differ
diff --git a/Studio/Content/Effect Library/maps/effects/ps_cloudlet.png b/Studio/Content/Effect Library/maps/effects/ps_cloudlet.png
new file mode 100644
index 0000000..d7cc2d6
--- /dev/null
+++ b/Studio/Content/Effect Library/maps/effects/ps_cloudlet.png
Binary files differ
diff --git a/Studio/Content/Effect Library/maps/effects/ps_glowDisc.png b/Studio/Content/Effect Library/maps/effects/ps_glowDisc.png
new file mode 100644
index 0000000..5cca911
--- /dev/null
+++ b/Studio/Content/Effect Library/maps/effects/ps_glowDisc.png
Binary files differ
diff --git a/Studio/Content/Effect Library/maps/effects/ps_glowSphere.png b/Studio/Content/Effect Library/maps/effects/ps_glowSphere.png
new file mode 100644
index 0000000..15c3363
--- /dev/null
+++ b/Studio/Content/Effect Library/maps/effects/ps_glowSphere.png
Binary files differ
diff --git a/Studio/Content/Effect Library/maps/effects/ps_rectangle.png b/Studio/Content/Effect Library/maps/effects/ps_rectangle.png
new file mode 100644
index 0000000..3f13ad1
--- /dev/null
+++ b/Studio/Content/Effect Library/maps/effects/ps_rectangle.png
Binary files differ
diff --git a/Studio/Content/Effect Library/maps/effects/ps_sphere.dds b/Studio/Content/Effect Library/maps/effects/ps_sphere.dds
new file mode 100644
index 0000000..5f58782
--- /dev/null
+++ b/Studio/Content/Effect Library/maps/effects/ps_sphere.dds
Binary files differ
diff --git a/Studio/Content/Effect Library/maps/effects/ps_sphere.png b/Studio/Content/Effect Library/maps/effects/ps_sphere.png
new file mode 100644
index 0000000..774c1f4
--- /dev/null
+++ b/Studio/Content/Effect Library/maps/effects/ps_sphere.png
Binary files differ
diff --git a/Studio/Content/Effect Library/maps/effects/ps_star.png b/Studio/Content/Effect Library/maps/effects/ps_star.png
new file mode 100644
index 0000000..3cd9da4
--- /dev/null
+++ b/Studio/Content/Effect Library/maps/effects/ps_star.png
Binary files differ
diff --git a/Studio/Content/Effect Library/maps/effects/snownoise.dds b/Studio/Content/Effect Library/maps/effects/snownoise.dds
new file mode 100644
index 0000000..070ba68
--- /dev/null
+++ b/Studio/Content/Effect Library/maps/effects/snownoise.dds
Binary files differ
diff --git a/Studio/Content/Effect Library/maps/effects/snownoise.png b/Studio/Content/Effect Library/maps/effects/snownoise.png
new file mode 100644
index 0000000..1042b3d
--- /dev/null
+++ b/Studio/Content/Effect Library/maps/effects/snownoise.png
Binary files differ
diff --git a/Studio/Content/Effect Library/maps/effects/starBokeh.png b/Studio/Content/Effect Library/maps/effects/starBokeh.png
new file mode 100644
index 0000000..661d868
--- /dev/null
+++ b/Studio/Content/Effect Library/maps/effects/starBokeh.png
Binary files differ
diff --git a/Studio/Content/Effect Library/maps/effects/white.png b/Studio/Content/Effect Library/maps/effects/white.png
new file mode 100644
index 0000000..18cca06
--- /dev/null
+++ b/Studio/Content/Effect Library/maps/effects/white.png
Binary files differ
diff --git a/Studio/Content/Font Library/titilliumweb/DESCRIPTION.en_us.html b/Studio/Content/Font Library/titilliumweb/DESCRIPTION.en_us.html
new file mode 100644
index 0000000..99c6c3b
--- /dev/null
+++ b/Studio/Content/Font Library/titilliumweb/DESCRIPTION.en_us.html
@@ -0,0 +1,22 @@
+<p>Titillium is born inside the Accademia di Belle Arti di Urbino as a
+didactic project Course Type design of the Master of Visual Design Campi
+Visivi.</p>
+
+<p>The aim of the project is the creation of a collective fonts released under
+OFL. Each academic year, a dozen students work on the project, developing it
+further and solving problems. Any type designer interested in the amendment or
+revision of Titillium is invited to co-operate with us, or develop their own
+variants of the typeface according to the terms specified in the Open Font
+license. We also ask all graphic designers who use Titillium in their projects
+to <a href="mailto:segreteria@accademiadiurbino.it">email us some examples</a>
+of the typeface family in use, in order to prepare a case histories
+database.</p>
+
+<p>Three years after the birth of Titillium, the project is still evolving,
+and even we don’t know what it will become in the future.</p>
+
+<p>Special thanks go to:<br/>
+Prof. Luciano Perondi, design and curation<br/>
+Prof. Marcello Signorile, coordination<br/>
+Prof. Manuel Zanettin, web project supervision<br/>
+Diego Giusti, design of the first prototype</p> \ No newline at end of file
diff --git a/Studio/Content/Font Library/titilliumweb/METADATA.pb b/Studio/Content/Font Library/titilliumweb/METADATA.pb
new file mode 100644
index 0000000..e4faa35
--- /dev/null
+++ b/Studio/Content/Font Library/titilliumweb/METADATA.pb
@@ -0,0 +1,107 @@
+name: "Titillium Web"
+designer: "Multiple Designers"
+license: "OFL"
+category: "SANS_SERIF"
+date_added: "2012-10-01"
+fonts {
+ name: "Titillium Web"
+ style: "normal"
+ weight: 200
+ filename: "TitilliumWeb-ExtraLight.ttf"
+ post_script_name: "TitilliumWeb-Thin"
+ full_name: "Titillium WebThin"
+ copyright: "Copyright (c) 2009-2011 by Accademia di Belle Arti di Urbino (titillium@campivisivi.net) and students of MA course of Visual design. Some rights reserved."
+}
+fonts {
+ name: "Titillium Web"
+ style: "italic"
+ weight: 200
+ filename: "TitilliumWeb-ExtraLightItalic.ttf"
+ post_script_name: "TitilliumWeb-ThinItalic"
+ full_name: "Titillium WebThin Italic"
+ copyright: "Copyright (c) 2009-2011 by Accademia di Belle Arti di Urbino (titillium@campivisivi.net) and students of MA course of Visual design. Some rights reserved."
+}
+fonts {
+ name: "Titillium Web"
+ style: "normal"
+ weight: 300
+ filename: "TitilliumWeb-Light.ttf"
+ post_script_name: "TitilliumWeb-Light"
+ full_name: "Titillium WebLight"
+ copyright: "Copyright (c) 2009-2011 by Accademia di Belle Arti di Urbino (titillium@campivisivi.net) and students of MA course of Visual design. Some rights reserved."
+}
+fonts {
+ name: "Titillium Web"
+ style: "italic"
+ weight: 300
+ filename: "TitilliumWeb-LightItalic.ttf"
+ post_script_name: "TitilliumWeb-LightItalic"
+ full_name: "Titillium WebLight Italic"
+ copyright: "Copyright (c) 2009-2011 by Accademia di Belle Arti di Urbino (titillium@campivisivi.net) and students of MA course of Visual design. Some rights reserved."
+}
+fonts {
+ name: "Titillium Web"
+ style: "normal"
+ weight: 400
+ filename: "TitilliumWeb-Regular.ttf"
+ post_script_name: "TitilliumWeb-Regular"
+ full_name: "Titillium Web"
+ copyright: "Copyright (c) 2009-2011 by Accademia di Belle Arti di Urbino (titillium@campivisivi.net) and students of MA course of Visual design. Some rights reserved."
+}
+fonts {
+ name: "Titillium Web"
+ style: "italic"
+ weight: 400
+ filename: "TitilliumWeb-Italic.ttf"
+ post_script_name: "TitilliumWeb-Italic"
+ full_name: "Titillium WebItalic"
+ copyright: "Copyright (c) 2009-2011 by Accademia di Belle Arti di Urbino (titillium@campivisivi.net) and students of MA course of Visual design. Some rights reserved."
+}
+fonts {
+ name: "Titillium Web"
+ style: "normal"
+ weight: 600
+ filename: "TitilliumWeb-SemiBold.ttf"
+ post_script_name: "TitilliumWeb-SemiBold"
+ full_name: "Titillium WebSemiBold"
+ copyright: "Copyright (c) 2009-2011 by Accademia di Belle Arti di Urbino (titillium@campivisivi.net) and students of MA course of Visual design. Some rights reserved."
+}
+fonts {
+ name: "Titillium Web"
+ style: "italic"
+ weight: 600
+ filename: "TitilliumWeb-SemiBoldItalic.ttf"
+ post_script_name: "TitilliumWeb-SemiBoldItalic"
+ full_name: "Titillium WebSemiBold Italic"
+ copyright: "Copyright (c) 2009-2011 by Accademia di Belle Arti di Urbino (titillium@campivisivi.net) and students of MA course of Visual design. Some rights reserved."
+}
+fonts {
+ name: "Titillium Web"
+ style: "normal"
+ weight: 700
+ filename: "TitilliumWeb-Bold.ttf"
+ post_script_name: "TitilliumWeb-Bold"
+ full_name: "Titillium WebBold"
+ copyright: "Copyright (c) 2009-2011 by Accademia di Belle Arti di Urbino (titillium@campivisivi.net) and students of MA course of Visual design. Some rights reserved."
+}
+fonts {
+ name: "Titillium Web"
+ style: "italic"
+ weight: 700
+ filename: "TitilliumWeb-BoldItalic.ttf"
+ post_script_name: "TitilliumWeb-BoldItalic"
+ full_name: "Titillium WebBold Italic"
+ copyright: "Copyright (c) 2009-2011 by Accademia di Belle Arti di Urbino (titillium@campivisivi.net) and students of MA course of Visual design. Some rights reserved."
+}
+fonts {
+ name: "Titillium Web"
+ style: "normal"
+ weight: 900
+ filename: "TitilliumWeb-Black.ttf"
+ post_script_name: "TitilliumWeb-Black"
+ full_name: "Titillium WebBlack"
+ copyright: "Copyright (c) 2009-2011 by Accademia di Belle Arti di Urbino (titillium@campivisivi.net) and students of MA course of Visual design. Some rights reserved."
+}
+subsets: "menu"
+subsets: "latin"
+subsets: "latin-ext"
diff --git a/Studio/Content/Font Library/titilliumweb/OFL.txt b/Studio/Content/Font Library/titilliumweb/OFL.txt
new file mode 100644
index 0000000..bbaa23a
--- /dev/null
+++ b/Studio/Content/Font Library/titilliumweb/OFL.txt
@@ -0,0 +1,93 @@
+Copyright (c) 2009-2011 by Accademia di Belle Arti di Urbino and students of MA course of Visual design. Some rights reserved.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/Studio/Content/Font Library/titilliumweb/TitilliumWeb-Black.ttf b/Studio/Content/Font Library/titilliumweb/TitilliumWeb-Black.ttf
new file mode 100644
index 0000000..fc5c4b5
--- /dev/null
+++ b/Studio/Content/Font Library/titilliumweb/TitilliumWeb-Black.ttf
Binary files differ
diff --git a/Studio/Content/Font Library/titilliumweb/TitilliumWeb-Bold.ttf b/Studio/Content/Font Library/titilliumweb/TitilliumWeb-Bold.ttf
new file mode 100644
index 0000000..0af0fe7
--- /dev/null
+++ b/Studio/Content/Font Library/titilliumweb/TitilliumWeb-Bold.ttf
Binary files differ
diff --git a/Studio/Content/Font Library/titilliumweb/TitilliumWeb-BoldItalic.ttf b/Studio/Content/Font Library/titilliumweb/TitilliumWeb-BoldItalic.ttf
new file mode 100644
index 0000000..77425ea
--- /dev/null
+++ b/Studio/Content/Font Library/titilliumweb/TitilliumWeb-BoldItalic.ttf
Binary files differ
diff --git a/Studio/Content/Font Library/titilliumweb/TitilliumWeb-ExtraLight.ttf b/Studio/Content/Font Library/titilliumweb/TitilliumWeb-ExtraLight.ttf
new file mode 100644
index 0000000..2b506ef
--- /dev/null
+++ b/Studio/Content/Font Library/titilliumweb/TitilliumWeb-ExtraLight.ttf
Binary files differ
diff --git a/Studio/Content/Font Library/titilliumweb/TitilliumWeb-ExtraLightItalic.ttf b/Studio/Content/Font Library/titilliumweb/TitilliumWeb-ExtraLightItalic.ttf
new file mode 100644
index 0000000..c1be5ba
--- /dev/null
+++ b/Studio/Content/Font Library/titilliumweb/TitilliumWeb-ExtraLightItalic.ttf
Binary files differ
diff --git a/Studio/Content/Font Library/titilliumweb/TitilliumWeb-Italic.ttf b/Studio/Content/Font Library/titilliumweb/TitilliumWeb-Italic.ttf
new file mode 100644
index 0000000..42f2c10
--- /dev/null
+++ b/Studio/Content/Font Library/titilliumweb/TitilliumWeb-Italic.ttf
Binary files differ
diff --git a/Studio/Content/Font Library/titilliumweb/TitilliumWeb-Light.ttf b/Studio/Content/Font Library/titilliumweb/TitilliumWeb-Light.ttf
new file mode 100644
index 0000000..ca67971
--- /dev/null
+++ b/Studio/Content/Font Library/titilliumweb/TitilliumWeb-Light.ttf
Binary files differ
diff --git a/Studio/Content/Font Library/titilliumweb/TitilliumWeb-LightItalic.ttf b/Studio/Content/Font Library/titilliumweb/TitilliumWeb-LightItalic.ttf
new file mode 100644
index 0000000..2ea724f
--- /dev/null
+++ b/Studio/Content/Font Library/titilliumweb/TitilliumWeb-LightItalic.ttf
Binary files differ
diff --git a/Studio/Content/Font Library/titilliumweb/TitilliumWeb-Regular.ttf b/Studio/Content/Font Library/titilliumweb/TitilliumWeb-Regular.ttf
new file mode 100644
index 0000000..6da8219
--- /dev/null
+++ b/Studio/Content/Font Library/titilliumweb/TitilliumWeb-Regular.ttf
Binary files differ
diff --git a/Studio/Content/Font Library/titilliumweb/TitilliumWeb-SemiBold.ttf b/Studio/Content/Font Library/titilliumweb/TitilliumWeb-SemiBold.ttf
new file mode 100644
index 0000000..dfdcdbe
--- /dev/null
+++ b/Studio/Content/Font Library/titilliumweb/TitilliumWeb-SemiBold.ttf
Binary files differ
diff --git a/Studio/Content/Font Library/titilliumweb/TitilliumWeb-SemiBoldItalic.ttf b/Studio/Content/Font Library/titilliumweb/TitilliumWeb-SemiBoldItalic.ttf
new file mode 100644
index 0000000..b68a669
--- /dev/null
+++ b/Studio/Content/Font Library/titilliumweb/TitilliumWeb-SemiBoldItalic.ttf
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-1-mirror.png b/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-1-mirror.png
new file mode 100644
index 0000000..80b313c
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-1-mirror.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-1.png b/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-1.png
new file mode 100644
index 0000000..7b195d7
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-1.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-2-mirror.png b/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-2-mirror.png
new file mode 100644
index 0000000..2af3c6d
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-2-mirror.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-2.png b/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-2.png
new file mode 100644
index 0000000..4361272
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-2.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-3-mirror.png b/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-3-mirror.png
new file mode 100644
index 0000000..212ffaa
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-3-mirror.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-3.png b/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-3.png
new file mode 100644
index 0000000..3912277
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-3.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-4-mirror.png b/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-4-mirror.png
new file mode 100644
index 0000000..725f16a
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-4-mirror.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-4.png b/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-4.png
new file mode 100644
index 0000000..2df8229
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-4.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-reflected-1.png b/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-reflected-1.png
new file mode 100644
index 0000000..46d3382
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-reflected-1.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-reflected-2.png b/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-reflected-2.png
new file mode 100644
index 0000000..335f51a
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-reflected-2.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-reflected-3.png b/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-reflected-3.png
new file mode 100644
index 0000000..0c5c019
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-horizontal/horizontal-reflected-3.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-1-inverse.png b/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-1-inverse.png
new file mode 100644
index 0000000..26f56a3
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-1-inverse.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-1.png b/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-1.png
new file mode 100644
index 0000000..d0426ae
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-1.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-2-inverse.png b/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-2-inverse.png
new file mode 100644
index 0000000..9636fac
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-2-inverse.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-2.png b/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-2.png
new file mode 100644
index 0000000..e684345
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-2.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-3-inverse.png b/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-3-inverse.png
new file mode 100644
index 0000000..d02fa20
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-3-inverse.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-3.png b/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-3.png
new file mode 100644
index 0000000..c8f498f
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-3.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-4-inverse.png b/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-4-inverse.png
new file mode 100644
index 0000000..a6be42a
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-4-inverse.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-4.png b/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-4.png
new file mode 100644
index 0000000..7ee5ec7
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-4.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-5-inverse.png b/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-5-inverse.png
new file mode 100644
index 0000000..6063490
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-5-inverse.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-5.png b/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-5.png
new file mode 100644
index 0000000..fa44f1b
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-spherical/sphere-gradient-5.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-1-mirror.png b/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-1-mirror.png
new file mode 100644
index 0000000..7ad3eea
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-1-mirror.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-1.png b/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-1.png
new file mode 100644
index 0000000..539db23
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-1.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-2-mirror.png b/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-2-mirror.png
new file mode 100644
index 0000000..58c56cb
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-2-mirror.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-2.png b/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-2.png
new file mode 100644
index 0000000..4930262
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-2.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-3-mirror.png b/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-3-mirror.png
new file mode 100644
index 0000000..241f50d
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-3-mirror.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-3.png b/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-3.png
new file mode 100644
index 0000000..ab0a8aa
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-3.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-4-mirror.png b/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-4-mirror.png
new file mode 100644
index 0000000..29da8ca
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-4-mirror.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-4.png b/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-4.png
new file mode 100644
index 0000000..8f0de38
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-4.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-reflected-1.png b/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-reflected-1.png
new file mode 100644
index 0000000..ca40b4d
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-reflected-1.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-reflected-2.png b/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-reflected-2.png
new file mode 100644
index 0000000..62c826d
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-reflected-2.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-reflected-3.png b/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-reflected-3.png
new file mode 100644
index 0000000..ce2f4b4
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/gradients-vertical/vertical-reflected-3.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/circles-1.png b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/circles-1.png
new file mode 100644
index 0000000..62b35d1
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/circles-1.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/circles-2.png b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/circles-2.png
new file mode 100644
index 0000000..6594540
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/circles-2.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/circles-3.png b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/circles-3.png
new file mode 100644
index 0000000..a8e0861
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/circles-3.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/circles-4.png b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/circles-4.png
new file mode 100644
index 0000000..407ee80
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/circles-4.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-1.png b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-1.png
new file mode 100644
index 0000000..9956bef
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-1.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-2.png b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-2.png
new file mode 100644
index 0000000..8c1cd63
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-2.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-3.png b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-3.png
new file mode 100644
index 0000000..058fb0e
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-3.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-radial-1.png b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-radial-1.png
new file mode 100644
index 0000000..d79b233
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-radial-1.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-radial-2.png b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-radial-2.png
new file mode 100644
index 0000000..6c99681
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-radial-2.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-radial-3.png b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-radial-3.png
new file mode 100644
index 0000000..3836453
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-radial-3.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-ripple.png b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-ripple.png
new file mode 100644
index 0000000..2a505a4
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-ripple.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-twist.png b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-twist.png
new file mode 100644
index 0000000..0c918db
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rays-twist.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rounded-boxes-1.png b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rounded-boxes-1.png
new file mode 100644
index 0000000..ce45c18
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rounded-boxes-1.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rounded-boxes-2.png b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rounded-boxes-2.png
new file mode 100644
index 0000000..3c568b9
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rounded-boxes-2.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rounded-boxes-3.png b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rounded-boxes-3.png
new file mode 100644
index 0000000..b8a369f
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/rounded-boxes-3.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/splatter-1.png b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/splatter-1.png
new file mode 100644
index 0000000..458c620
--- /dev/null
+++ b/Studio/Content/Maps Library/Alpha Maps/misc alpha maps/splatter-1.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Automotive/indicators_icons.png b/Studio/Content/Maps Library/Automotive/indicators_icons.png
new file mode 100644
index 0000000..381065c
--- /dev/null
+++ b/Studio/Content/Maps Library/Automotive/indicators_icons.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Automotive/indicators_icons_extended.png b/Studio/Content/Maps Library/Automotive/indicators_icons_extended.png
new file mode 100644
index 0000000..75980ae
--- /dev/null
+++ b/Studio/Content/Maps Library/Automotive/indicators_icons_extended.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Automotive/large_tic_marks.png b/Studio/Content/Maps Library/Automotive/large_tic_marks.png
new file mode 100644
index 0000000..24c4268
--- /dev/null
+++ b/Studio/Content/Maps Library/Automotive/large_tic_marks.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Automotive/medium_tic_marks.png b/Studio/Content/Maps Library/Automotive/medium_tic_marks.png
new file mode 100644
index 0000000..b165ec3
--- /dev/null
+++ b/Studio/Content/Maps Library/Automotive/medium_tic_marks.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Automotive/small_tic_marks.png b/Studio/Content/Maps Library/Automotive/small_tic_marks.png
new file mode 100644
index 0000000..42d4e78
--- /dev/null
+++ b/Studio/Content/Maps Library/Automotive/small_tic_marks.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Bump Maps/bump.dds b/Studio/Content/Maps Library/Bump Maps/bump.dds
new file mode 100644
index 0000000..97ddbf4
--- /dev/null
+++ b/Studio/Content/Maps Library/Bump Maps/bump.dds
Binary files differ
diff --git a/Studio/Content/Maps Library/Bump Maps/bump.png b/Studio/Content/Maps Library/Bump Maps/bump.png
new file mode 100644
index 0000000..2ede489
--- /dev/null
+++ b/Studio/Content/Maps Library/Bump Maps/bump.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Bump Maps/rubber_hatch.dds b/Studio/Content/Maps Library/Bump Maps/rubber_hatch.dds
new file mode 100644
index 0000000..8c3b0a3
--- /dev/null
+++ b/Studio/Content/Maps Library/Bump Maps/rubber_hatch.dds
Binary files differ
diff --git a/Studio/Content/Maps Library/Bump Maps/rubber_hatch.png b/Studio/Content/Maps Library/Bump Maps/rubber_hatch.png
new file mode 100644
index 0000000..93966fc
--- /dev/null
+++ b/Studio/Content/Maps Library/Bump Maps/rubber_hatch.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Concepting Maps/Finger-idle.png b/Studio/Content/Maps Library/Concepting Maps/Finger-idle.png
new file mode 100644
index 0000000..2c988fe
--- /dev/null
+++ b/Studio/Content/Maps Library/Concepting Maps/Finger-idle.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Concepting Maps/Finger-pressureDown.png b/Studio/Content/Maps Library/Concepting Maps/Finger-pressureDown.png
new file mode 100644
index 0000000..0a60ef1
--- /dev/null
+++ b/Studio/Content/Maps Library/Concepting Maps/Finger-pressureDown.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Environments/LICENSE-OpenfootageNET.txt b/Studio/Content/Maps Library/Environments/LICENSE-OpenfootageNET.txt
new file mode 100644
index 0000000..eb66a5c
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/LICENSE-OpenfootageNET.txt
@@ -0,0 +1,7 @@
+All HDRI maps from come from www.openfootage.net and are licensed under
+a Creative Commons Attribution 4.0 International License.
+http://creativecommons.org/licenses/by/4.0/
+
+All files have been (slightly) renamed for consistency.
+The -1024 and -512 images are simply smaller versions, useful for
+improved performance (and decreased max specular shininess). \ No newline at end of file
diff --git a/Studio/Content/Maps Library/Environments/OpenfootageNET_Gerlos-1024.hdr b/Studio/Content/Maps Library/Environments/OpenfootageNET_Gerlos-1024.hdr
new file mode 100644
index 0000000..bc65d42
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/OpenfootageNET_Gerlos-1024.hdr
Binary files differ
diff --git a/Studio/Content/Maps Library/Environments/OpenfootageNET_Gerlos-512.hdr b/Studio/Content/Maps Library/Environments/OpenfootageNET_Gerlos-512.hdr
new file mode 100644
index 0000000..7119b26
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/OpenfootageNET_Gerlos-512.hdr
Binary files differ
diff --git a/Studio/Content/Maps Library/Environments/OpenfootageNET_Grado-1024.hdr b/Studio/Content/Maps Library/Environments/OpenfootageNET_Grado-1024.hdr
new file mode 100644
index 0000000..f58b29a
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/OpenfootageNET_Grado-1024.hdr
Binary files differ
diff --git a/Studio/Content/Maps Library/Environments/OpenfootageNET_Grado-512.hdr b/Studio/Content/Maps Library/Environments/OpenfootageNET_Grado-512.hdr
new file mode 100644
index 0000000..c653195
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/OpenfootageNET_Grado-512.hdr
Binary files differ
diff --git a/Studio/Content/Maps Library/Environments/OpenfootageNET_Hintersee-1024.hdr b/Studio/Content/Maps Library/Environments/OpenfootageNET_Hintersee-1024.hdr
new file mode 100644
index 0000000..41e6664
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/OpenfootageNET_Hintersee-1024.hdr
Binary files differ
diff --git a/Studio/Content/Maps Library/Environments/OpenfootageNET_Hintersee-512.hdr b/Studio/Content/Maps Library/Environments/OpenfootageNET_Hintersee-512.hdr
new file mode 100644
index 0000000..ae61081
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/OpenfootageNET_Hintersee-512.hdr
Binary files differ
diff --git a/Studio/Content/Maps Library/Environments/OpenfootageNET_Pinzgau-1024.hdr b/Studio/Content/Maps Library/Environments/OpenfootageNET_Pinzgau-1024.hdr
new file mode 100644
index 0000000..9e73ce7
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/OpenfootageNET_Pinzgau-1024.hdr
Binary files differ
diff --git a/Studio/Content/Maps Library/Environments/OpenfootageNET_Pinzgau-512.hdr b/Studio/Content/Maps Library/Environments/OpenfootageNET_Pinzgau-512.hdr
new file mode 100644
index 0000000..655a217
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/OpenfootageNET_Pinzgau-512.hdr
Binary files differ
diff --git a/Studio/Content/Maps Library/Environments/OpenfootageNET_Streetautumn-1024.hdr b/Studio/Content/Maps Library/Environments/OpenfootageNET_Streetautumn-1024.hdr
new file mode 100644
index 0000000..84be86c
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/OpenfootageNET_Streetautumn-1024.hdr
Binary files differ
diff --git a/Studio/Content/Maps Library/Environments/OpenfootageNET_Streetautumn-512.hdr b/Studio/Content/Maps Library/Environments/OpenfootageNET_Streetautumn-512.hdr
new file mode 100644
index 0000000..3f935c4
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/OpenfootageNET_Streetautumn-512.hdr
Binary files differ
diff --git a/Studio/Content/Maps Library/Environments/OpenfootageNET_Thumersbach-1024.hdr b/Studio/Content/Maps Library/Environments/OpenfootageNET_Thumersbach-1024.hdr
new file mode 100644
index 0000000..3072d3a
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/OpenfootageNET_Thumersbach-1024.hdr
Binary files differ
diff --git a/Studio/Content/Maps Library/Environments/OpenfootageNET_Thumersbach-512.hdr b/Studio/Content/Maps Library/Environments/OpenfootageNET_Thumersbach-512.hdr
new file mode 100644
index 0000000..4c33103
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/OpenfootageNET_Thumersbach-512.hdr
Binary files differ
diff --git a/Studio/Content/Maps Library/Environments/OpenfootageNET_fieldairport-1024.hdr b/Studio/Content/Maps Library/Environments/OpenfootageNET_fieldairport-1024.hdr
new file mode 100644
index 0000000..e231281
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/OpenfootageNET_fieldairport-1024.hdr
Binary files differ
diff --git a/Studio/Content/Maps Library/Environments/OpenfootageNET_fieldairport-512.hdr b/Studio/Content/Maps Library/Environments/OpenfootageNET_fieldairport-512.hdr
new file mode 100644
index 0000000..abdebdb
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/OpenfootageNET_fieldairport-512.hdr
Binary files differ
diff --git a/Studio/Content/Maps Library/Environments/OpenfootageNET_garage-1024.hdr b/Studio/Content/Maps Library/Environments/OpenfootageNET_garage-1024.hdr
new file mode 100644
index 0000000..01e9e38
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/OpenfootageNET_garage-1024.hdr
Binary files differ
diff --git a/Studio/Content/Maps Library/Environments/OpenfootageNET_garage-512.hdr b/Studio/Content/Maps Library/Environments/OpenfootageNET_garage-512.hdr
new file mode 100644
index 0000000..015b478
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/OpenfootageNET_garage-512.hdr
Binary files differ
diff --git a/Studio/Content/Maps Library/Environments/OpenfootageNET_lowerAustria01-1024.hdr b/Studio/Content/Maps Library/Environments/OpenfootageNET_lowerAustria01-1024.hdr
new file mode 100644
index 0000000..ac513a4
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/OpenfootageNET_lowerAustria01-1024.hdr
Binary files differ
diff --git a/Studio/Content/Maps Library/Environments/OpenfootageNET_lowerAustria01-512.hdr b/Studio/Content/Maps Library/Environments/OpenfootageNET_lowerAustria01-512.hdr
new file mode 100644
index 0000000..df12f02
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/OpenfootageNET_lowerAustria01-512.hdr
Binary files differ
diff --git a/Studio/Content/Maps Library/Environments/OpenfootageNET_trainstation-1024.hdr b/Studio/Content/Maps Library/Environments/OpenfootageNET_trainstation-1024.hdr
new file mode 100644
index 0000000..e891be8
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/OpenfootageNET_trainstation-1024.hdr
Binary files differ
diff --git a/Studio/Content/Maps Library/Environments/OpenfootageNET_trainstation-512.hdr b/Studio/Content/Maps Library/Environments/OpenfootageNET_trainstation-512.hdr
new file mode 100644
index 0000000..dec5040
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/OpenfootageNET_trainstation-512.hdr
Binary files differ
diff --git a/Studio/Content/Maps Library/Environments/OpenfootageNet_LADEFENSE-1024.hdr b/Studio/Content/Maps Library/Environments/OpenfootageNet_LADEFENSE-1024.hdr
new file mode 100644
index 0000000..55d4107
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/OpenfootageNet_LADEFENSE-1024.hdr
Binary files differ
diff --git a/Studio/Content/Maps Library/Environments/OpenfootageNet_LADEFENSE-512.hdr b/Studio/Content/Maps Library/Environments/OpenfootageNet_LADEFENSE-512.hdr
new file mode 100644
index 0000000..8c66ff8
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/OpenfootageNet_LADEFENSE-512.hdr
Binary files differ
diff --git a/Studio/Content/Maps Library/Environments/TestEnvironment-1024.hdr b/Studio/Content/Maps Library/Environments/TestEnvironment-1024.hdr
new file mode 100644
index 0000000..34bd6b6
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/TestEnvironment-1024.hdr
Binary files differ
diff --git a/Studio/Content/Maps Library/Environments/TestEnvironment-2048.hdr b/Studio/Content/Maps Library/Environments/TestEnvironment-2048.hdr
new file mode 100644
index 0000000..6213f54
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/TestEnvironment-2048.hdr
Binary files differ
diff --git a/Studio/Content/Maps Library/Environments/TestEnvironment-512.hdr b/Studio/Content/Maps Library/Environments/TestEnvironment-512.hdr
new file mode 100644
index 0000000..5885a91
--- /dev/null
+++ b/Studio/Content/Maps Library/Environments/TestEnvironment-512.hdr
Binary files differ
diff --git a/Studio/Content/Maps Library/Logos/Qt/QT-badge.png b/Studio/Content/Maps Library/Logos/Qt/QT-badge.png
new file mode 100644
index 0000000..0486310
--- /dev/null
+++ b/Studio/Content/Maps Library/Logos/Qt/QT-badge.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Logos/Qt/QT-symbol-flatWhite.png b/Studio/Content/Maps Library/Logos/Qt/QT-symbol-flatWhite.png
new file mode 100644
index 0000000..9b718ec
--- /dev/null
+++ b/Studio/Content/Maps Library/Logos/Qt/QT-symbol-flatWhite.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Logos/Qt/QT-symbol.png b/Studio/Content/Maps Library/Logos/Qt/QT-symbol.png
new file mode 100644
index 0000000..752a2e2
--- /dev/null
+++ b/Studio/Content/Maps Library/Logos/Qt/QT-symbol.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Shapes/circles/circle-128X128.png b/Studio/Content/Maps Library/Shapes/circles/circle-128X128.png
new file mode 100644
index 0000000..67da57e
--- /dev/null
+++ b/Studio/Content/Maps Library/Shapes/circles/circle-128X128.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Shapes/circles/circle-256X256.png b/Studio/Content/Maps Library/Shapes/circles/circle-256X256.png
new file mode 100644
index 0000000..bf79cf9
--- /dev/null
+++ b/Studio/Content/Maps Library/Shapes/circles/circle-256X256.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Shapes/circles/circle-32X32.png b/Studio/Content/Maps Library/Shapes/circles/circle-32X32.png
new file mode 100644
index 0000000..b23983f
--- /dev/null
+++ b/Studio/Content/Maps Library/Shapes/circles/circle-32X32.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Shapes/circles/circle-64X64.png b/Studio/Content/Maps Library/Shapes/circles/circle-64X64.png
new file mode 100644
index 0000000..88d2b89
--- /dev/null
+++ b/Studio/Content/Maps Library/Shapes/circles/circle-64X64.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Shapes/circles/circle-stroke-01p.png b/Studio/Content/Maps Library/Shapes/circles/circle-stroke-01p.png
new file mode 100644
index 0000000..747d23b
--- /dev/null
+++ b/Studio/Content/Maps Library/Shapes/circles/circle-stroke-01p.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Shapes/circles/circle-stroke-02p.png b/Studio/Content/Maps Library/Shapes/circles/circle-stroke-02p.png
new file mode 100644
index 0000000..7185b47
--- /dev/null
+++ b/Studio/Content/Maps Library/Shapes/circles/circle-stroke-02p.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Shapes/circles/circle-stroke-03p.png b/Studio/Content/Maps Library/Shapes/circles/circle-stroke-03p.png
new file mode 100644
index 0000000..9da886f
--- /dev/null
+++ b/Studio/Content/Maps Library/Shapes/circles/circle-stroke-03p.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Shapes/circles/circle-stroke-05p.png b/Studio/Content/Maps Library/Shapes/circles/circle-stroke-05p.png
new file mode 100644
index 0000000..942e01d
--- /dev/null
+++ b/Studio/Content/Maps Library/Shapes/circles/circle-stroke-05p.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Shapes/circles/circle-stroke-10p.png b/Studio/Content/Maps Library/Shapes/circles/circle-stroke-10p.png
new file mode 100644
index 0000000..3632401
--- /dev/null
+++ b/Studio/Content/Maps Library/Shapes/circles/circle-stroke-10p.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Shapes/circles/circle-stroke-15p.png b/Studio/Content/Maps Library/Shapes/circles/circle-stroke-15p.png
new file mode 100644
index 0000000..420a679
--- /dev/null
+++ b/Studio/Content/Maps Library/Shapes/circles/circle-stroke-15p.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Shapes/circles/circle-stroke-20p.png b/Studio/Content/Maps Library/Shapes/circles/circle-stroke-20p.png
new file mode 100644
index 0000000..1993667
--- /dev/null
+++ b/Studio/Content/Maps Library/Shapes/circles/circle-stroke-20p.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Shapes/circles/circle-stroke-25p.png b/Studio/Content/Maps Library/Shapes/circles/circle-stroke-25p.png
new file mode 100644
index 0000000..80bce1e
--- /dev/null
+++ b/Studio/Content/Maps Library/Shapes/circles/circle-stroke-25p.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Shapes/circles/circle-stroke-30p.png b/Studio/Content/Maps Library/Shapes/circles/circle-stroke-30p.png
new file mode 100644
index 0000000..356c106
--- /dev/null
+++ b/Studio/Content/Maps Library/Shapes/circles/circle-stroke-30p.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Shapes/circles/circle-stroke-50p.png b/Studio/Content/Maps Library/Shapes/circles/circle-stroke-50p.png
new file mode 100644
index 0000000..2d46966
--- /dev/null
+++ b/Studio/Content/Maps Library/Shapes/circles/circle-stroke-50p.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Shapes/squares/square-stroke-01p.png b/Studio/Content/Maps Library/Shapes/squares/square-stroke-01p.png
new file mode 100644
index 0000000..91df0ff
--- /dev/null
+++ b/Studio/Content/Maps Library/Shapes/squares/square-stroke-01p.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Shapes/squares/square-stroke-02p.png b/Studio/Content/Maps Library/Shapes/squares/square-stroke-02p.png
new file mode 100644
index 0000000..65b7ea4
--- /dev/null
+++ b/Studio/Content/Maps Library/Shapes/squares/square-stroke-02p.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Shapes/squares/square-stroke-03p.png b/Studio/Content/Maps Library/Shapes/squares/square-stroke-03p.png
new file mode 100644
index 0000000..4df981b
--- /dev/null
+++ b/Studio/Content/Maps Library/Shapes/squares/square-stroke-03p.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Shapes/squares/square-stroke-05p.png b/Studio/Content/Maps Library/Shapes/squares/square-stroke-05p.png
new file mode 100644
index 0000000..f29dd9f
--- /dev/null
+++ b/Studio/Content/Maps Library/Shapes/squares/square-stroke-05p.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Shapes/squares/square-stroke-10p.png b/Studio/Content/Maps Library/Shapes/squares/square-stroke-10p.png
new file mode 100644
index 0000000..1480345
--- /dev/null
+++ b/Studio/Content/Maps Library/Shapes/squares/square-stroke-10p.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Shapes/squares/square-stroke-25p.png b/Studio/Content/Maps Library/Shapes/squares/square-stroke-25p.png
new file mode 100644
index 0000000..803a1b6
--- /dev/null
+++ b/Studio/Content/Maps Library/Shapes/squares/square-stroke-25p.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Shapes/squares/square-stroke-50p.png b/Studio/Content/Maps Library/Shapes/squares/square-stroke-50p.png
new file mode 100644
index 0000000..cd3353b
--- /dev/null
+++ b/Studio/Content/Maps Library/Shapes/squares/square-stroke-50p.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/flares/Flare1.png b/Studio/Content/Maps Library/Special Effects/flares/Flare1.png
new file mode 100644
index 0000000..bc3cdf6
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/flares/Flare1.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/flares/Flare2.png b/Studio/Content/Maps Library/Special Effects/flares/Flare2.png
new file mode 100644
index 0000000..f804ccb
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/flares/Flare2.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/flares/Flare3.png b/Studio/Content/Maps Library/Special Effects/flares/Flare3.png
new file mode 100644
index 0000000..bcc5a96
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/flares/Flare3.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/flares/Flare4.png b/Studio/Content/Maps Library/Special Effects/flares/Flare4.png
new file mode 100644
index 0000000..8885292
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/flares/Flare4.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/flares/Flare5.png b/Studio/Content/Maps Library/Special Effects/flares/Flare5.png
new file mode 100644
index 0000000..7d10d4b
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/flares/Flare5.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/glows/Glow-CircleBorder-1.png b/Studio/Content/Maps Library/Special Effects/glows/Glow-CircleBorder-1.png
new file mode 100644
index 0000000..ebfe2e0
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/glows/Glow-CircleBorder-1.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/glows/Glow-circle-1.png b/Studio/Content/Maps Library/Special Effects/glows/Glow-circle-1.png
new file mode 100644
index 0000000..a710707
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/glows/Glow-circle-1.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/glows/Glow-circle-2.png b/Studio/Content/Maps Library/Special Effects/glows/Glow-circle-2.png
new file mode 100644
index 0000000..dadc917
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/glows/Glow-circle-2.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/glows/Glow-circle-3.png b/Studio/Content/Maps Library/Special Effects/glows/Glow-circle-3.png
new file mode 100644
index 0000000..0254541
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/glows/Glow-circle-3.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/grids/grid-01.png b/Studio/Content/Maps Library/Special Effects/grids/grid-01.png
new file mode 100644
index 0000000..43347f5
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/grids/grid-01.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/grids/grid-02.png b/Studio/Content/Maps Library/Special Effects/grids/grid-02.png
new file mode 100644
index 0000000..16fda6d
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/grids/grid-02.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/grids/grid-03.png b/Studio/Content/Maps Library/Special Effects/grids/grid-03.png
new file mode 100644
index 0000000..e3d4aef
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/grids/grid-03.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/grids/grid-04.png b/Studio/Content/Maps Library/Special Effects/grids/grid-04.png
new file mode 100644
index 0000000..ab3ee26
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/grids/grid-04.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/lens flares/LensFlare_Color.png b/Studio/Content/Maps Library/Special Effects/lens flares/LensFlare_Color.png
new file mode 100644
index 0000000..f08d7d2
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/lens flares/LensFlare_Color.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/lens flares/LensFlare_RainbowRing.png b/Studio/Content/Maps Library/Special Effects/lens flares/LensFlare_RainbowRing.png
new file mode 100644
index 0000000..59e3b6e
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/lens flares/LensFlare_RainbowRing.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/lens flares/LensFlare_RainbowRing2.png b/Studio/Content/Maps Library/Special Effects/lens flares/LensFlare_RainbowRing2.png
new file mode 100644
index 0000000..03d2e3d
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/lens flares/LensFlare_RainbowRing2.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/lens flares/LensFlare_Ring.png b/Studio/Content/Maps Library/Special Effects/lens flares/LensFlare_Ring.png
new file mode 100644
index 0000000..98d7ae1
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/lens flares/LensFlare_Ring.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/smoke/cloudy_smoke.png b/Studio/Content/Maps Library/Special Effects/smoke/cloudy_smoke.png
new file mode 100644
index 0000000..3501fbf
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/smoke/cloudy_smoke.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/smoke/smoke-1.png b/Studio/Content/Maps Library/Special Effects/smoke/smoke-1.png
new file mode 100644
index 0000000..520880a
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/smoke/smoke-1.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/smoke/smoke-2.png b/Studio/Content/Maps Library/Special Effects/smoke/smoke-2.png
new file mode 100644
index 0000000..e2e658f
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/smoke/smoke-2.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/smoke/smoke-3.png b/Studio/Content/Maps Library/Special Effects/smoke/smoke-3.png
new file mode 100644
index 0000000..a798d8a
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/smoke/smoke-3.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/smoke/smoke-4.png b/Studio/Content/Maps Library/Special Effects/smoke/smoke-4.png
new file mode 100644
index 0000000..70b2327
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/smoke/smoke-4.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/smoke/smoke-5.png b/Studio/Content/Maps Library/Special Effects/smoke/smoke-5.png
new file mode 100644
index 0000000..13582e2
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/smoke/smoke-5.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/smoke/smoke-puff-1.png b/Studio/Content/Maps Library/Special Effects/smoke/smoke-puff-1.png
new file mode 100644
index 0000000..b0f0f19
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/smoke/smoke-puff-1.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/smoke/smoke-puff-2.png b/Studio/Content/Maps Library/Special Effects/smoke/smoke-puff-2.png
new file mode 100644
index 0000000..f2f13d0
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/smoke/smoke-puff-2.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/streaks/streak_narrow.png b/Studio/Content/Maps Library/Special Effects/streaks/streak_narrow.png
new file mode 100644
index 0000000..222cefd
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/streaks/streak_narrow.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Special Effects/streaks/streak_wide.png b/Studio/Content/Maps Library/Special Effects/streaks/streak_wide.png
new file mode 100644
index 0000000..c6fe1b6
--- /dev/null
+++ b/Studio/Content/Maps Library/Special Effects/streaks/streak_wide.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/Chrome/Chrome_01.jpg b/Studio/Content/Maps Library/Specular Reflection/Chrome/Chrome_01.jpg
new file mode 100644
index 0000000..1cd729c
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/Chrome/Chrome_01.jpg
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/Chrome/Chrome_02.jpg b/Studio/Content/Maps Library/Specular Reflection/Chrome/Chrome_02.jpg
new file mode 100644
index 0000000..299f6a2
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/Chrome/Chrome_02.jpg
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/Chrome/Chrome_03.jpg b/Studio/Content/Maps Library/Specular Reflection/Chrome/Chrome_03.jpg
new file mode 100644
index 0000000..0a96914
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/Chrome/Chrome_03.jpg
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/Gold/Gold_01.jpg b/Studio/Content/Maps Library/Specular Reflection/Gold/Gold_01.jpg
new file mode 100644
index 0000000..0f8485d
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/Gold/Gold_01.jpg
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/Gold/Gold_02.jpg b/Studio/Content/Maps Library/Specular Reflection/Gold/Gold_02.jpg
new file mode 100644
index 0000000..c5ad0a7
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/Gold/Gold_02.jpg
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/Gold/Gold_03.jpg b/Studio/Content/Maps Library/Specular Reflection/Gold/Gold_03.jpg
new file mode 100644
index 0000000..74963de
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/Gold/Gold_03.jpg
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/Misc/Reflection_Environment-1.jpg b/Studio/Content/Maps Library/Specular Reflection/Misc/Reflection_Environment-1.jpg
new file mode 100644
index 0000000..8b1a8b0
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/Misc/Reflection_Environment-1.jpg
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/Misc/Reflection_Environment-2.jpg b/Studio/Content/Maps Library/Specular Reflection/Misc/Reflection_Environment-2.jpg
new file mode 100644
index 0000000..40747b6
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/Misc/Reflection_Environment-2.jpg
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/Misc/Reflection_Environment-3.jpg b/Studio/Content/Maps Library/Specular Reflection/Misc/Reflection_Environment-3.jpg
new file mode 100644
index 0000000..77cff7b
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/Misc/Reflection_Environment-3.jpg
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/Misc/Reflection_Smear.jpg b/Studio/Content/Maps Library/Specular Reflection/Misc/Reflection_Smear.jpg
new file mode 100644
index 0000000..3d8c64a
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/Misc/Reflection_Smear.jpg
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/Misc/Reflection_Underwater.jpg b/Studio/Content/Maps Library/Specular Reflection/Misc/Reflection_Underwater.jpg
new file mode 100644
index 0000000..49e6b62
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/Misc/Reflection_Underwater.jpg
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/Misc/Reflection_Window.jpg b/Studio/Content/Maps Library/Specular Reflection/Misc/Reflection_Window.jpg
new file mode 100644
index 0000000..f688c9f
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/Misc/Reflection_Window.jpg
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/Specular-ceiling_lights-1.png b/Studio/Content/Maps Library/Specular Reflection/Specular-ceiling_lights-1.png
new file mode 100644
index 0000000..443f881
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/Specular-ceiling_lights-1.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/Specular-dull-1.png b/Studio/Content/Maps Library/Specular Reflection/Specular-dull-1.png
new file mode 100644
index 0000000..84772ff
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/Specular-dull-1.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/Specular-dull-2.png b/Studio/Content/Maps Library/Specular Reflection/Specular-dull-2.png
new file mode 100644
index 0000000..5d89372
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/Specular-dull-2.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/Specular-dull-3.png b/Studio/Content/Maps Library/Specular Reflection/Specular-dull-3.png
new file mode 100644
index 0000000..bc9645d
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/Specular-dull-3.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/Specular-shiny-1-alpha-25_orange.png b/Studio/Content/Maps Library/Specular Reflection/Specular-shiny-1-alpha-25_orange.png
new file mode 100644
index 0000000..9f2a64b
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/Specular-shiny-1-alpha-25_orange.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/Specular-shiny-1.png b/Studio/Content/Maps Library/Specular Reflection/Specular-shiny-1.png
new file mode 100644
index 0000000..2e2a275
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/Specular-shiny-1.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/Specular-shiny-2.png b/Studio/Content/Maps Library/Specular Reflection/Specular-shiny-2.png
new file mode 100644
index 0000000..7e5af56
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/Specular-shiny-2.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/Specular-shiny-3.png b/Studio/Content/Maps Library/Specular Reflection/Specular-shiny-3.png
new file mode 100644
index 0000000..dbc17ad
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/Specular-shiny-3.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/With Alpha/Glass-alpha01.png b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Glass-alpha01.png
new file mode 100644
index 0000000..9b5b3e9
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Glass-alpha01.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/With Alpha/Glass-alpha02.png b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Glass-alpha02.png
new file mode 100644
index 0000000..b808d12
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Glass-alpha02.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/With Alpha/Glass-alpha03.png b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Glass-alpha03.png
new file mode 100644
index 0000000..ad218fc
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Glass-alpha03.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/With Alpha/Glass-alpha04.png b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Glass-alpha04.png
new file mode 100644
index 0000000..d4a3db6
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Glass-alpha04.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/With Alpha/Glass-alpha05.png b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Glass-alpha05.png
new file mode 100644
index 0000000..cca1067
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Glass-alpha05.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-dull-1-alpha-100.png b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-dull-1-alpha-100.png
new file mode 100644
index 0000000..13a5d11
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-dull-1-alpha-100.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-dull-1-alpha-25.png b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-dull-1-alpha-25.png
new file mode 100644
index 0000000..77add09
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-dull-1-alpha-25.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-dull-1-alpha-50.png b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-dull-1-alpha-50.png
new file mode 100644
index 0000000..7fbef27
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-dull-1-alpha-50.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-dull-1-alpha-75.png b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-dull-1-alpha-75.png
new file mode 100644
index 0000000..52c595c
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-dull-1-alpha-75.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-dull-1-alpha-90.png b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-dull-1-alpha-90.png
new file mode 100644
index 0000000..1a38b49
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-dull-1-alpha-90.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-100.png b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-100.png
new file mode 100644
index 0000000..81f09fe
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-100.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-25.png b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-25.png
new file mode 100644
index 0000000..54dc410
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-25.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-25_refIVI.png b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-25_refIVI.png
new file mode 100644
index 0000000..54dc410
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-25_refIVI.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-50.png b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-50.png
new file mode 100644
index 0000000..3ffe405
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-50.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-50_green.png b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-50_green.png
new file mode 100644
index 0000000..4cda0d3
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-50_green.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-75.png b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-75.png
new file mode 100644
index 0000000..b99c502
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-75.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-90.png b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-90.png
new file mode 100644
index 0000000..9065eaf
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-90.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-blue.png b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-blue.png
new file mode 100644
index 0000000..35e07da
--- /dev/null
+++ b/Studio/Content/Maps Library/Specular Reflection/With Alpha/Specular-shiny-1-alpha-blue.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Texture Maps/Cork1.png b/Studio/Content/Maps Library/Texture Maps/Cork1.png
new file mode 100644
index 0000000..b27b27d
--- /dev/null
+++ b/Studio/Content/Maps Library/Texture Maps/Cork1.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Texture Maps/Fabric1.png b/Studio/Content/Maps Library/Texture Maps/Fabric1.png
new file mode 100644
index 0000000..65dcf40
--- /dev/null
+++ b/Studio/Content/Maps Library/Texture Maps/Fabric1.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Texture Maps/Fabric2.png b/Studio/Content/Maps Library/Texture Maps/Fabric2.png
new file mode 100644
index 0000000..74156f6
--- /dev/null
+++ b/Studio/Content/Maps Library/Texture Maps/Fabric2.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Texture Maps/Grass2.png b/Studio/Content/Maps Library/Texture Maps/Grass2.png
new file mode 100644
index 0000000..ed8189d
--- /dev/null
+++ b/Studio/Content/Maps Library/Texture Maps/Grass2.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Texture Maps/Metal_Bronze.png b/Studio/Content/Maps Library/Texture Maps/Metal_Bronze.png
new file mode 100644
index 0000000..119cad6
--- /dev/null
+++ b/Studio/Content/Maps Library/Texture Maps/Metal_Bronze.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Texture Maps/Metal_Oxydized.png b/Studio/Content/Maps Library/Texture Maps/Metal_Oxydized.png
new file mode 100644
index 0000000..bca8c2f
--- /dev/null
+++ b/Studio/Content/Maps Library/Texture Maps/Metal_Oxydized.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Texture Maps/Metal_Streaks.png b/Studio/Content/Maps Library/Texture Maps/Metal_Streaks.png
new file mode 100644
index 0000000..f2a6d49
--- /dev/null
+++ b/Studio/Content/Maps Library/Texture Maps/Metal_Streaks.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Texture Maps/Paper05.png b/Studio/Content/Maps Library/Texture Maps/Paper05.png
new file mode 100644
index 0000000..e70749d
--- /dev/null
+++ b/Studio/Content/Maps Library/Texture Maps/Paper05.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Texture Maps/Scratched_Aluminum.png b/Studio/Content/Maps Library/Texture Maps/Scratched_Aluminum.png
new file mode 100644
index 0000000..ebabbfe
--- /dev/null
+++ b/Studio/Content/Maps Library/Texture Maps/Scratched_Aluminum.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Texture Maps/Stone1.png b/Studio/Content/Maps Library/Texture Maps/Stone1.png
new file mode 100644
index 0000000..454ab58
--- /dev/null
+++ b/Studio/Content/Maps Library/Texture Maps/Stone1.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Texture Maps/Water1.png b/Studio/Content/Maps Library/Texture Maps/Water1.png
new file mode 100644
index 0000000..2d0ea4e
--- /dev/null
+++ b/Studio/Content/Maps Library/Texture Maps/Water1.png
Binary files differ
diff --git a/Studio/Content/Maps Library/Texture Maps/Wood7.png b/Studio/Content/Maps Library/Texture Maps/Wood7.png
new file mode 100644
index 0000000..9d9a219
--- /dev/null
+++ b/Studio/Content/Maps Library/Texture Maps/Wood7.png
Binary files differ
diff --git a/Studio/Content/Maps Library/UV-Checker.png b/Studio/Content/Maps Library/UV-Checker.png
new file mode 100644
index 0000000..fd3fa9c
--- /dev/null
+++ b/Studio/Content/Maps Library/UV-Checker.png
Binary files differ
diff --git a/Studio/Content/Material Library/aluminium_anodized.shader b/Studio/Content/Material Library/aluminium_anodized.shader
new file mode 100644
index 0000000..17da9fb
--- /dev/null
+++ b/Studio/Content/Material Library/aluminium_anodized.shader
@@ -0,0 +1,178 @@
+<Material name="aluminium_anodized" 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.300000" description="Roughness of the material.\n0 = fully specular\n1 = fully diffuse" category="Material"/>
+ <Property formalName="Base color" name="base_color" type="Color" default="0.7 0.7 0.7" 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( 22, 22, 22 ), 1.000000, base_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/Studio/Content/Material Library/aluminium_anodized_emissive.shader b/Studio/Content/Material Library/aluminium_anodized_emissive.shader
new file mode 100644
index 0000000..1c3233f
--- /dev/null
+++ b/Studio/Content/Material Library/aluminium_anodized_emissive.shader
@@ -0,0 +1,214 @@
+<Material name="aluminium_anodized_emissive" 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.300000" description="Roughness of the material.\n0 = fully specular\n1 = fully diffuse" category="Material"/>
+ <Property formalName="Base color" name="base_color" type="Color" default="0.7 0.7 0.7" description="Color of the material" category="Material"/>
+ <Property formalName="Intensity" name="intensity" description="Emission intensity" type="Float" default="1.000000" category="Material"/>
+ <Property formalName="Emission Color" name="emission_color" description="Color of the emission" type="Color" default="0 0 0" category="Material"/>
+ <Property formalName="Emissive Map" name="emissive_texture" description="Emissive texture of the material" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="emissive" default="./maps/materials/emissive.png" category="Material"/>
+ <Property formalName="Emissive Map Mask" name="emissive_mask_texture" description="Emissive mask texture for the material" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="emissive_mask" default="./maps/materials/emissive_mask.png" 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 mono_alpha 0
+#define mono_average 1
+#define mono_luminance 2
+#define mono_maximum 3
+#define wrap_clamp 0
+#define wrap_repeat 1
+#define wrap_mirrored_repeat 2
+#define gamma_default 0
+#define gamma_linear 1
+#define gamma_srgb 2
+
+#define QT3DS_ENABLE_UV0 1
+#define QT3DS_ENABLE_WORLD_POSITION 1
+#define QT3DS_ENABLE_TEXTAN 1
+#define QT3DS_ENABLE_BINORMAL 1
+
+#include "vertexFragmentBase.glsllib"
+
+// set shader output
+out vec4 fragColor;
+
+// add structure defines
+struct layer_result
+{
+ vec4 base;
+ vec4 layer;
+ mat3 tanFrame;
+};
+
+
+struct texture_coordinate_info
+{
+ vec3 position;
+ vec3 tangent_u;
+ vec3 tangent_v;
+};
+
+
+struct texture_return
+{
+ vec3 tint;
+ float mono;
+};
+
+
+// temporary declarations
+texture_coordinate_info tmp3;
+ 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"
+#include "monoChannel.glsllib"
+#include "fileTexture.glsllib"
+#include "transformCoordinate.glsllib"
+#include "rotationTranslationScale.glsllib"
+#include "textureCoordinateInfo.glsllib"
+
+bool evalTwoSided()
+{
+ return( false );
+}
+
+vec3 computeFrontMaterialEmissive()
+{
+ return( vec3(1.0) * vec3( vec3( ( intensity *( emission_color.rgb * ( fileTexture(emissive_texture, vec3(0.0), vec3(1.0), mono_alpha, tmp3, vec2(0.0, 1.0), vec2(0.0, 1.0), wrap_repeat, wrap_repeat, gamma_default ).tint * fileTexture(emissive_mask_texture, vec3(0.0), vec3(1.0), mono_alpha, tmp3, vec2(0.0, 1.0), vec2(0.0, 1.0), wrap_repeat, wrap_repeat, gamma_default ).tint ) ) ) ) ) );
+}
+
+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()
+{
+ tmp3 = transformCoordinate( rotationTranslationScale( vec3( 0.000000, 0.000000, 0.000000 ), vec3( 0.000000, 0.000000, 0.000000 ), vec3( 1.000000, 1.000000, 1.000000 ) ), textureCoordinateInfo( texCoord0, tangent, binormal ) );
+ tmpShadowTerm = evalBakedShadowMap( texCoord0 );
+}
+
+vec4 computeLayerWeights( in float alpha )
+{
+ vec4 color;
+ color = fresnelLayer( normal, vec3( 22, 22, 22 ), 1.000000, base_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/Studio/Content/Material Library/aluminum.shader b/Studio/Content/Material Library/aluminum.shader
new file mode 100644
index 0000000..e2a5bea
--- /dev/null
+++ b/Studio/Content/Material Library/aluminum.shader
@@ -0,0 +1,223 @@
+<Material name="aluminum" 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="Reflectivity Map" name="reflection_texture" description="Reflection texture for the material" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="specular" default="./maps/materials/grunge_b.png" category="Material"/>
+ <Property formalName="Reflection Map Offset" name="reflection_map_offset" hidden="True" type="Float" default="0.500000" description="Reflection texture value offset" category="Material"/>
+ <Property formalName="Reflection Map Scale" name="reflection_map_scale" hidden="True" type="Float" default="0.300000" description="Reflection texture value scale" category="Material"/>
+ <Property formalName="Tiling" name="tiling" type="Vector" default="1 1 1" description="Texture Tiling size" category="Material"/>
+ <Property formalName="Roughness Map" name="roughness_texture" description="Roughness texture for the material" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="roughness" default="./maps/materials/grunge_d.png" category="Material"/>
+ <Property formalName="Roughness Map Offset" name="roughness_map_offset" hidden="True" type="Float" default="0.160000" description="Roughness texture value offset" category="Material"/>
+ <Property formalName="Roughness Map Scale" name="roughness_map_scale" hidden="True" type="Float" default="0.400000" description="Roughness texture value scale" category="Material"/>
+ <Property formalName="Metal Color" name="metal_color" type="Color" default="0.95 0.95 0.95" description="Base color of the material" category="Material"/>
+ <Property formalName="Bump Map" name="bump_texture" description="Bump texture of the material" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="bump" default="./maps/materials/grunge_d.png" category="Material"/>
+ <Property formalName="Bump Amount" name="bump_amount" type="Float" min="0" max="2" default="0.500000" description="Scale value for bump amount" category="Material"/>
+ </MetaData>
+ <Shaders type="GLSL" version="330">
+ <Shader>
+ <Shared> </Shared>
+<VertexShader>
+ </VertexShader>
+ <FragmentShader>
+
+// add enum defines
+#define mono_alpha 0
+#define mono_average 1
+#define mono_luminance 2
+#define mono_maximum 3
+#define wrap_clamp 0
+#define wrap_repeat 1
+#define wrap_mirrored_repeat 2
+#define gamma_default 0
+#define gamma_linear 1
+#define gamma_srgb 2
+#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 1
+
+#include "vertexFragmentBase.glsllib"
+
+// set shader output
+out vec4 fragColor;
+
+// add structure defines
+struct texture_coordinate_info
+{
+ vec3 position;
+ vec3 tangent_u;
+ vec3 tangent_v;
+};
+
+
+struct layer_result
+{
+ vec4 base;
+ vec4 layer;
+ mat3 tanFrame;
+};
+
+
+struct texture_return
+{
+ vec3 tint;
+ float mono;
+};
+
+
+// temporary declarations
+texture_coordinate_info tmp1;
+float tmp2;
+float ftmp0;
+ vec4 tmpShadowTerm;
+
+layer_result layers[1];
+
+#include "SSAOCustomMaterial.glsllib"
+#include "sampleLight.glsllib"
+#include "sampleProbe.glsllib"
+#include "sampleArea.glsllib"
+#include "luminance.glsllib"
+#include "monoChannel.glsllib"
+#include "fileBumpTexture.glsllib"
+#include "transformCoordinate.glsllib"
+#include "rotationTranslationScale.glsllib"
+#include "textureCoordinateInfo.glsllib"
+#include "weightedLayer.glsllib"
+#include "fileTexture.glsllib"
+#include "square.glsllib"
+#include "calculateRoughness.glsllib"
+#include "evalBakedShadowMap.glsllib"
+#include "evalEnvironmentMap.glsllib"
+#include "microfacetBSDF.glsllib"
+#include "physGlossyBSDF.glsllib"
+#include "simpleGlossyBSDF.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, tmp2, tmp2, 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, tmp2, tmp2 );
+
+#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, tmp2, tmp2, 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, tmp2, tmp2 );
+
+#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( fileBumpTexture(bump_texture, bump_amount, mono_average, tmp1, vec2( 0.000000, 1.000000 ), vec2( 0.000000, 1.000000 ), wrap_repeat, wrap_repeat, normal ) );
+}
+
+void computeTemporaries()
+{
+ tmp1 = transformCoordinate( rotationTranslationScale( vec3( 0.000000, 0.000000, 0.000000 ), vec3( 0.000000, 0.000000, 0.000000 ), tiling ), textureCoordinateInfo( texCoord0, tangent, binormal ) );
+ tmp2 = fileTexture(roughness_texture, vec3( roughness_map_offset ), vec3( roughness_map_scale ), mono_luminance, tmp1, vec2( 0.000000, 1.000000 ), vec2( 0.000000, 1.000000 ), wrap_repeat, wrap_repeat, gamma_default ).mono;
+ ftmp0 = fileTexture(reflection_texture, vec3( reflection_map_offset ), vec3( reflection_map_scale ), mono_luminance, tmp1, vec2( 0.000000, 1.000000 ), vec2( 0.000000, 1.000000 ), wrap_repeat, wrap_repeat, gamma_default ).mono;
+ tmpShadowTerm = evalBakedShadowMap( texCoord0 );
+}
+
+vec4 computeLayerWeights( in float alpha )
+{
+ vec4 color;
+ color = weightedLayer( ftmp0, 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/Studio/Content/Material Library/aluminum_anisotropic.shader b/Studio/Content/Material Library/aluminum_anisotropic.shader
new file mode 100644
index 0000000..b5fed9f
--- /dev/null
+++ b/Studio/Content/Material Library/aluminum_anisotropic.shader
@@ -0,0 +1,260 @@
+<Material name="aluminum_anisotropic" 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="Index of Refraction" name="material_ior" description="Refractive index of the material" type="Float" default="8.000000" category="Material"/>
+ <Property formalName="Diffuse Map" name="reflection_texture" description="Reflection texture for the material" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="specular" default="./maps/materials/concentric_milled_steel.png" category="Material"/>
+ <Property formalName="Reflection Map Offset" name="reflection_map_offset" hidden="True" type="Float" default="1.000000" description="Reflection texture value offset" category="Material"/>
+ <Property formalName="Reflection Map Scale" name="reflection_map_scale" hidden="True" type="Float" default="1.000000" description="Reflection texture value scale" category="Material"/>
+ <Property formalName="Tiling" name="tiling" type="Float2" default="8 5" description="Texture Tiling size" category="Material"/>
+ <Property formalName="Roughness Map Offset" name="roughness_map_offset" hidden="True" type="Float" default="0.000000" description="Roughness texture value offset" category="Material"/>
+ <Property formalName="Roughness Map Scale" name="roughness_map_scale" hidden="True" type="Float" default="1.000000" description="Roughness texture value scale" category="Material"/>
+ <Property formalName="Anisotropy" name="anisotropy" type="Float" default="0.800000" description="Anisotropy" category="Material"/>
+ <Property formalName="Anisotropy Map" name="aniso_rot_texture" description="Anisotropy rot texture of the material" type="Texture" filter="linear" minfilter="linear" clamp="repeat" usage="anisotropy" default="./maps/materials/concentric_milled_steel_aniso.png" category="Material"/>
+ <Property formalName="Roughness Map Offset" name="aniso_tex_color_offset" hidden="True" type="Float" default="0.000000" description="Roughness texture value offset" category="Material"/>
+ <Property formalName="Roughness Map Scale" name="aniso_tex_color_scale" hidden="True" type="Float" default="1.000000" description="Roughness texture value scale" category="Material"/>
+ <Property formalName="Base Weight" name="base_weight" description="Base weight" hidden="True" type="Float" default="1.000000" category="Material"/>
+ <Property formalName="Bump Map" name="bump_texture" description="Bump texture of the material" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="bump" default="./maps/materials/concentric_milled_steel.png" category="Material"/>
+ <Property formalName="Bump Amount" name="bump_amount" type="Float" min="0" max="2" default="0.000000" description="Scale value for bump amount" category="Material"/>
+ </MetaData>
+ <Shaders type="GLSL" version="330">
+ <Shader>
+ <Shared> </Shared>
+<VertexShader>
+ </VertexShader>
+ <FragmentShader>
+
+// add enum defines
+#define mono_alpha 0
+#define mono_average 1
+#define mono_luminance 2
+#define mono_maximum 3
+#define wrap_clamp 0
+#define wrap_repeat 1
+#define wrap_mirrored_repeat 2
+#define gamma_default 0
+#define gamma_linear 1
+#define gamma_srgb 2
+#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 1
+
+#include "vertexFragmentBase.glsllib"
+
+// set shader output
+out vec4 fragColor;
+
+// add structure defines
+struct texture_coordinate_info
+{
+ vec3 position;
+ vec3 tangent_u;
+ vec3 tangent_v;
+};
+
+
+struct layer_result
+{
+ vec4 base;
+ vec4 layer;
+ mat3 tanFrame;
+};
+
+
+struct texture_return
+{
+ vec3 tint;
+ float mono;
+};
+
+
+struct anisotropy_return
+{
+ float roughness_u;
+ float roughness_v;
+ vec3 tangent_u;
+};
+
+
+// temporary declarations
+texture_coordinate_info tmp3;
+texture_return tmp4;
+anisotropy_return tmp5;
+vec3 tmp6;
+vec3 tmp8;
+float ftmp0;
+float ftmp1;
+vec3 ftmp2;
+ vec4 tmpShadowTerm;
+
+layer_result layers[2];
+
+#include "SSAOCustomMaterial.glsllib"
+#include "sampleLight.glsllib"
+#include "sampleProbe.glsllib"
+#include "sampleArea.glsllib"
+#include "luminance.glsllib"
+#include "monoChannel.glsllib"
+#include "fileBumpTexture.glsllib"
+#include "transformCoordinate.glsllib"
+#include "rotationTranslationScale.glsllib"
+#include "textureCoordinateInfo.glsllib"
+#include "fileTexture.glsllib"
+#include "square.glsllib"
+#include "calculateRoughness.glsllib"
+#include "evalBakedShadowMap.glsllib"
+#include "evalEnvironmentMap.glsllib"
+#include "microfacetBSDF.glsllib"
+#include "physGlossyBSDF.glsllib"
+#include "simpleGlossyBSDF.glsllib"
+#include "anisotropyConversion.glsllib"
+#include "weightedLayer.glsllib"
+#include "diffuseReflectionBSDF.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].layer += tmpShadowTerm * microfacetBSDF( layers[0].tanFrame, lightDir, viewDir, lightSpecular, materialIOR, ftmp0, ftmp1, scatter_reflect );
+
+ layers[1].base += tmpShadowTerm * vec4( 0.0, 0.0, 0.0, 1.0 );
+ layers[1].layer += tmpShadowTerm * diffuseReflectionBSDF( normal, lightDir, viewDir, lightDiffuse, 0.000000 );
+
+#endif
+}
+
+void computeFrontAreaColor( in int lightIdx, in vec4 lightDiffuse, in vec4 lightSpecular )
+{
+#if QT3DS_ENABLE_CG_LIGHTING
+ layers[0].layer += tmpShadowTerm * lightSpecular * sampleAreaGlossy( layers[0].tanFrame, varWorldPos, lightIdx, viewDir, ftmp0, ftmp1 );
+
+ layers[1].base += tmpShadowTerm * vec4( 0.0, 0.0, 0.0, 1.0 );
+ layers[1].layer += tmpShadowTerm * lightDiffuse * sampleAreaDiffuse( layers[1].tanFrame, varWorldPos, lightIdx );
+
+#endif
+}
+
+void computeFrontLayerEnvironment( in vec3 normal, in vec3 viewDir, float aoFactor )
+{
+#if !QT3DS_ENABLE_LIGHT_PROBE
+ layers[0].layer += tmpShadowTerm * microfacetSampledBSDF( layers[0].tanFrame, viewDir, ftmp0, ftmp1, scatter_reflect );
+
+ layers[1].base += tmpShadowTerm * vec4( 0.0, 0.0, 0.0, 1.0 );
+ layers[1].layer += tmpShadowTerm * diffuseReflectionBSDFEnvironment( normal, 0.000000 ) * aoFactor;
+
+#else
+ layers[0].layer += tmpShadowTerm * sampleGlossyAniso( layers[0].tanFrame, viewDir, ftmp0, ftmp1 );
+
+ layers[1].base += tmpShadowTerm * vec4( 0.0, 0.0, 0.0, 1.0 );
+ layers[1].layer += tmpShadowTerm * sampleDiffuse( layers[1].tanFrame ) * aoFactor;
+
+#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( tmp8 );
+}
+
+void computeTemporaries()
+{
+ tmp3 = transformCoordinate( rotationTranslationScale( vec3( 0.000000, 0.000000, 0.000000 ), vec3( 0.000000, 0.000000, 0.000000 ), vec3( tiling[0], tiling[1], 1.000000 ) ), textureCoordinateInfo( texCoord0, tangent, binormal ) );
+ tmp4 = fileTexture(reflection_texture, vec3( reflection_map_offset ), vec3( reflection_map_scale ), mono_luminance, tmp3, vec2( 0.000000, 1.000000 ), vec2( 0.000000, 1.000000 ), wrap_repeat, wrap_repeat, gamma_linear );
+ tmp5 = anisotropyConversion( fileTexture(reflection_texture, vec3( roughness_map_offset ), vec3( roughness_map_scale ), mono_luminance, tmp3, vec2( 0.000000, 1.000000 ), vec2( 0.000000, 1.000000 ), wrap_repeat, wrap_repeat, gamma_linear ).mono, anisotropy, fileTexture(aniso_rot_texture, vec3( aniso_tex_color_offset ), vec3( aniso_tex_color_scale ), mono_luminance, tmp3, vec2( 0.000000, 1.000000 ), vec2( 0.000000, 1.000000 ), wrap_repeat, wrap_repeat, gamma_default ).mono, tangent, false );
+ tmp6 = tmp4.tint;
+ tmp8 = fileBumpTexture(bump_texture, bump_amount, mono_average, tmp3, vec2( 0.000000, 1.000000 ), vec2( 0.000000, 1.000000 ), wrap_repeat, wrap_repeat, normal );
+ ftmp0 = tmp5.roughness_u;
+ ftmp1 = tmp5.roughness_v;
+ ftmp2 = tmp5.tangent_u;
+ tmpShadowTerm = evalBakedShadowMap( texCoord0 );
+}
+
+vec4 computeLayerWeights( in float alpha )
+{
+ vec4 color;
+ color = weightedLayer( base_weight, vec4( tmp6, 1.0).rgb, layers[1].layer, layers[1].base, alpha );
+ color = fresnelLayer( tmp8, vec3( material_ior ), tmp4.mono, vec4( tmp6, 1.0).rgb, layers[0].layer, color, color.a );
+ 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( ftmp2, cross(tmp8, ftmp2), tmp8 ) );
+ layers[1].base = vec4(0.0, 0.0, 0.0, 1.0);
+ layers[1].layer = vec4(0.0, 0.0, 0.0, 1.0);
+ layers[1].tanFrame = orthoNormalize( mat3( tangent, cross(normal, tangent), normal ) );
+}
+
+ </FragmentShader>
+ </Shader>
+ </Shaders>
+<Passes >
+ <ShaderKey value="5"/>
+ <LayerKey count="2"/>
+ <Pass >
+ </Pass>
+</Passes>
+</Material>
diff --git a/Studio/Content/Material Library/aluminum_brushed.shader b/Studio/Content/Material Library/aluminum_brushed.shader
new file mode 100644
index 0000000..594b4fa
--- /dev/null
+++ b/Studio/Content/Material Library/aluminum_brushed.shader
@@ -0,0 +1,224 @@
+<Material name="aluminum_brushed" 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="Brush Map" name="brush_texture" description="Brush texture for the material" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="brush" default="./maps/materials/brushed_full_contrast.png" category="Material"/>
+ <Property formalName="Tiling" name="tiling" description="Texture tiling size" type="Vector" default="3 3 3" category="Material"/>
+ <Property formalName="Roughness Map U" name="roughness_texture_u" description="Horizontal roughness texture" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="roughness" default="./maps/materials/brushed_full_contrast.png" category="Material"/>
+ <Property formalName="Brush strength" name="brushing_strength" description="Strength of the brush stroke" type="Float" default="0.500000" category="Material"/>
+ <Property formalName="Roughness Map V" name="roughness_texture_v" description="Vertical roughness texture" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="roughness" default="./maps/materials/brushed_full_contrast.png" category="Material"/>
+ <Property formalName="Reflection Stretch" name="reflection_stretch" description="Reflection stretch" type="Float" default="0.500000" category="Material"/>
+ <Property formalName="Metal Color" name="metal_color" description="Base color of the material" type="Color" default="0.95 0.95 0.95" category="Material"/>
+ <Property formalName="Bump Map" name="bump_texture" description="Bump texture of the material" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="bump" default="./maps/materials/brushed_a.png" category="Material"/>
+ <Property formalName="Bump Amount" name="bump_amount" description="Scale value for bump amount" type="Float" default="0.400000" category="Material"/>
+ </MetaData>
+ <Shaders type="GLSL" version="330">
+ <Shader>
+ <Shared> </Shared>
+<VertexShader>
+ </VertexShader>
+ <FragmentShader>
+
+// add enum defines
+#define mono_alpha 0
+#define mono_average 1
+#define mono_luminance 2
+#define mono_maximum 3
+#define wrap_clamp 0
+#define wrap_repeat 1
+#define wrap_mirrored_repeat 2
+#define gamma_default 0
+#define gamma_linear 1
+#define gamma_srgb 2
+#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 1
+
+#include "vertexFragmentBase.glsllib"
+
+// set shader output
+out vec4 fragColor;
+
+// add structure defines
+struct texture_coordinate_info
+{
+ vec3 position;
+ vec3 tangent_u;
+ vec3 tangent_v;
+};
+
+
+struct layer_result
+{
+ vec4 base;
+ vec4 layer;
+ mat3 tanFrame;
+};
+
+
+struct texture_return
+{
+ vec3 tint;
+ float mono;
+};
+
+
+// temporary declarations
+texture_coordinate_info tmp1;
+float ftmp0;
+float ftmp1;
+float ftmp2;
+ vec4 tmpShadowTerm;
+
+layer_result layers[1];
+
+#include "SSAOCustomMaterial.glsllib"
+#include "sampleLight.glsllib"
+#include "sampleProbe.glsllib"
+#include "sampleArea.glsllib"
+#include "luminance.glsllib"
+#include "monoChannel.glsllib"
+#include "fileBumpTexture.glsllib"
+#include "transformCoordinate.glsllib"
+#include "rotationTranslationScale.glsllib"
+#include "textureCoordinateInfo.glsllib"
+#include "weightedLayer.glsllib"
+#include "fileTexture.glsllib"
+#include "square.glsllib"
+#include "calculateRoughness.glsllib"
+#include "evalBakedShadowMap.glsllib"
+#include "evalEnvironmentMap.glsllib"
+#include "microfacetBSDF.glsllib"
+#include "physGlossyBSDF.glsllib"
+#include "simpleGlossyBSDF.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, ftmp1, ftmp2, 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, ftmp1, ftmp2 );
+
+#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, ftmp1, ftmp2, 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, ftmp1, ftmp2 );
+
+#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( fileBumpTexture(bump_texture, bump_amount, mono_average, tmp1, vec2( 0.000000, 1.000000 ), vec2( 0.000000, 1.000000 ), wrap_repeat, wrap_repeat, normal ) );
+}
+
+void computeTemporaries()
+{
+ tmp1 = transformCoordinate( rotationTranslationScale( vec3( 0.000000, 0.000000, 0.000000 ), vec3( 0.000000, 0.000000, 0.000000 ), tiling ), textureCoordinateInfo( texCoord0, tangent, binormal ) );
+ ftmp0 = fileTexture(brush_texture, vec3( 0.5, 0.5, 0.5 ), vec3( 0.5, 0.5, 0.5 ), mono_luminance, tmp1, vec2( 0.000000, 1.000000 ), vec2( 0.000000, 1.000000 ), wrap_repeat, wrap_repeat, gamma_default ).mono;
+ ftmp1 = fileTexture(roughness_texture_u, vec3( 0.12, 0.12, 0.12 ), vec3( ( 0.800000*brushing_strength ) ), mono_luminance, tmp1, vec2( 0.000000, 1.000000 ), vec2( 0.000000, 1.000000 ), wrap_repeat, wrap_repeat, gamma_default ).mono;
+ ftmp2 = fileTexture(roughness_texture_v, vec3( ( 0.150000+( 0.400000*reflection_stretch ) ) ), vec3( ( 0.100000+( reflection_stretch*0.300000 ) ) ), mono_luminance, tmp1, vec2( 0.000000, 1.000000 ), vec2( 0.000000, 1.000000 ), wrap_repeat, wrap_repeat, gamma_default ).mono;
+ tmpShadowTerm = evalBakedShadowMap( texCoord0 );
+}
+
+vec4 computeLayerWeights( in float alpha )
+{
+ vec4 color;
+ color = weightedLayer( ftmp0, 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/Studio/Content/Material Library/aluminum_emissive.shader b/Studio/Content/Material Library/aluminum_emissive.shader
new file mode 100644
index 0000000..ed48012
--- /dev/null
+++ b/Studio/Content/Material Library/aluminum_emissive.shader
@@ -0,0 +1,230 @@
+<Material name="aluminum" 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="Reflectivity Map" name="reflection_texture" description="Reflection texture for the material" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="specular" default="./maps/materials/grunge_b.png" category="Material"/>
+ <Property formalName="Reflection Map Offset" name="reflection_map_offset" hidden="True" type="Float" default="0.500000" description="Reflection texture value offset" category="Material"/>
+ <Property formalName="Reflection Map Scale" name="reflection_map_scale" hidden="True" type="Float" default="0.300000" description="Reflection texture value scale" category="Material"/>
+ <Property formalName="Tiling" name="tiling" type="Vector" default="1 1 1" description="Texture Tiling size" category="Material"/>
+ <Property formalName="Roughness Map" name="roughness_texture" description="Roughness texture for the material" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="roughness" default="./maps/materials/grunge_d.png" category="Material"/>
+ <Property formalName="Roughness Map Offset" name="roughness_map_offset" hidden="True" type="Float" default="0.160000" description="Roughness texture value offset" category="Material"/>
+ <Property formalName="Roughness Map Scale" name="roughness_map_scale" hidden="True" type="Float" default="0.400000" description="Roughness texture value scale" category="Material"/>
+ <Property formalName="Metal Color" name="metal_color" type="Color" default="0.95 0.95 0.95" description="Base color of the material" category="Material"/>
+ <Property formalName="Intensity" name="intensity" description="Emission intensity" type="Float" default="1.000000" category="Material"/>
+ <Property formalName="Emission Color" name="emission_color" description="Color of the emission" type="Color" default="0 0 0" category="Material"/>
+ <Property formalName="Emissive Map" name="emissive_texture" description="Emissive texture of the material" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="emissive" default="./maps/materials/emissive.png" category="Material"/>
+ <Property formalName="Emissive Map Mask" name="emissive_mask_texture" description="Emissive mask texture for the material" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="emissive_mask" default="./maps/materials/emissive_mask.png" category="Material"/>
+ <Property formalName="Emissive Mask Offset" name="emissive_mask_offset" description="Offset of the emissive mask texture" type="Vector" default="0 0 0" category="Material"/>
+ <Property formalName="Bump Map" name="bump_texture" description="Bump texture of the material" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="bump" default="./maps/materials/grunge_d.png" category="Material"/>
+ <Property formalName="Bump Amount" name="bump_amount" type="Float" min="0" max="2" default="0.500000" description="Scale value for bump amount" category="Material"/>
+ </MetaData>
+ <Shaders type="GLSL" version="330">
+ <Shader>
+ <Shared> </Shared>
+<VertexShader>
+ </VertexShader>
+ <FragmentShader>
+
+// add enum defines
+#define mono_alpha 0
+#define mono_average 1
+#define mono_luminance 2
+#define mono_maximum 3
+#define wrap_clamp 0
+#define wrap_repeat 1
+#define wrap_mirrored_repeat 2
+#define gamma_default 0
+#define gamma_l