diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2018-04-19 13:19:28 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2018-04-19 13:51:37 +0000 |
commit | a261818093dfa6f3c6bf83cccb3c1a068596c575 (patch) | |
tree | c5d286a34962e8793a9fbc233fd697ae921e46dc | |
parent | f350435221b1e638997cf86a5aa076cf0a744aa1 (diff) |
Copy IBL tests to tests/scenes as well
It is cheaper to have a copy of them than to repeatedly waste time on trying to
dig them out from the lancelot test set.
Change-Id: I9857008a6187131cdd47896f5623862be441bcd7
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
15 files changed, 730 insertions, 0 deletions
diff --git a/tests/scenes/lighting/copper.material b/tests/scenes/lighting/copper.material new file mode 100644 index 0000000..a4fdfc7 --- /dev/null +++ b/tests/scenes/lighting/copper.material @@ -0,0 +1,178 @@ +<Material name="copper" version="1.0"> + <MetaData > + <Property formalName="Environment Map" name="uEnvironmentTexture" description="Environment texture for the material" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="environment" default="./maps/materials/spherical_checker.png" category="Material"/> + <Property formalName="Enable Environment" name="uEnvironmentMappingEnabled" description="Enable environment mapping" type="Boolean" default="True" category="Material"/> + <Property formalName="Baked Shadow Map" name="uBakedShadowTexture" description="Baked shadow texture for the material" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="shadow" default="./maps/materials/shadow.png" category="Material"/> + <Property formalName="Enable Shadow Mapping" name="uShadowMappingEnabled" description="Enable shadow mapping" type="Boolean" default="False" category="Material"/> + <Property formalName="Roughness" name="roughness" type="Float" min="0.000000" max="1.000000" default="0.000000" description="Roughness of the material. 0 is fully specular, 1 is fully diffuse" category="Material"/> + <Property formalName="Metal Color" name="metal_color" type="Color" default="0.805 0.395 0.305" description="Color of the material" category="Material"/> + </MetaData> + <Shaders type="GLSL" version="330"> + <Shader> + <Shared> </Shared> +<VertexShader> + </VertexShader> + <FragmentShader> + +// add enum defines +#define scatter_reflect 0 +#define scatter_transmit 1 +#define scatter_reflect_transmit 2 + +#define QT3DS_ENABLE_UV0 1 +#define QT3DS_ENABLE_WORLD_POSITION 1 +#define QT3DS_ENABLE_TEXTAN 1 +#define QT3DS_ENABLE_BINORMAL 0 + +#include "vertexFragmentBase.glsllib" + +// set shader output +out vec4 fragColor; + +// add structure defines +struct layer_result +{ + vec4 base; + vec4 layer; + mat3 tanFrame; +}; + + +// temporary declarations + vec4 tmpShadowTerm; + +layer_result layers[1]; + +#include "SSAOCustomMaterial.glsllib" +#include "sampleLight.glsllib" +#include "sampleProbe.glsllib" +#include "sampleArea.glsllib" +#include "square.glsllib" +#include "calculateRoughness.glsllib" +#include "evalBakedShadowMap.glsllib" +#include "evalEnvironmentMap.glsllib" +#include "luminance.glsllib" +#include "microfacetBSDF.glsllib" +#include "physGlossyBSDF.glsllib" +#include "simpleGlossyBSDF.glsllib" +#include "fresnelLayer.glsllib" + +bool evalTwoSided() +{ + return( false ); +} + +vec3 computeFrontMaterialEmissive() +{ + return( vec3( 0, 0, 0 ) ); +} + +void computeFrontLayerColor( in vec3 normal, in vec3 lightDir, in vec3 viewDir, in vec3 lightDiffuse, in vec3 lightSpecular, in float materialIOR, float aoFactor ) +{ +#if QT3DS_ENABLE_CG_LIGHTING + layers[0].base += tmpShadowTerm * vec4( 0.0f, 0.0f, 0.0f, 1.0f ); + 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.0f, 0.0f, 0.0f, 1.0f ); + 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.0f, 0.0f, 0.0f, 1.0f ); + layers[0].layer += tmpShadowTerm * microfacetSampledBSDF( layers[0].tanFrame, viewDir, roughness, roughness, scatter_reflect ); + +#else + layers[0].base += tmpShadowTerm * vec4( 0.0f, 0.0f, 0.0f, 1.0f ); + 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.0f : luminance( vec3( 1, 1, 1 ) ) ); +} + +float evalCutout() +{ + return( 1.000000 ); +} + +vec3 computeNormal() +{ + return( normal ); +} + +void computeTemporaries() +{ + tmpShadowTerm = evalBakedShadowMap( texCoord0 ); +} + +vec4 computeLayerWeights( in float alpha ) +{ + vec4 color; + color = fresnelLayer( normal, vec3( 25.65, 25.65, 25.65 ), 1.000000, vec4( metal_color, 1.0).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/tests/scenes/lighting/imagebasedlighting.uip b/tests/scenes/lighting/imagebasedlighting.uip new file mode 100644 index 0000000..53da4cb --- /dev/null +++ b/tests/scenes/lighting/imagebasedlighting.uip @@ -0,0 +1,169 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<UIP version="3" > + <Project > + <ProjectSettings author="" company="" presentationWidth="1920" presentationHeight="1080" maintainAspect="False" > + <CustomColors count="16" >#ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff</CustomColors> + </ProjectSettings> + <Classes > + <CustomMaterial id="copper" name="copper" sourcepath="materials/copper.material" /> + </Classes> + <Graph > + <Scene id="Scene" > + <Layer id="Layer" > + <Camera id="Camera" /> + <Image id="Layer_lightprobe" /> + <Image id="Layer_lightprobe2" /> + <Group id="Group" > + <Model id="Cylinder" > + <ReferencedMaterial id="Default" /> + </Model> + <Model id="Cone" > + <CustomMaterial id="Default_001" class="#copper" /> + </Model> + <Model id="Sphere" > + <Material id="Default_002" name="Default" /> + </Model> + <Model id="DefaultOverride" > + <Material id="Default_003" name="Default" > + <Image id="Default_003_iblprobe" /> + </Material> + </Model> + <Model id="ReferenceMaterialOverride" > + <ReferencedMaterial id="Default_004" > + <Image id="Default_004_iblprobe" /> + </ReferencedMaterial> + </Model> + <Model id="CustomMaterialOverride" > + <CustomMaterial id="Default_005" class="#copper" > + <Image id="Default_005_iblprobe" /> + </CustomMaterial> + </Model> + <Model id="DefaultMaterialSpecial" > + <Material id="Default_006" name="Default" > + <Image id="Default_006_iblprobe" /> + </Material> + </Model> + <Model id="ReferenceMaterialSpecial" > + <ReferencedMaterial id="Default_007" > + <Image id="Default_007_iblprobe" /> + </ReferencedMaterial> + </Model> + <Model id="CustomMaterialSpecial" > + <CustomMaterial id="copper_001" class="#copper" > + <Image id="copper_001_iblprobe" /> + </CustomMaterial> + </Model> + </Group> + </Layer> + <Layer id="OneLightProbe" > + <Camera id="Camera_001" /> + <Image id="OneLightProbe_lightprobe" /> + <Group id="Group_001" > + <Model id="ReferenceMaterial" > + <ReferencedMaterial id="Default_008" /> + </Model> + <Model id="CustomMaterial" > + <CustomMaterial id="copper_002" class="#copper" /> + </Model> + <Model id="DefaultMaterial" > + <Material id="Default_009" name="Default" /> + </Model> + <Model id="DefaultOverride_001" > + <Material id="Default_010" name="Default" > + <Image id="Default_010_iblprobe" /> + </Material> + </Model> + <Model id="ReferenceMaterialOverride_001" > + <ReferencedMaterial id="Default_011" > + <Image id="Default_011_iblprobe" /> + </ReferencedMaterial> + </Model> + <Model id="CustomMaterialOverride_001" > + <CustomMaterial id="copper_003" class="#copper" > + <Image id="copper_003_iblprobe" /> + </CustomMaterial> + </Model> + <Model id="DefaultMaterialSpecial_001" > + <Material id="Default_012" name="Default" > + <Image id="Default_012_iblprobe" /> + </Material> + </Model> + <Model id="ReferenceMaterialSpecial_001" > + <ReferencedMaterial id="Default_013" > + <Image id="Default_013_iblprobe" /> + </ReferencedMaterial> + </Model> + <Model id="CustomMaterialSpecial_001" > + <CustomMaterial id="copper_004" class="#copper" > + <Image id="copper_004_iblprobe" /> + </CustomMaterial> + </Model> + </Group> + </Layer> + </Scene> + </Graph> + <Logic > + <State name="Master Slide" component="#Scene" > + <Add ref="#Layer" name="TwoLightProbes" lightprobe="#Layer_lightprobe" lightprobe2="#Layer_lightprobe2" probe2fade="0.33" probebright="1000" width="50" /> + <Add ref="#Camera" fov="60" /> + <Add ref="#Layer_lightprobe" mappingmode="Light Probe" sourcepath="maps/OpenfootageNET_fieldairport-512.hdr" /> + <Add ref="#Layer_lightprobe2" mappingmode="Light Probe" sourcepath="maps/OpenfootageNET_Gerlos-512.hdr" /> + <State id="Scene-Slide1" name="Slide1" > + <Add ref="#Group" name="Group" position="468.305 -129.677 0" scale="2 2 2" /> + <Add ref="#Cylinder" name="ReferenceMaterial" position="-448.399 78.869 0" sourcepath="#Cylinder" /> + <Add ref="#Default" name="Default" referencedmaterial="#Default_002" /> + <Add ref="#Cone" name="CustomMaterial" position="-452.899 -147.545 0" sourcepath="#Cone" /> + <Add ref="#Default_001" name="Default" uBakedShadowTexture="" uEnvironmentTexture="" /> + <Add ref="#Sphere" name="DefaultMaterial" position="-441.352 255.317 0" sourcepath="#Sphere" /> + <Add ref="#Default_002" /> + <Add ref="#DefaultOverride" name="DefaultOverride" position="-233.489 252.353 0" sourcepath="#Sphere" /> + <Add ref="#Default_003" iblprobe="#Default_003_iblprobe" /> + <Add ref="#Default_003_iblprobe" mappingmode="IBL Override" sourcepath="maps/OpenfootageNET_lowerAustria01-512.hdr" /> + <Add ref="#ReferenceMaterialOverride" name="ReferenceMaterialOverride" position="-235.717 78.869 0" sourcepath="#Cylinder" /> + <Add ref="#Default_004" name="Default" iblprobe="#Default_004_iblprobe" referencedmaterial="#Default_002" /> + <Add ref="#Default_004_iblprobe" mappingmode="IBL Override" sourcepath="maps/OpenfootageNET_lowerAustria01-512.hdr" /> + <Add ref="#CustomMaterialOverride" name="CustomMaterialOverride" position="-245.686 -147.545 0" sourcepath="#Cone" /> + <Add ref="#Default_005" name="Default" iblprobe="#Default_005_iblprobe" uBakedShadowTexture="" uEnvironmentTexture="" /> + <Add ref="#Default_005_iblprobe" mappingmode="IBL Override" sourcepath="maps/OpenfootageNET_lowerAustria01-512.hdr" /> + <Add ref="#DefaultMaterialSpecial" name="DefaultMaterialSpecial" position="-18.5029 255.317 0" sourcepath="#Sphere" /> + <Add ref="#Default_006" iblprobe="#Default_006_iblprobe" /> + <Add ref="#Default_006_iblprobe" mappingmode="IBL Override" scaleu="20" scalev="0" sourcepath="maps/OpenfootageNET_lowerAustria01-512.hdr" /> + <Add ref="#ReferenceMaterialSpecial" name="ReferenceMaterialSpecial" position="-14.5576 78.869 0" sourcepath="#Cylinder" /> + <Add ref="#Default_007" name="Default" iblprobe="#Default_007_iblprobe" referencedmaterial="#Default_002" /> + <Add ref="#Default_007_iblprobe" mappingmode="IBL Override" scaleu="20" sourcepath="maps/OpenfootageNET_lowerAustria01-512.hdr" /> + <Add ref="#CustomMaterialSpecial" name="CustomMaterialSpecial" position="-17.4744 -147.545 0" sourcepath="#Cone" /> + <Add ref="#copper_001" name="Default" iblprobe="#copper_001_iblprobe" uBakedShadowTexture="" uEnvironmentTexture="" /> + <Add ref="#copper_001_iblprobe" mappingmode="IBL Override" scaleu="20" sourcepath="maps/OpenfootageNET_lowerAustria01-512.hdr" /> + <Add ref="#OneLightProbe" name="OneLightProbe" left="50" lightprobe="#OneLightProbe_lightprobe" probe2fade="0" probebright="1000" width="50" /> + <Add ref="#Camera_001" /> + <Add ref="#OneLightProbe_lightprobe" mappingmode="Light Probe" sourcepath="maps/OpenfootageNET_fieldairport-512.hdr" /> + <Add ref="#Group_001" name="Group" position="468.305 -129.677 0" scale="2 2 2" /> + <Add ref="#ReferenceMaterial" name="ReferenceMaterial" position="-448.399 78.869 0" sourcepath="#Cylinder" /> + <Add ref="#Default_008" name="Default" referencedmaterial="#Default_009" /> + <Add ref="#CustomMaterial" name="CustomMaterial" position="-452.899 -147.545 0" sourcepath="#Cone" /> + <Add ref="#copper_002" name="Default" uBakedShadowTexture="" uEnvironmentTexture="" /> + <Add ref="#DefaultMaterial" name="DefaultMaterial" position="-441.352 255.317 0" sourcepath="#Sphere" /> + <Add ref="#Default_009" /> + <Add ref="#DefaultOverride_001" name="DefaultOverride" position="-233.489 252.353 0" sourcepath="#Sphere" /> + <Add ref="#Default_010" iblprobe="#Default_010_iblprobe" /> + <Add ref="#Default_010_iblprobe" mappingmode="IBL Override" sourcepath="maps/OpenfootageNET_lowerAustria01-512.hdr" /> + <Add ref="#ReferenceMaterialOverride_001" name="ReferenceMaterialOverride" position="-235.717 78.869 0" sourcepath="#Cylinder" /> + <Add ref="#Default_011" name="Default" iblprobe="#Default_011_iblprobe" referencedmaterial="#Default_009" /> + <Add ref="#Default_011_iblprobe" mappingmode="IBL Override" sourcepath="maps/OpenfootageNET_lowerAustria01-512.hdr" /> + <Add ref="#CustomMaterialOverride_001" name="CustomMaterialOverride" position="-245.686 -147.545 0" sourcepath="#Cone" /> + <Add ref="#copper_003" name="Default" iblprobe="#copper_003_iblprobe" uBakedShadowTexture="" uEnvironmentTexture="" /> + <Add ref="#copper_003_iblprobe" mappingmode="IBL Override" sourcepath="maps/OpenfootageNET_lowerAustria01-512.hdr" /> + <Add ref="#DefaultMaterialSpecial_001" name="DefaultMaterialSpecial" position="-18.5029 255.317 0" sourcepath="#Sphere" /> + <Add ref="#Default_012" iblprobe="#Default_012_iblprobe" /> + <Add ref="#Default_012_iblprobe" mappingmode="IBL Override" scaleu="20" scalev="0" sourcepath="maps/OpenfootageNET_lowerAustria01-512.hdr" /> + <Add ref="#ReferenceMaterialSpecial_001" name="ReferenceMaterialSpecial" position="-14.5576 78.869 0" sourcepath="#Cylinder" /> + <Add ref="#Default_013" name="Default" iblprobe="#Default_013_iblprobe" referencedmaterial="#Default_009" /> + <Add ref="#Default_013_iblprobe" mappingmode="IBL Override" scaleu="20" sourcepath="maps/OpenfootageNET_lowerAustria01-512.hdr" /> + <Add ref="#CustomMaterialSpecial_001" name="CustomMaterialSpecial" position="-17.4744 -147.545 0" sourcepath="#Cone" /> + <Add ref="#copper_004" name="Default" iblprobe="#copper_004_iblprobe" uBakedShadowTexture="" uEnvironmentTexture="" /> + <Add ref="#copper_004_iblprobe" mappingmode="IBL Override" scaleu="20" sourcepath="maps/OpenfootageNET_lowerAustria01-512.hdr" /> + </State> + </State> + </Logic> + </Project> +</UIP> diff --git a/tests/scenes/lighting/lightmaps_custom_material.uip b/tests/scenes/lighting/lightmaps_custom_material.uip new file mode 100644 index 0000000..ec99fa7 --- /dev/null +++ b/tests/scenes/lighting/lightmaps_custom_material.uip @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<UIP version="3" > + <Project > + <ProjectSettings author="" company="" presentationWidth="1920" presentationHeight="1080" maintainAspect="False" > + <CustomColors count="16" >#ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff</CustomColors> + </ProjectSettings> + <Classes > + <CustomMaterial id="copper" name="copper" sourcepath="copper.material" /> + </Classes> + <Graph > + <Scene id="Scene" > + <Layer id="Layer" > + <Camera id="Camera" /> + <Group id="testCube2" importid="__import__root__" > + <Model id="Cube" name="Cube" importid="Cube" orientation="Right Handed" position="0 0 -0" rotation="-90 -0 0" rotationorder="XYZr" scale="100 100 100" sourcepath="models/testCube/meshes/Cube.mesh" > + <CustomMaterial id="Material" class="#copper" > + <Image id="Material_lightmapindirect" /> + <Image id="Material_lightmapradiosity" /> + <Image id="Material_lightmapshadow" /> + </CustomMaterial> + </Model> + </Group> + </Layer> + </Scene> + </Graph> + <Logic > + <State name="Master Slide" component="#Scene" > + <Add ref="#Layer" /> + <Add ref="#Camera" /> + <Add ref="#testCube2" name="everything" importfile="models/testCube/testCube.import" position="8.92529 -33.3906 -88.9147" rotation="38.717 127.514 -31.7476" sourcepath="models/testCube/testCube.import" /> + <Add ref="#Cube" importfile="models/testCube/testCube.import" /> + <Add ref="#Material" name="Material" lightmapindirect="#Material_lightmapindirect" lightmapradiosity="#Material_lightmapradiosity" lightmapshadow="#Material_lightmapshadow" uBakedShadowTexture="" uEnvironmentTexture="" /> + <Add ref="#Material_lightmapindirect" sourcepath="maps/cork_lightmap_indirect.jpg" /> + <Add ref="#Material_lightmapradiosity" sourcepath="maps/core_lightmap_radiosity.jpg" /> + <Add ref="#Material_lightmapshadow" sourcepath="maps/core_lightmap_shadow.jpg" /> + <State id="Scene-Everything" name="Everything" /> + </State> + </Logic> + </Project> +</UIP> diff --git a/tests/scenes/lighting/lightmaps_default_material.uip b/tests/scenes/lighting/lightmaps_default_material.uip new file mode 100644 index 0000000..f1a335c --- /dev/null +++ b/tests/scenes/lighting/lightmaps_default_material.uip @@ -0,0 +1,96 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<UIP version="3" > + <Project > + <ProjectSettings author="" company="" presentationWidth="1920" presentationHeight="1080" maintainAspect="False" > + <CustomColors count="16" >#ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff</CustomColors> + </ProjectSettings> + <BufferData > + <ImageBuffer sourcepath="maps/core_lightmap_radiosity.jpg" hasTransparency="True" /> + <ImageBuffer sourcepath="maps/core_lightmap_shadow.jpg" hasTransparency="True" /> + <ImageBuffer sourcepath="maps/cork_lightmap_indirect.jpg" hasTransparency="True" /> + </BufferData> + <Graph > + <Scene id="Scene" > + <Layer id="Layer" > + <Camera id="Camera" /> + <Group id="testCube2" importid="__import__root__" > + <Model id="Cube" name="Cube" importid="Cube" orientation="Right Handed" position="0 0 -0" rotation="-90 -0 0" rotationorder="XYZr" scale="100 100 100" sourcepath="models/testCube/meshes/Cube.mesh" > + <Material id="Material" name="Material" blendmode="Normal" diffuse="0.8 0.8 0.8" emissivepower="0" importid="Material" opacity="100" specularamount="0" specularroughness="20" > + <Image id="Material_diffusemap" /> + <Image id="Material_lightmapindirect" /> + <Image id="Material_lightmapradiosity" /> + <Image id="Material_lightmapshadow" /> + </Material> + </Model> + </Group> + <Group id="NoShadow" importid="__import__root__" > + <Model id="Cube_001" name="Cube" importid="Cube" orientation="Right Handed" position="0 0 -0" rotation="-90 -0 0" rotationorder="XYZr" scale="100 100 100" sourcepath="models/testCube/meshes/Cube.mesh" > + <Material id="Material_001" name="Material" blendmode="Normal" diffuse="0.8 0.8 0.8" emissivepower="0" importid="Material" opacity="100" specularamount="0" specularroughness="20" > + <Image id="Material_001_diffusemap" /> + <Image id="Material_001_lightmapindirect" /> + <Image id="Material_001_lightmapradiosity" /> + </Material> + </Model> + </Group> + <Group id="IndirectOnly" importid="__import__root__" > + <Model id="Cube_002" name="Cube" importid="Cube" orientation="Right Handed" position="0 0 -0" rotation="-90 -0 0" rotationorder="XYZr" scale="100 100 100" sourcepath="models/testCube/meshes/Cube.mesh" > + <Material id="Material_002" name="Material" blendmode="Normal" diffuse="0.8 0.8 0.8" emissivepower="0" importid="Material" opacity="100" specularamount="0" specularroughness="20" > + <Image id="Material_002_diffusemap" /> + <Image id="Material_002_lightmapindirect" /> + </Material> + </Model> + </Group> + <Group id="RadiosityOnly" importid="__import__root__" > + <Model id="Cube_003" name="Cube" importid="Cube" orientation="Right Handed" position="0 0 -0" rotation="-90 -0 0" rotationorder="XYZr" scale="100 100 100" sourcepath="models/testCube/meshes/Cube.mesh" > + <Material id="Material_003" name="Material" blendmode="Normal" diffuse="0.8 0.8 0.8" emissivepower="0" importid="Material" opacity="100" specularamount="0" specularroughness="20" > + <Image id="Material_003_diffusemap" /> + <Image id="Material_003_lightmapradiosity" /> + </Material> + </Model> + </Group> + <Group id="UnLit" importid="__import__root__" > + <Model id="Cube_004" name="Cube" importid="Cube" orientation="Right Handed" position="0 0 -0" rotation="-90 -0 0" rotationorder="XYZr" scale="100 100 100" sourcepath="models/testCube/meshes/Cube.mesh" > + <Material id="Material_004" name="Material" blendmode="Normal" diffuse="0.8 0.8 0.8" emissivepower="0" importid="Material" opacity="100" specularamount="0" specularroughness="20" > + <Image id="Material_004_diffusemap" /> + </Material> + </Model> + </Group> + </Layer> + </Scene> + </Graph> + <Logic > + <State name="Master Slide" component="#Scene" > + <Add ref="#Layer" /> + <Add ref="#Camera" /> + <Add ref="#testCube2" name="everything" importfile="models/testCube/testCube.import" position="8.92529 -33.3906 -88.9147" rotation="38.717 127.514 -31.7476" sourcepath="models/testCube/testCube.import" /> + <Add ref="#Cube" importfile="models/testCube/testCube.import" /> + <Add ref="#Material" diffusemap="#Material_diffusemap" importfile="models/testCube/testCube.import" lightmapindirect="#Material_lightmapindirect" lightmapradiosity="#Material_lightmapradiosity" lightmapshadow="#Material_lightmapshadow" shaderlighting="Pixel" /> + <Add ref="#Material_diffusemap" sourcepath="maps/Cork1.jpg" /> + <Add ref="#Material_lightmapindirect" sourcepath="maps/cork_lightmap_indirect.jpg" /> + <Add ref="#Material_lightmapradiosity" sourcepath="maps/core_lightmap_radiosity.jpg" /> + <Add ref="#Material_lightmapshadow" sourcepath="maps/core_lightmap_shadow.jpg" /> + <Add ref="#NoShadow" name="NoShadow" importfile="models/testCube/testCube.import" position="-270.428 9.34266 -88.9069" rotation="38.717 127.514 -31.7476" sourcepath="models/testCube/testCube.import" /> + <Add ref="#Cube_001" importfile="models/testCube/testCube.import" /> + <Add ref="#Material_001" diffusemap="#Material_001_diffusemap" importfile="models/testCube/testCube.import" lightmapindirect="#Material_001_lightmapindirect" lightmapradiosity="#Material_001_lightmapradiosity" shaderlighting="Pixel" /> + <Add ref="#Material_001_diffusemap" sourcepath="maps/Cork1.jpg" /> + <Add ref="#Material_001_lightmapindirect" sourcepath="maps/cork_lightmap_indirect.jpg" /> + <Add ref="#Material_001_lightmapradiosity" sourcepath="maps/core_lightmap_radiosity.jpg" /> + <Add ref="#IndirectOnly" name="IndirectOnly" importfile="models/testCube/testCube.import" position="266.005 81.2868 -88.9395" rotation="-1.05041 -78.4043 -264.953" sourcepath="models/testCube/testCube.import" /> + <Add ref="#Cube_002" importfile="models/testCube/testCube.import" /> + <Add ref="#Material_002" diffusemap="#Material_002_diffusemap" importfile="models/testCube/testCube.import" lightmapindirect="#Material_002_lightmapindirect" shaderlighting="Pixel" /> + <Add ref="#Material_002_diffusemap" sourcepath="maps/Cork1.jpg" /> + <Add ref="#Material_002_lightmapindirect" sourcepath="maps/cork_lightmap_indirect.jpg" /> + <Add ref="#RadiosityOnly" name="RadiosityOnly" importfile="models/testCube/testCube.import" position="223.385 -186.454 -88.9396" rotation="38.717 127.514 -31.7476" sourcepath="models/testCube/testCube.import" /> + <Add ref="#Cube_003" importfile="models/testCube/testCube.import" /> + <Add ref="#Material_003" diffusemap="#Material_003_diffusemap" importfile="models/testCube/testCube.import" lightmapradiosity="#Material_003_lightmapradiosity" shaderlighting="Pixel" /> + <Add ref="#Material_003_diffusemap" sourcepath="maps/Cork1.jpg" /> + <Add ref="#Material_003_lightmapradiosity" sourcepath="maps/core_lightmap_radiosity.jpg" /> + <Add ref="#UnLit" name="UnLit" importfile="models/testCube/testCube.import" position="-131.581 -186.634 -245.316" rotation="38.717 127.514 -31.7476" sourcepath="models/testCube/testCube.import" /> + <Add ref="#Cube_004" importfile="models/testCube/testCube.import" /> + <Add ref="#Material_004" diffusemap="#Material_004_diffusemap" importfile="models/testCube/testCube.import" shaderlighting="None" /> + <Add ref="#Material_004_diffusemap" sourcepath="maps/Cork1.jpg" /> + <State id="Scene-Everything" name="Everything" /> + </State> + </Logic> + </Project> +</UIP> diff --git a/tests/scenes/lighting/lightmaps_referenced_material.uip b/tests/scenes/lighting/lightmaps_referenced_material.uip new file mode 100644 index 0000000..fe3ba5e --- /dev/null +++ b/tests/scenes/lighting/lightmaps_referenced_material.uip @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<UIP version="3" > + <Project > + <ProjectSettings author="" company="" presentationWidth="1920" presentationHeight="1080" maintainAspect="False" > + <CustomColors count="16" >#ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff</CustomColors> + </ProjectSettings> + <Graph > + <Scene id="Scene" > + <Layer id="Layer" > + <Camera id="Camera" /> + <Group id="testCube2" importid="__import__root__" > + <Model id="Cube" name="Cube" importid="Cube" orientation="Right Handed" position="0 0 -0" rotation="-90 -0 0" rotationorder="XYZr" scale="100 100 100" sourcepath="models/testCube/meshes/Cube.mesh" > + <Material id="Material" > + <Image id="Material_lightmapradiosity" /> + <Image id="Material_lightmapshadow" /> + </Material> + </Model> + </Group> + <Group id="everything" importid="__import__root__" > + <Model id="Cube_001" name="Cube" importid="Cube" orientation="Right Handed" position="0 0 -0" rotation="-90 -0 0" rotationorder="XYZr" scale="100 100 100" sourcepath="models/testCube/meshes/Cube.mesh" > + <ReferencedMaterial id="Material_001" > + <Image id="Material_001_lightmapradiosity" /> + <Image id="Material_001_lightmapshadow" /> + <Image id="Material_001_lightmapindirect" /> + </ReferencedMaterial> + </Model> + </Group> + </Layer> + </Scene> + </Graph> + <Logic > + <State name="Master Slide" component="#Scene" > + <Add ref="#Layer" /> + <Add ref="#Camera" /> + <Add ref="#testCube2" name="everything" importfile="models/testCube/testCube.import" position="-189.977 8.13851 -88.9147" rotation="38.717 127.514 -31.7476" sourcepath="models/testCube/testCube.import" /> + <Add ref="#Cube" importfile="models/testCube/testCube.import" /> + <Add ref="#Material" name="Material" lightmapradiosity="#Material_lightmapradiosity" lightmapshadow="#Material_lightmapshadow" /> + <Add ref="#Material_lightmapradiosity" sourcepath="maps/core_lightmap_radiosity.jpg" /> + <Add ref="#Material_lightmapshadow" sourcepath="maps/core_lightmap_shadow.jpg" /> + <State id="Scene-Everything" name="Everything" > + <Add ref="#everything" name="everything" importfile="models/testCube/testCube.import" position="157.556 -3.88307 -88.9147" rotation="38.717 127.514 -31.7476" sourcepath="models/testCube/testCube.import" /> + <Add ref="#Cube_001" importfile="models/testCube/testCube.import" /> + <Add ref="#Material_001" name="Material" lightmapindirect="#Material_001_lightmapindirect" lightmapradiosity="#Material_001_lightmapradiosity" lightmapshadow="#Material_001_lightmapshadow" referencedmaterial="#Material" /> + <Add ref="#Material_001_lightmapradiosity" sourcepath="maps/core_lightmap_radiosity.jpg" /> + <Add ref="#Material_001_lightmapshadow" sourcepath="maps/core_lightmap_shadow.jpg" /> + <Add ref="#Material_001_lightmapindirect" sourcepath="maps/cork_lightmap_indirect.jpg" /> + </State> + </State> + </Logic> + </Project> +</UIP> diff --git a/tests/scenes/lighting/maps/Cork1.jpg b/tests/scenes/lighting/maps/Cork1.jpg Binary files differnew file mode 100644 index 0000000..9466098 --- /dev/null +++ b/tests/scenes/lighting/maps/Cork1.jpg diff --git a/tests/scenes/lighting/maps/OpenfootageNET_Gerlos-512.hdr b/tests/scenes/lighting/maps/OpenfootageNET_Gerlos-512.hdr Binary files differnew file mode 100644 index 0000000..7119b26 --- /dev/null +++ b/tests/scenes/lighting/maps/OpenfootageNET_Gerlos-512.hdr diff --git a/tests/scenes/lighting/maps/OpenfootageNET_fieldairport-512.hdr b/tests/scenes/lighting/maps/OpenfootageNET_fieldairport-512.hdr Binary files differnew file mode 100644 index 0000000..abdebdb --- /dev/null +++ b/tests/scenes/lighting/maps/OpenfootageNET_fieldairport-512.hdr diff --git a/tests/scenes/lighting/maps/OpenfootageNET_lowerAustria01-512.hdr b/tests/scenes/lighting/maps/OpenfootageNET_lowerAustria01-512.hdr Binary files differnew file mode 100644 index 0000000..df12f02 --- /dev/null +++ b/tests/scenes/lighting/maps/OpenfootageNET_lowerAustria01-512.hdr diff --git a/tests/scenes/lighting/maps/core_lightmap_radiosity.jpg b/tests/scenes/lighting/maps/core_lightmap_radiosity.jpg Binary files differnew file mode 100644 index 0000000..c51f007 --- /dev/null +++ b/tests/scenes/lighting/maps/core_lightmap_radiosity.jpg diff --git a/tests/scenes/lighting/maps/core_lightmap_shadow.jpg b/tests/scenes/lighting/maps/core_lightmap_shadow.jpg Binary files differnew file mode 100644 index 0000000..db94264 --- /dev/null +++ b/tests/scenes/lighting/maps/core_lightmap_shadow.jpg diff --git a/tests/scenes/lighting/maps/cork_lightmap_indirect.jpg b/tests/scenes/lighting/maps/cork_lightmap_indirect.jpg Binary files differnew file mode 100644 index 0000000..801dbda --- /dev/null +++ b/tests/scenes/lighting/maps/cork_lightmap_indirect.jpg diff --git a/tests/scenes/lighting/materials/copper.material b/tests/scenes/lighting/materials/copper.material new file mode 100644 index 0000000..a4fdfc7 --- /dev/null +++ b/tests/scenes/lighting/materials/copper.material @@ -0,0 +1,178 @@ +<Material name="copper" version="1.0"> + <MetaData > + <Property formalName="Environment Map" name="uEnvironmentTexture" description="Environment texture for the material" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="environment" default="./maps/materials/spherical_checker.png" category="Material"/> + <Property formalName="Enable Environment" name="uEnvironmentMappingEnabled" description="Enable environment mapping" type="Boolean" default="True" category="Material"/> + <Property formalName="Baked Shadow Map" name="uBakedShadowTexture" description="Baked shadow texture for the material" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="shadow" default="./maps/materials/shadow.png" category="Material"/> + <Property formalName="Enable Shadow Mapping" name="uShadowMappingEnabled" description="Enable shadow mapping" type="Boolean" default="False" category="Material"/> + <Property formalName="Roughness" name="roughness" type="Float" min="0.000000" max="1.000000" default="0.000000" description="Roughness of the material. 0 is fully specular, 1 is fully diffuse" category="Material"/> + <Property formalName="Metal Color" name="metal_color" type="Color" default="0.805 0.395 0.305" description="Color of the material" category="Material"/> + </MetaData> + <Shaders type="GLSL" version="330"> + <Shader> + <Shared> </Shared> +<VertexShader> + </VertexShader> + <FragmentShader> + +// add enum defines +#define scatter_reflect 0 +#define scatter_transmit 1 +#define scatter_reflect_transmit 2 + +#define QT3DS_ENABLE_UV0 1 +#define QT3DS_ENABLE_WORLD_POSITION 1 +#define QT3DS_ENABLE_TEXTAN 1 +#define QT3DS_ENABLE_BINORMAL 0 + +#include "vertexFragmentBase.glsllib" + +// set shader output +out vec4 fragColor; + +// add structure defines +struct layer_result +{ + vec4 base; + vec4 layer; + mat3 tanFrame; +}; + + +// temporary declarations + vec4 tmpShadowTerm; + +layer_result layers[1]; + +#include "SSAOCustomMaterial.glsllib" +#include "sampleLight.glsllib" +#include "sampleProbe.glsllib" +#include "sampleArea.glsllib" +#include "square.glsllib" +#include "calculateRoughness.glsllib" +#include "evalBakedShadowMap.glsllib" +#include "evalEnvironmentMap.glsllib" +#include "luminance.glsllib" +#include "microfacetBSDF.glsllib" +#include "physGlossyBSDF.glsllib" +#include "simpleGlossyBSDF.glsllib" +#include "fresnelLayer.glsllib" + +bool evalTwoSided() +{ + return( false ); +} + +vec3 computeFrontMaterialEmissive() +{ + return( vec3( 0, 0, 0 ) ); +} + +void computeFrontLayerColor( in vec3 normal, in vec3 lightDir, in vec3 viewDir, in vec3 lightDiffuse, in vec3 lightSpecular, in float materialIOR, float aoFactor ) +{ +#if QT3DS_ENABLE_CG_LIGHTING + layers[0].base += tmpShadowTerm * vec4( 0.0f, 0.0f, 0.0f, 1.0f ); + 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.0f, 0.0f, 0.0f, 1.0f ); + 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.0f, 0.0f, 0.0f, 1.0f ); + layers[0].layer += tmpShadowTerm * microfacetSampledBSDF( layers[0].tanFrame, viewDir, roughness, roughness, scatter_reflect ); + +#else + layers[0].base += tmpShadowTerm * vec4( 0.0f, 0.0f, 0.0f, 1.0f ); + 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.0f : luminance( vec3( 1, 1, 1 ) ) ); +} + +float evalCutout() +{ + return( 1.000000 ); +} + +vec3 computeNormal() +{ + return( normal ); +} + +void computeTemporaries() +{ + tmpShadowTerm = evalBakedShadowMap( texCoord0 ); +} + +vec4 computeLayerWeights( in float alpha ) +{ + vec4 color; + color = fresnelLayer( normal, vec3( 25.65, 25.65, 25.65 ), 1.000000, vec4( metal_color, 1.0).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/tests/scenes/lighting/models/testCube/meshes/Cube.mesh b/tests/scenes/lighting/models/testCube/meshes/Cube.mesh Binary files differnew file mode 100644 index 0000000..7b17e27 --- /dev/null +++ b/tests/scenes/lighting/models/testCube/meshes/Cube.mesh diff --git a/tests/scenes/lighting/models/testCube/testCube.import b/tests/scenes/lighting/models/testCube/testCube.import new file mode 100644 index 0000000..f1e6ef2 --- /dev/null +++ b/tests/scenes/lighting/models/testCube/testCube.import @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<UIP Version="1" > + <Project Revision="1" > + <Graph > + <Group id="__import__root__" > + <Model id="Cube" name="Cube" orientation="Right Handed" position="0 0 -0" rotation="-90 -0 0" rotationorder="XYZr" scale="100 100 100" sourcepath="meshes/Cube.mesh" > + <Material id="Material" name="Material" blendmode="Normal" diffuse="0.8 0.8 0.8" emissivepower="0" opacity="100" specularamount="0" specularroughness="20" /> + </Model> + </Group> + </Graph> + <Import SrcFile="../../../../Blender/testCube/testCube.fbx" ImageDir="Images" MeshDir="Meshes" > + <Mesh > + <Source >Cube</Source> + <Dest >meshes/Cube.mesh</Dest> + </Mesh> + </Import> + </Project> +</UIP> |