diff --git a/.gitignore b/.gitignore index 2329686..8f469d2 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,5 @@ build/ deps/physx/physx/include/PxConfig.h Testing/ .mayaSwatches +*.blend1 +*.blend2 \ No newline at end of file diff --git a/RavEngine b/RavEngine index c3f7e45..cc5105d 160000 --- a/RavEngine +++ b/RavEngine @@ -1 +1 @@ -Subproject commit c3f7e451232b6a743d2270b7319bccf3eb07afc9 +Subproject commit cc5105d2cc517b1782d1079f17afb04eca43753f diff --git a/Samples/Flags/shaders/flag.fsh b/Samples/Flags/shaders/flag.fsh index e8d18ba..7ffa9e7 100644 --- a/Samples/Flags/shaders/flag.fsh +++ b/Samples/Flags/shaders/flag.fsh @@ -8,7 +8,7 @@ layout(push_constant) uniform UniformBufferObject{ float time; } ubo; -LitOutput frag() +LitOutput frag(EnvironmentData envData) { LitOutput fs_out; diff --git a/Samples/Flags/shaders/flag_special.fsh b/Samples/Flags/shaders/flag_special.fsh index 75a21e1..c7e255e 100644 --- a/Samples/Flags/shaders/flag_special.fsh +++ b/Samples/Flags/shaders/flag_special.fsh @@ -102,7 +102,7 @@ vec3 calcAlt_v2(vec2 uv){ return resCol; } -LitOutput frag() +LitOutput frag(EnvironmentData envData) { LitOutput fs_out; diff --git a/Samples/Flags/shaders/grass.fsh b/Samples/Flags/shaders/grass.fsh index 80673ba..8584c38 100644 --- a/Samples/Flags/shaders/grass.fsh +++ b/Samples/Flags/shaders/grass.fsh @@ -5,7 +5,7 @@ layout(push_constant) uniform UniformBufferObject{ float time; } ubo; -LitOutput frag() +LitOutput frag(EnvironmentData envData) { LitOutput fs_out; diff --git a/Samples/Perf_Draw/shaders/instance_colored.fsh b/Samples/Perf_Draw/shaders/instance_colored.fsh index 82f083b..443d63c 100644 --- a/Samples/Perf_Draw/shaders/instance_colored.fsh +++ b/Samples/Perf_Draw/shaders/instance_colored.fsh @@ -5,7 +5,7 @@ layout(push_constant) uniform UniformBufferObject{ float time; } ubo; -LitOutput frag() +LitOutput frag(EnvironmentData envData) { LitOutput fs_out; fs_out.color = vec4(v_position / 200,1); diff --git a/Samples/Rendering/main.cpp b/Samples/Rendering/main.cpp index 8d8e767..6cc3058 100644 --- a/Samples/Rendering/main.cpp +++ b/Samples/Rendering/main.cpp @@ -102,6 +102,21 @@ struct GlassMatInstance : public MaterialInstance { GlassMatInstance(Ref m) : MaterialInstance(m, priority) {} }; +struct BakedMat : public LitMaterial { + BakedMat() : LitMaterial("bakedlight", PipelineOptions{}, { .requiredAttributes = { + .position = true, + .normal = true, + .tangent = true, + .bitangent = true, + .uv0 = true, + .lightmapUV = true + } }) {} +}; + +struct BakedMatInstance : public MaterialInstance { + BakedMatInstance(Ref m) : MaterialInstance(m) {} +}; + struct Level : public RavEngine::World { GameObject camRoot, camHeadUD; @@ -225,22 +240,27 @@ struct Level : public RavEngine::World { } // baked lighting demo + constexpr static renderlayer_t bakedLayer = 0b01; { - auto bakedMat = RavEngine::New(Material::Manager::Get()); + auto bakedMat = RavEngine::New(Material::Manager::Get()); + auto lightmapDirTex = Texture::Manager::Get("Lightmap-0_comp_dir.png"); auto lightmapTex = Texture::Manager::Get("Lightmap-0_comp_light.exr"); + bakedMat->SetBakedEmissivityTexture(lightmapTex); + bakedMat->SetBakedDirectionTexture(lightmapDirTex); - bakedMat->SetAlbedoColor({1,0,0,1}); auto bakedCubeObj = Instantiate(); bakedCubeObj.EmplaceComponent(MeshCollectionStaticManager::Get("bakedcube"), bakedMat); auto& cubeTransform = bakedCubeObj.GetTransform(); cubeTransform.SetLocalScale({ 0.01 }); cubeTransform.SetLocalPosition({-20,1,0}); - + bakedCubeObj.SetEntityRenderlayer(bakedLayer); // doesn't exist on any layer the lights illuminate +#if 0 auto bakedPlaneObj = Instantiate(); bakedPlaneObj.EmplaceComponent(MeshCollectionStaticManager::Get("bakedplane"), bakedMat); auto& planeTransform = bakedPlaneObj.GetTransform(); planeTransform.SetLocalScale({ 0.01 }); planeTransform.SetLocalPosition({ -20,1,0 }); +#endif } // wine glasses @@ -285,7 +305,10 @@ struct Level : public RavEngine::World { auto& light = lightsEntity.EmplaceComponent(); light.SetIntensity(4); light.SetCastsShadows(true); - lightsEntity.EmplaceComponent().SetIntensity(0.2); + light.SetIlluminationLayers(~bakedLayer); + auto& ambientLight = lightsEntity.EmplaceComponent(); + ambientLight.SetIntensity(0.2); + ambientLight.SetIlluminationLayers(~bakedLayer); lightsEntity.GetTransform().LocalRotateDelta(vector3{ deg_to_rad(45), deg_to_rad(45),0 }); diff --git a/Samples/Rendering/shaders/AsteroidRender.fsh b/Samples/Rendering/shaders/AsteroidRender.fsh index 78cf1ba..1e95d1b 100644 --- a/Samples/Rendering/shaders/AsteroidRender.fsh +++ b/Samples/Rendering/shaders/AsteroidRender.fsh @@ -119,7 +119,7 @@ vec3 rockTexture(in vec2 uv) { } -LitOutput frag() +LitOutput frag(EnvironmentData envData) { LitOutput mat_out; diff --git a/Samples/Rendering/shaders/wineglass.fsh b/Samples/Rendering/shaders/wineglass.fsh index 94d608e..bc5a013 100644 --- a/Samples/Rendering/shaders/wineglass.fsh +++ b/Samples/Rendering/shaders/wineglass.fsh @@ -7,7 +7,7 @@ vec3 colors[] = { vec3(0,0,0.3) }; -LitOutput frag() +LitOutput frag(EnvironmentData envData) { LitOutput mat_out; diff --git a/assets/SimpleBakeTest.blend b/assets/SimpleBakeTest.blend new file mode 100644 index 0000000..9f088ce Binary files /dev/null and b/assets/SimpleBakeTest.blend differ