| 239 | PostFXContext::~PostFXContext() = default; |
| 240 | |
| 241 | void PostFXContext::PrepareResources(IRenderDevice* pDevice, const FrameDesc& Desc, FEATURE_FLAGS FeatureFlags) |
| 242 | { |
| 243 | m_FrameDesc.Index = Desc.Index; |
| 244 | m_FeatureFlags = FeatureFlags; |
| 245 | |
| 246 | if (m_FrameDesc.Width == Desc.Width && m_FrameDesc.Height == Desc.Height) |
| 247 | return; |
| 248 | |
| 249 | m_FrameDesc = Desc; |
| 250 | |
| 251 | RenderDeviceWithCache_N Device{pDevice}; |
| 252 | |
| 253 | { |
| 254 | TextureDesc ResourceDesc; |
| 255 | ResourceDesc.Name = "PostFXContext::ReprojectedDepth"; |
| 256 | ResourceDesc.Type = RESOURCE_DIM_TEX_2D; |
| 257 | ResourceDesc.Width = m_FrameDesc.Width; |
| 258 | ResourceDesc.Height = m_FrameDesc.Height; |
| 259 | ResourceDesc.Format = (m_FeatureFlags & FEATURE_FLAG_HALF_PRECISION_DEPTH) ? TEX_FORMAT_R16_UNORM : TEX_FORMAT_R32_FLOAT; |
| 260 | ResourceDesc.BindFlags = BIND_SHADER_RESOURCE | BIND_RENDER_TARGET; |
| 261 | m_Resources.Insert(RESOURCE_IDENTIFIER_REPROJECTED_DEPTH, Device.CreateTexture(ResourceDesc)); |
| 262 | } |
| 263 | |
| 264 | { |
| 265 | TextureDesc ResourceDesc; |
| 266 | ResourceDesc.Name = "PostFXContext::PreviousDepth"; |
| 267 | ResourceDesc.Type = RESOURCE_DIM_TEX_2D; |
| 268 | ResourceDesc.Width = m_FrameDesc.Width; |
| 269 | ResourceDesc.Height = m_FrameDesc.Height; |
| 270 | ResourceDesc.Format = (m_FeatureFlags & FEATURE_FLAG_HALF_PRECISION_DEPTH) ? TEX_FORMAT_R16_UNORM : TEX_FORMAT_R32_FLOAT; |
| 271 | ResourceDesc.BindFlags = BIND_SHADER_RESOURCE | BIND_RENDER_TARGET; |
| 272 | m_Resources.Insert(RESOURCE_IDENTIFIER_PREVIOUS_DEPTH, Device.CreateTexture(ResourceDesc)); |
| 273 | } |
| 274 | |
| 275 | { |
| 276 | TextureDesc ResourceDesc; |
| 277 | ResourceDesc.Name = "PostFXContext::ClosestMotion"; |
| 278 | ResourceDesc.Type = RESOURCE_DIM_TEX_2D; |
| 279 | ResourceDesc.Width = m_FrameDesc.Width; |
| 280 | ResourceDesc.Height = m_FrameDesc.Height; |
| 281 | ResourceDesc.Format = TEX_FORMAT_RG16_FLOAT; |
| 282 | ResourceDesc.BindFlags = BIND_SHADER_RESOURCE | BIND_RENDER_TARGET; |
| 283 | m_Resources.Insert(RESOURCE_IDENTIFIER_CLOSEST_MOTION, Device.CreateTexture(ResourceDesc)); |
| 284 | } |
| 285 | } |
| 286 | |
| 287 | void PostFXContext::Execute(const RenderAttributes& RenderAttribs) |
| 288 | { |
nothing calls this directly
no outgoing calls
no test coverage detected