|
Wildvine Engine
Referencia Doxygen del codigo propio de Wildvine Engine.
|
Encapsula la creación, compilación y uso de Vertex Shader y Pixel Shader en Direct3D 11. Más...
#include <ShaderProgram.h>
Diagrama de colaboración de ShaderProgram:Métodos públicos | |
| HRESULT | CompileShaderFromFile (char *szFileName, LPCSTR szEntryPoint, LPCSTR szShaderModel, ID3DBlob **ppBlobOut) |
| Compila un shader desde archivo. | |
| HRESULT | CreateInputLayout (Device &device, LayoutBuilder) |
| Crea un Input Layout asociado al Vertex Shader. | |
| HRESULT | CreateShader (Device &device, ShaderType type) |
Crea un shader (Vertex o Pixel) a partir del archivo establecido en m_shaderFileName. | |
| HRESULT | CreateShader (Device &device, ShaderType type, const std::string &fileName) |
| Crea un shader (Vertex o Pixel) a partir de un archivo HLSL. | |
| void | destroy () |
| Libera todos los recursos asociados (shaders, blobs e input layout). | |
| HRESULT | init (Device &device, const std::string &fileName, LayoutBuilder layoutBuilder) |
| Inicializa el programa de shaders desde un archivo HLSL. | |
| void | render (DeviceContext &deviceContext) |
| Aplica el Vertex Shader, Pixel Shader e Input Layout al pipeline. | |
| void | render (DeviceContext &deviceContext, ShaderType type) |
| Aplica únicamente un shader específico al pipeline. | |
| ShaderProgram ()=default | |
| Constructor por defecto. | |
| void | update () |
| Actualiza parámetros internos de los shaders. | |
| ~ShaderProgram ()=default | |
| Destructor por defecto. | |
Atributos públicos | |
| InputLayout | m_inputLayout |
| Input Layout asociado al Vertex Shader. | |
| ID3D11PixelShader * | m_PixelShader = nullptr |
| Pixel Shader compilado y creado en GPU. | |
| ID3D11VertexShader * | m_VertexShader = nullptr |
| Vertex Shader compilado y creado en GPU. | |
Atributos privados | |
| ID3DBlob * | m_pixelShaderData = nullptr |
| Bytecode compilado del Pixel Shader. | |
| std::string | m_shaderFileName |
| Nombre del archivo HLSL asociado a este programa de shaders. | |
| ID3DBlob * | m_vertexShaderData = nullptr |
| Bytecode compilado del Vertex Shader. | |
Esta clase administra el ciclo de vida de un conjunto de shaders (VS y PS), incluyendo su compilación desde archivo, creación en el dispositivo y vinculación al pipeline. Además, maneja el Input Layout asociado al Vertex Shader.
Definición en la lÃnea 22 del archivo ShaderProgram.h.
|
default |
|
default |
No libera automáticamente los recursos COM; llamar a destroy().
| HRESULT ShaderProgram::CompileShaderFromFile | ( | char * | szFileName, |
| LPCSTR | szEntryPoint, | ||
| LPCSTR | szShaderModel, | ||
| ID3DBlob ** | ppBlobOut | ||
| ) |
Llama internamente a D3DCompileFromFile para obtener el bytecode de un shader en función de su punto de entrada y modelo.
| szFileName | Ruta del archivo HLSL. |
| szEntryPoint | Punto de entrada de la función shader (ej. "VSMain"). |
| szShaderModel | Modelo de shader (ej. "vs_5_0", "ps_5_0"). |
| ppBlobOut | Salida con el bytecode compilado. |
S_OK si fue exitoso; código HRESULT en caso de error. Definición en la lÃnea 170 del archivo ShaderProgram.cpp.
Hace referencia a ERROR y SAFE_RELEASE.
Referenciado por CreateShader().
| HRESULT ShaderProgram::CreateInputLayout | ( | Device & | device, |
| LayoutBuilder | layoutBuilder | ||
| ) |
| device | Dispositivo con el que se creará el recurso. |
| Layout | Descripción de los elementos de entrada. |
S_OK si fue exitoso; código HRESULT en caso de error. Definición en la lÃnea 54 del archivo ShaderProgram.cpp.
Hace referencia a ERROR, LayoutBuilder::Get(), InputLayout::init(), Device::m_device, m_inputLayout, m_vertexShaderData y SAFE_RELEASE.
Referenciado por init().
| HRESULT ShaderProgram::CreateShader | ( | Device & | device, |
| ShaderType | type | ||
| ) |
| device | Dispositivo con el que se creará el recurso. |
| type | Tipo de shader a crear. |
S_OK si fue exitoso; código HRESULT en caso de error. Definición en la lÃnea 82 del archivo ShaderProgram.cpp.
Hace referencia a CompileShaderFromFile(), Device::CreatePixelShader(), Device::CreateVertexShader(), ERROR, Device::m_device, m_PixelShader, m_pixelShaderData, m_shaderFileName, m_VertexShader, m_vertexShaderData, PIXEL_SHADER y SAFE_RELEASE.
Referenciado por CreateShader() y init().
| HRESULT ShaderProgram::CreateShader | ( | Device & | device, |
| ShaderType | type, | ||
| const std::string & | fileName | ||
| ) |
| device | Dispositivo con el que se creará el recurso. |
| type | Tipo de shader a crear. |
| fileName | Nombre del archivo HLSL. |
S_OK si fue exitoso; código HRESULT en caso de error. Definición en la lÃnea 145 del archivo ShaderProgram.cpp.
Hace referencia a CreateShader(), ERROR, Device::m_device y m_shaderFileName.
| void ShaderProgram::destroy | ( | ) |
m_VertexShader == nullptr, m_PixelShader == nullptr, m_vertexShaderData == nullptr, m_pixelShaderData == nullptr. Definición en la lÃnea 249 del archivo ShaderProgram.cpp.
Hace referencia a InputLayout::destroy(), m_inputLayout, m_PixelShader, m_pixelShaderData, m_VertexShader, m_vertexShaderData y SAFE_RELEASE.
Referenciado por BaseApp::destroy() y ForwardRenderer::destroy().
| HRESULT ShaderProgram::init | ( | Device & | device, |
| const std::string & | fileName, | ||
| LayoutBuilder | layoutBuilder | ||
| ) |
Compila y crea los shaders (VS y PS) definidos en el archivo indicado, además de crear el Input Layout con la descripción proporcionada.
| device | Dispositivo con el que se crearán los recursos. |
| fileName | Nombre del archivo HLSL que contiene los shaders. |
| Layout | Vector con la descripción de los elementos de entrada (para VS). |
S_OK si fue exitoso; código HRESULT en caso de error.S_OK, los punteros a shaders y el input layout serán válidos. Definición en la lÃnea 13 del archivo ShaderProgram.cpp.
Hace referencia a CreateInputLayout(), CreateShader(), ERROR, Device::m_device, m_shaderFileName, PIXEL_SHADER y VERTEX_SHADER.
Referenciado por ForwardRenderer::createShadowResources(), BaseApp::init() y Skybox::init().
| void ShaderProgram::render | ( | DeviceContext & | deviceContext | ) |
Llama a VSSetShader, PSSetShader y asigna el input layout al contexto.
| deviceContext | Contexto donde se aplicará el programa de shaders. |
Definición en la lÃnea 219 del archivo ShaderProgram.cpp.
Hace referencia a ERROR, DeviceContext::m_deviceContext, InputLayout::m_inputLayout, m_inputLayout, m_PixelShader, m_VertexShader y InputLayout::render().
Referenciado por Skybox::render(), ForwardRenderer::renderObject() y ForwardRenderer::renderShadowObject().
| void ShaderProgram::render | ( | DeviceContext & | deviceContext, |
| ShaderType | type | ||
| ) |
Permite vincular solo el Vertex Shader o solo el Pixel Shader, según el parámetro type.
| deviceContext | Contexto donde se aplicará el shader. |
| type | Tipo de shader a establecer (VS o PS). |
Definición en la lÃnea 231 del archivo ShaderProgram.cpp.
Hace referencia a ERROR, DeviceContext::m_deviceContext, m_PixelShader, m_VertexShader, PIXEL_SHADER y VERTEX_SHADER.
| void ShaderProgram::update | ( | ) |
Método de marcador para futuras extensiones (por ejemplo, recompilar shaders en caliente).
| InputLayout ShaderProgram::m_inputLayout |
Definición en la lÃnea 160 del archivo ShaderProgram.h.
Referenciado por CreateInputLayout(), destroy() y render().
| ID3D11PixelShader* ShaderProgram::m_PixelShader = nullptr |
Definición en la lÃnea 155 del archivo ShaderProgram.h.
Referenciado por CreateShader(), destroy(), render() y render().
|
private |
Definición en la lÃnea 176 del archivo ShaderProgram.h.
Referenciado por CreateShader() y destroy().
|
private |
Definición en la lÃnea 166 del archivo ShaderProgram.h.
Referenciado por CreateShader(), CreateShader() y init().
| ID3D11VertexShader* ShaderProgram::m_VertexShader = nullptr |
Definición en la lÃnea 150 del archivo ShaderProgram.h.
Referenciado por CreateShader(), destroy(), render(), render() y ForwardRenderer::renderShadowPass().
|
private |
Definición en la lÃnea 171 del archivo ShaderProgram.h.
Referenciado por CreateInputLayout(), CreateShader() y destroy().