public void AddRequestToPendingBlitFromCache(HDShadowRequest request) { if (request.isMixedCached) { m_MixedRequestsPendingBlits.Add(request); } }
internal void UpdateShadowRequest(int index, HDShadowRequest shadowRequest) { if (index >= m_ShadowRequestCount) { return; } m_ShadowRequests[index] = shadowRequest; switch (shadowRequest.shadowMapType) { case ShadowMapType.PunctualAtlas: { m_Atlas.AddShadowRequest(shadowRequest); break; } case ShadowMapType.CascadedDirectional: { m_CascadeAtlas.AddShadowRequest(shadowRequest); break; } case ShadowMapType.AreaLightAtlas: { m_AreaLightShadowAtlas.AddShadowRequest(shadowRequest); break; } } ; }
internal void UpdateShadowRequest(int index, HDShadowRequest shadowRequest, ShadowMapUpdateType updateType) { if (index >= m_ShadowRequestCount) { return; } m_ShadowRequests[index] = shadowRequest; bool addToCached = updateType == ShadowMapUpdateType.Cached || updateType == ShadowMapUpdateType.Mixed; bool addDynamic = updateType == ShadowMapUpdateType.Dynamic || updateType == ShadowMapUpdateType.Mixed; switch (shadowRequest.shadowMapType) { case ShadowMapType.PunctualAtlas: { if (addToCached) { cachedShadowManager.punctualShadowAtlas.AddShadowRequest(shadowRequest); } if (addDynamic) { m_Atlas.AddShadowRequest(shadowRequest); if (updateType == ShadowMapUpdateType.Mixed) { m_Atlas.AddRequestToPendingBlitFromCache(shadowRequest); } } break; } case ShadowMapType.CascadedDirectional: { m_CascadeAtlas.AddShadowRequest(shadowRequest); break; } case ShadowMapType.AreaLightAtlas: { if (addToCached) { cachedShadowManager.areaShadowAtlas.AddShadowRequest(shadowRequest); } if (addDynamic) { m_AreaLightShadowAtlas.AddShadowRequest(shadowRequest); if (updateType == ShadowMapUpdateType.Mixed) { m_AreaLightShadowAtlas.AddRequestToPendingBlitFromCache(shadowRequest); } } break; } } ; }
internal void UpdateShadowRequest(int index, HDShadowRequest shadowRequest, bool isCached = false) { if (index >= m_ShadowRequestCount) { return; } m_ShadowRequests[index] = shadowRequest; switch (shadowRequest.shadowMapType) { case ShadowMapType.PunctualAtlas: { if (isCached) { cachedShadowManager.punctualShadowAtlas.AddShadowRequest(shadowRequest); } else { m_Atlas.AddShadowRequest(shadowRequest); } break; } case ShadowMapType.CascadedDirectional: { m_CascadeAtlas.AddShadowRequest(shadowRequest); break; } case ShadowMapType.AreaLightAtlas: { if (isCached) { cachedShadowManager.areaShadowAtlas.AddShadowRequest(shadowRequest); } else { m_AreaLightShadowAtlas.AddShadowRequest(shadowRequest); } break; } } ; }
HDShadowData CreateShadowData(HDShadowRequest shadowRequest, HDShadowAtlas atlas) { HDShadowData data = new HDShadowData(); var devProj = shadowRequest.deviceProjection; var view = shadowRequest.view; data.proj = new Vector4(devProj.m00, devProj.m11, devProj.m22, devProj.m23); data.pos = shadowRequest.position; data.rot0 = new Vector3(view.m00, view.m01, view.m02); data.rot1 = new Vector3(view.m10, view.m11, view.m12); data.rot2 = new Vector3(view.m20, view.m21, view.m22); data.shadowToWorld = shadowRequest.shadowToWorld; data.cacheTranslationDelta = new Vector3(0.0f, 0.0f, 0.0f); var viewport = shadowRequest.isInCachedAtlas ? shadowRequest.cachedAtlasViewport : shadowRequest.dynamicAtlasViewport; // Compute the scale and offset (between 0 and 1) for the atlas coordinates float rWidth = 1.0f / atlas.width; float rHeight = 1.0f / atlas.height; data.atlasOffset = Vector2.Scale(new Vector2(rWidth, rHeight), new Vector2(viewport.x, viewport.y)); data.shadowMapSize = new Vector4(viewport.width, viewport.height, 1.0f / viewport.width, 1.0f / viewport.height); data.normalBias = shadowRequest.normalBias; data.worldTexelSize = shadowRequest.worldTexelSize; data.shadowFilterParams0.x = shadowRequest.shadowSoftness; data.shadowFilterParams0.y = HDShadowUtils.Asfloat(shadowRequest.blockerSampleCount); data.shadowFilterParams0.z = HDShadowUtils.Asfloat(shadowRequest.filterSampleCount); data.shadowFilterParams0.w = shadowRequest.minFilterSize; data.zBufferParam = shadowRequest.zBufferParam; if (atlas.HasBlurredEVSM()) { data.shadowFilterParams0 = shadowRequest.evsmParams; } data.isInCachedAtlas = shadowRequest.isInCachedAtlas ? 1.0f : 0.0f; return(data); }
internal void AddShadowRequest(HDShadowRequest shadowRequest) { m_ShadowRequests.Add(shadowRequest); }