36 for (
size_t i = 0; i < localLights.size(); i++) {
37 Light* light = localLights[i];
38 const bool needsRendering = _shadowRenderer->needsShadowRendering(light);
47 for (
int face = 0; face < faceCount; face++) {
48 auto renderPass = std::make_shared<RenderPassShadowLocalNonClustered>(_device, _shadowRenderer, light, face, applyVsm);
56 const std::shared_ptr<GraphicsDevice>& device,
57 std::vector<std::unique_ptr<ShadowMap>>& ownedShadowMaps)
63 for (
auto* light : localLights) {
64 if (!light || !light->castShadows() || !light->enabled()) {
69 if (!light->shadowMap()) {
72 light->setShadowMap(shadowMap.get());
73 ownedShadowMaps.push_back(std::move(shadowMap));
75 spdlog::warn(
"[LocalShadow] shadow map allocation FAILED for light");
79 if (!light->shadowMap()) {
88 const int faceCount = light->numShadowFaces();
89 for (
int face = 0; face < faceCount; ++face) {
107 shadowCam->
setFov(std::min(light->outerConeAngle() * 2.0f, 179.0f));
109 shadowCam->
setFarClip(std::max(light->range(), 0.1f));
113 shadowCam->
setFarClip(std::max(light->range(), 0.1f));
118 const auto& rts = light->shadowMap()->renderTargets();
119 if (renderTargetIndex <
static_cast<int>(rts.size())) {
147 light->setShadowViewProjection(viewportBias * shadowVP);