Files
DX12/EngineTest/Lights.cpp
2026-03-19 18:27:49 +08:00

85 lines
2.2 KiB
C++

/**
* @file Lights.cpp
* @brief 渲染测试场景灯光创建与销毁逻辑。
*/
#include "EngineAPI/GameEntity.h"
#include "EngineAPI/Light.h"
#include "EngineAPI/TransformComponent.h"
#include "Graphics_Beta/Renderer.h"
#include "Test.h"
#if TEST_RENDERER
using namespace XEngine;
game_entity::entity create_one_game_entity(math::v3 position, math::v3 rotation, const char* script_name);
void remove_game_entity(game_entity::entity_id id);
const u64 left_set{ 0 };
const u64 right_set{ 1 };
utl::vector<graphics::light> lights;
constexpr math::v3
rgb_to_color(u8 r, u8 g, u8 b) { return { r / 255.f, g / 255.f, b / 255.f }; }
void
generate_lights()
{
// LEFT_SET
graphics::light_init_info info{};
info.entity_id = create_one_game_entity({}, {}, nullptr).get_id();
info.type = graphics::light::directioinal;
info.light_set_key = left_set;
info.intensity = 1.f;
info.color = rgb_to_color(174, 174, 174);
lights.emplace_back(graphics::create_light(info));
info.entity_id = create_one_game_entity({}, { math::pi * 0.5f,0,0 }, nullptr).get_id();
info.color = rgb_to_color(17, 27, 28);
lights.emplace_back(graphics::create_light(info));
info.entity_id = create_one_game_entity({}, { -math::pi * 0.5f,0,0 }, nullptr).get_id();
info.color = rgb_to_color(63, 47, 38);
lights.emplace_back(graphics::create_light(info));
//// RIGHT_SET
//info.entity_id = create_one_game_entity({}, {}, nullptr).get_id();
//info.type = graphics::light::directioinal;
//info.light_set_key = right_set;
//info.intensity = 1.f;
//info.color = rgb_to_color(174, 174, 174);
//lights.emplace_back(graphics::create_light(info));
//info.entity_id = create_one_game_entity({}, { math::pi * 0.5f,0,0 }, nullptr).get_id();
//info.color = rgb_to_color(17, 27, 28);
//lights.emplace_back(graphics::create_light(info));
//info.entity_id = create_one_game_entity({}, { -math::pi * 0.5f,0,0 }, nullptr).get_id();
//info.color = rgb_to_color(63, 47, 38);
//lights.emplace_back(graphics::create_light(info));
}
void
remove_lights()
{
for (auto& light : lights)
{
const game_entity::entity_id id{ light.entity_id() };
graphics::remove_light(light.get_id(), light.get_light_set_key());
remove_game_entity(id);
}
lights.clear();
}
#endif