@@ -102,6 +102,21 @@ struct GlassMatInstance : public MaterialInstance {
102102 GlassMatInstance (Ref<GlassMat> m) : MaterialInstance(m, priority) {}
103103};
104104
105+ struct BakedMat : public LitMaterial {
106+ BakedMat () : LitMaterial(" bakedlight" , PipelineOptions{}, { .requiredAttributes = {
107+ .position = true ,
108+ .normal = true ,
109+ .tangent = true ,
110+ .bitangent = true ,
111+ .uv0 = true ,
112+ .lightmapUV = true
113+ } }) {}
114+ };
115+
116+ struct BakedMatInstance : public MaterialInstance {
117+ BakedMatInstance (Ref<BakedMat> m) : MaterialInstance(m) {}
118+ };
119+
105120struct Level : public RavEngine ::World {
106121
107122 GameObject camRoot, camHeadUD;
@@ -225,22 +240,27 @@ struct Level : public RavEngine::World {
225240 }
226241
227242 // baked lighting demo
243+ constexpr static renderlayer_t bakedLayer = 0b01 ;
228244 {
229- auto bakedMat = RavEngine::New<PBRMaterialInstance>(Material::Manager::Get<PBRMaterial>());
245+ auto bakedMat = RavEngine::New<PBRMaterialBakedInstance>(Material::Manager::Get<PBRMaterialBaked>());
246+ auto lightmapDirTex = Texture::Manager::Get (" Lightmap-0_comp_dir.png" );
230247 auto lightmapTex = Texture::Manager::Get (" Lightmap-0_comp_light.exr" );
248+ bakedMat->SetBakedEmissivityTexture (lightmapTex);
249+ bakedMat->SetBakedDirectionTexture (lightmapDirTex);
231250
232- bakedMat->SetAlbedoColor ({1 ,0 ,0 ,1 });
233251 auto bakedCubeObj = Instantiate<GameObject>();
234252 bakedCubeObj.EmplaceComponent <StaticMesh>(MeshCollectionStaticManager::Get (" bakedcube" ), bakedMat);
235253 auto & cubeTransform = bakedCubeObj.GetTransform ();
236254 cubeTransform.SetLocalScale ({ 0.01 });
237255 cubeTransform.SetLocalPosition ({-20 ,1 ,0 });
238-
256+ bakedCubeObj.SetEntityRenderlayer (bakedLayer); // doesn't exist on any layer the lights illuminate
257+ #if 0
239258 auto bakedPlaneObj = Instantiate<GameObject>();
240259 bakedPlaneObj.EmplaceComponent<StaticMesh>(MeshCollectionStaticManager::Get("bakedplane"), bakedMat);
241260 auto& planeTransform = bakedPlaneObj.GetTransform();
242261 planeTransform.SetLocalScale({ 0.01 });
243262 planeTransform.SetLocalPosition({ -20,1,0 });
263+ #endif
244264 }
245265
246266 // wine glasses
@@ -285,7 +305,10 @@ struct Level : public RavEngine::World {
285305 auto & light = lightsEntity.EmplaceComponent <DirectionalLight>();
286306 light.SetIntensity (4 );
287307 light.SetCastsShadows (true );
288- lightsEntity.EmplaceComponent <AmbientLight>().SetIntensity (0.2 );
308+ light.SetIlluminationLayers (~bakedLayer);
309+ auto & ambientLight = lightsEntity.EmplaceComponent <AmbientLight>();
310+ ambientLight.SetIntensity (0.2 );
311+ ambientLight.SetIlluminationLayers (~bakedLayer);
289312
290313
291314 lightsEntity.GetTransform ().LocalRotateDelta (vector3{ deg_to_rad (45 ), deg_to_rad (45 ),0 });
0 commit comments