|
Wildvine Engine
Referencia Doxygen del codigo propio de Wildvine Engine.
|
Ejecuta el pipeline de render forward del motor. Más...
#include <ForwardRenderer.h>
Diagrama de colaboración de ForwardRenderer:Métodos públicos | |
| void | destroy () |
| Libera los recursos internos del renderer. | |
| ID3D11ShaderResourceView * | getPreShadowSRV () const |
| ID3D11ShaderResourceView * | getShadowMapSRV () const |
| HRESULT | init (Device &device) |
| Inicializa buffers, shaders y estados del renderer. | |
| void | render (DeviceContext &deviceContext, const Camera &camera, RenderScene &scene, EditorViewportPass &viewportPass) |
Renderiza la escena completa sobre el EditorViewportPass. | |
| void | resize (Device &device, unsigned int width, unsigned int height) |
| Reconstuye los recursos dependientes del tamano del viewport. | |
| void | updatePerFrame (const Camera &camera, const RenderScene &scene, DeviceContext &deviceContext) |
| Actualiza constantes globales usadas por el frame actual. | |
Métodos privados | |
| void | buildQueues (RenderScene &scene, const Camera &camera) |
| HRESULT | createBlendStates (Device &device) |
| HRESULT | createShadowResources (Device &device) |
| void | renderObject (DeviceContext &deviceContext, const RenderObject &object, RenderPassType passType) |
| void | renderOpaquePass (DeviceContext &deviceContext) |
| void | renderPreShadowDebugPass (DeviceContext &deviceContext, RenderScene &scene) |
| void | renderShadowObject (DeviceContext &deviceContext, const RenderObject &object) |
| void | renderShadowPass (DeviceContext &deviceContext) |
| void | renderSkyboxPass (DeviceContext &deviceContext, RenderScene &scene) |
| void | renderTransparentPass (DeviceContext &deviceContext) |
| ID3D11BlendState * | resolveBlendState (const Material *material) const |
| void | updateLightMatrices (const Camera &camera, const RenderScene &scene) |
Atributos privados | |
| ID3D11BlendState * | m_additiveBlendState = nullptr |
| ID3D11BlendState * | m_alphaBlendState = nullptr |
| bool | m_applyShadows = true |
| float | m_blendFactor [4] = { 0.0f, 0.0f, 0.0f, 0.0f } |
| CBPerFrame | m_cbPerFrame {} |
| CBPerMaterial | m_cbPerMaterial {} |
| CBPerObject | m_cbPerObject {} |
| ID3D11BlendState * | m_opaqueBlendState = nullptr |
| std::vector< const RenderObject * > | m_opaqueQueue |
| Buffer | m_perFrameBuffer |
| Buffer | m_perMaterialBuffer |
| Buffer | m_perObjectBuffer |
| ID3D11BlendState * | m_premultipliedBlendState = nullptr |
| EditorViewportPass | m_preShadowDebugPass |
| Texture | m_shadowDepthSRV |
| Texture | m_shadowDepthTexture |
| DepthStencilView | m_shadowDSV |
| unsigned int | m_shadowMapSize = 2048 |
| RasterizerState | m_shadowRasterizer |
| ShaderProgram | m_shadowShader |
| DepthStencilState | m_transparentDepthStencil |
| std::vector< const RenderObject * > | m_transparentQueue |
Esta clase construye colas opacas y transparentes, genera recursos de sombras, actualiza buffers por frame y compone el resultado final dentro del viewport del editor.
Definición en la línea 30 del archivo ForwardRenderer.h.
|
private |
Definición en la línea 129 del archivo ForwardRenderer.cpp.
Hace referencia a RenderObject::distanceToCamera, m_opaqueQueue, m_transparentQueue, RenderScene::opaqueObjects y RenderScene::transparentObjects.
Referenciado por render().
|
private |
Definición en la línea 417 del archivo ForwardRenderer.cpp.
Hace referencia a m_additiveBlendState, m_alphaBlendState, Device::m_device, m_opaqueBlendState y m_premultipliedBlendState.
Referenciado por init().
|
private |
Definición en la línea 354 del archivo ForwardRenderer.cpp.
Hace referencia a LayoutBuilder::Add(), ShaderProgram::init(), Texture::init(), DepthStencilView::init(), RasterizerState::init(), m_shadowDepthSRV, m_shadowDepthTexture, m_shadowDSV, m_shadowMapSize, m_shadowRasterizer y m_shadowShader.
Referenciado por init().
| void ForwardRenderer::destroy | ( | ) |
Definición en la línea 109 del archivo ForwardRenderer.cpp.
Hace referencia a Buffer::destroy(), DepthStencilState::destroy(), DepthStencilView::destroy(), EditorViewportPass::destroy(), RasterizerState::destroy(), ShaderProgram::destroy(), Texture::destroy(), m_additiveBlendState, m_alphaBlendState, m_opaqueBlendState, m_opaqueQueue, m_perFrameBuffer, m_perMaterialBuffer, m_perObjectBuffer, m_premultipliedBlendState, m_preShadowDebugPass, m_shadowDepthSRV, m_shadowDepthTexture, m_shadowDSV, m_shadowRasterizer, m_shadowShader, m_transparentDepthStencil, m_transparentQueue y SAFE_RELEASE.
Referenciado por BaseApp::destroy().
|
inline |
Definición en la línea 61 del archivo ForwardRenderer.h.
Referenciado por BaseApp::update().
|
inline |
Definición en la línea 60 del archivo ForwardRenderer.h.
Referenciado por BaseApp::update().
| HRESULT ForwardRenderer::init | ( | Device & | device | ) |
Definición en la línea 21 del archivo ForwardRenderer.cpp.
Hace referencia a createBlendStates(), createShadowResources(), DepthStencilState::init(), Buffer::init(), EditorViewportPass::init(), m_perFrameBuffer, m_perMaterialBuffer, m_perObjectBuffer, m_preShadowDebugPass y m_transparentDepthStencil.
Referenciado por BaseApp::init().
| void ForwardRenderer::render | ( | DeviceContext & | deviceContext, |
| const Camera & | camera, | ||
| RenderScene & | scene, | ||
| EditorViewportPass & | viewportPass | ||
| ) |
Definición en la línea 89 del archivo ForwardRenderer.cpp.
Hace referencia a EditorViewportPass::begin(), buildQueues(), EditorViewportPass::clearDepth(), renderOpaquePass(), renderPreShadowDebugPass(), renderShadowPass(), renderSkyboxPass(), renderTransparentPass(), EditorViewportPass::setViewport() y updatePerFrame().
Referenciado por BaseApp::render().
|
private |
Definición en la línea 260 del archivo ForwardRenderer.cpp.
Hace referencia a MaterialParams::alphaCutoff, CBPerMaterial::AlphaCutoff, MaterialParams::ao, CBPerMaterial::AO, MaterialParams::baseColor, CBPerMaterial::BaseColor, MaterialInstance::bindTextures(), DeviceContext::DrawIndexed(), MaterialParams::emissiveStrength, CBPerMaterial::EmissiveStrength, Material::getDepthStencilState(), Material::getDomain(), MaterialInstance::getMaterial(), MaterialInstance::getParams(), Material::getRasterizerState(), Material::getSamplerState(), Material::getShader(), DeviceContext::IASetPrimitiveTopology(), m_cbPerMaterial, m_cbPerObject, m_perMaterialBuffer, m_perObjectBuffer, m_transparentDepthStencil, Masked, MaterialParams::metallic, CBPerMaterial::Metallic, MaterialParams::normalScale, CBPerMaterial::NormalScale, RasterizerState::render(), ShaderProgram::render(), Buffer::render(), SamplerState::render(), DepthStencilState::render(), MaterialParams::roughness, CBPerMaterial::Roughness, Transparent, Buffer::update() y CBPerObject::World.
Referenciado por renderOpaquePass() y renderTransparentPass().
|
private |
Definición en la línea 209 del archivo ForwardRenderer.cpp.
Hace referencia a m_applyShadows, m_blendFactor, m_opaqueBlendState, m_opaqueQueue, m_perFrameBuffer, m_shadowDepthSRV, Texture::m_textureFromImg, DeviceContext::OMSetBlendState(), Opaque, DeviceContext::PSSetShaderResources(), Buffer::render() y renderObject().
Referenciado por render() y renderPreShadowDebugPass().
|
private |
Definición en la línea 188 del archivo ForwardRenderer.cpp.
Hace referencia a EditorViewportPass::begin(), EditorViewportPass::clearDepth(), EditorViewportPass::isValid(), m_applyShadows, m_preShadowDebugPass, DeviceContext::PSSetShaderResources(), renderOpaquePass(), renderSkyboxPass(), renderTransparentPass() y EditorViewportPass::setViewport().
Referenciado por render().
|
private |
Definición en la línea 332 del archivo ForwardRenderer.cpp.
Hace referencia a DeviceContext::DrawIndexed(), DeviceContext::IASetPrimitiveTopology(), m_cbPerObject, DeviceContext::m_deviceContext, m_perObjectBuffer, m_shadowShader, ShaderProgram::render(), Buffer::render(), Buffer::update() y CBPerObject::World.
Referenciado por renderShadowPass().
|
private |
Definición en la línea 157 del archivo ForwardRenderer.cpp.
Hace referencia a DeviceContext::ClearDepthStencilView(), DepthStencilView::m_depthStencilView, m_opaqueQueue, m_perFrameBuffer, m_shadowDSV, m_shadowMapSize, m_shadowRasterizer, m_shadowShader, ShaderProgram::m_VertexShader, DeviceContext::OMSetRenderTargets(), DeviceContext::PSSetShaderResources(), RasterizerState::render(), Buffer::render(), renderShadowObject() y DeviceContext::RSSetViewports().
Referenciado por render().
|
private |
Definición en la línea 252 del archivo ForwardRenderer.cpp.
Hace referencia a Skybox::render() y RenderScene::skybox.
Referenciado por render() y renderPreShadowDebugPass().
|
private |
Definición en la línea 229 del archivo ForwardRenderer.cpp.
Hace referencia a m_applyShadows, m_blendFactor, m_opaqueBlendState, m_perFrameBuffer, m_shadowDepthSRV, Texture::m_textureFromImg, m_transparentQueue, DeviceContext::OMSetBlendState(), DeviceContext::PSSetShaderResources(), Buffer::render(), renderObject(), resolveBlendState() y Transparent.
Referenciado por render() y renderPreShadowDebugPass().
| void ForwardRenderer::resize | ( | Device & | device, |
| unsigned int | width, | ||
| unsigned int | height | ||
| ) |
Definición en la línea 64 del archivo ForwardRenderer.cpp.
Hace referencia a m_preShadowDebugPass y EditorViewportPass::resize().
Referenciado por BaseApp::handleEditorViewportResize().
|
private |
Definición en la línea 479 del archivo ForwardRenderer.cpp.
Hace referencia a Additive, Alpha, Material::getBlendMode(), Material::getDomain(), m_additiveBlendState, m_alphaBlendState, m_opaqueBlendState, m_premultipliedBlendState, Opaque, PremultipliedAlpha y Transparent.
Referenciado por renderTransparentPass().
|
private |
Definición en la línea 396 del archivo ForwardRenderer.cpp.
Hace referencia a RenderScene::directionalLights, Camera::getPosition(), CBPerFrame::LightViewProjection, m_cbPerFrame, EU::Vector3::x, EU::Vector3::y y EU::Vector3::z.
Referenciado por updatePerFrame().
| void ForwardRenderer::updatePerFrame | ( | const Camera & | camera, |
| const RenderScene & | scene, | ||
| DeviceContext & | deviceContext | ||
| ) |
Definición en la línea 69 del archivo ForwardRenderer.cpp.
Hace referencia a CBPerFrame::CameraPos, LightData::color, LightData::direction, RenderScene::directionalLights, Camera::getPosition(), Camera::getProj(), Camera::getView(), LightData::intensity, CBPerFrame::LightColor, CBPerFrame::LightDir, m_cbPerFrame, m_perFrameBuffer, CBPerFrame::Projection, Buffer::update(), updateLightMatrices() y CBPerFrame::View.
Referenciado por render().
|
private |
Definición en la línea 84 del archivo ForwardRenderer.h.
Referenciado por createBlendStates(), destroy() y resolveBlendState().
|
private |
Definición en la línea 82 del archivo ForwardRenderer.h.
Referenciado por createBlendStates(), destroy() y resolveBlendState().
|
private |
Definición en la línea 94 del archivo ForwardRenderer.h.
Referenciado por renderOpaquePass(), renderPreShadowDebugPass() y renderTransparentPass().
|
private |
Definición en la línea 86 del archivo ForwardRenderer.h.
Referenciado por renderOpaquePass() y renderTransparentPass().
|
private |
Definición en la línea 96 del archivo ForwardRenderer.h.
Referenciado por updateLightMatrices() y updatePerFrame().
|
private |
Definición en la línea 98 del archivo ForwardRenderer.h.
Referenciado por renderObject().
|
private |
Definición en la línea 97 del archivo ForwardRenderer.h.
Referenciado por renderObject() y renderShadowObject().
|
private |
Definición en la línea 83 del archivo ForwardRenderer.h.
Referenciado por createBlendStates(), destroy(), renderOpaquePass(), renderTransparentPass() y resolveBlendState().
|
private |
Definición en la línea 100 del archivo ForwardRenderer.h.
Referenciado por buildQueues(), destroy(), renderOpaquePass() y renderShadowPass().
|
private |
Definición en la línea 78 del archivo ForwardRenderer.h.
Referenciado por destroy(), init(), renderOpaquePass(), renderShadowPass(), renderTransparentPass() y updatePerFrame().
|
private |
Definición en la línea 80 del archivo ForwardRenderer.h.
Referenciado por destroy(), init() y renderObject().
|
private |
Definición en la línea 79 del archivo ForwardRenderer.h.
Referenciado por destroy(), init(), renderObject() y renderShadowObject().
|
private |
Definición en la línea 85 del archivo ForwardRenderer.h.
Referenciado por createBlendStates(), destroy() y resolveBlendState().
|
private |
Definición en la línea 93 del archivo ForwardRenderer.h.
Referenciado por destroy(), init(), renderPreShadowDebugPass() y resize().
|
private |
Definición en la línea 88 del archivo ForwardRenderer.h.
Referenciado por createShadowResources(), destroy(), renderOpaquePass() y renderTransparentPass().
|
private |
Definición en la línea 87 del archivo ForwardRenderer.h.
Referenciado por createShadowResources() y destroy().
|
private |
Definición en la línea 89 del archivo ForwardRenderer.h.
Referenciado por createShadowResources(), destroy() y renderShadowPass().
|
private |
Definición en la línea 92 del archivo ForwardRenderer.h.
Referenciado por createShadowResources() y renderShadowPass().
|
private |
Definición en la línea 91 del archivo ForwardRenderer.h.
Referenciado por createShadowResources(), destroy() y renderShadowPass().
|
private |
Definición en la línea 90 del archivo ForwardRenderer.h.
Referenciado por createShadowResources(), destroy(), renderShadowObject() y renderShadowPass().
|
private |
Definición en la línea 81 del archivo ForwardRenderer.h.
Referenciado por destroy(), init() y renderObject().
|
private |
Definición en la línea 101 del archivo ForwardRenderer.h.
Referenciado por buildQueues(), destroy() y renderTransparentPass().