载入中...
搜索中...
未找到
eve::graphics::ScreenSpaceReflection类 参考

Screen-space reflections (SSR) as a fullscreen post pass. 更多...

#include <ScreenSpaceReflection.h>

Public 成员函数

 ScreenSpaceReflection (Graphics *gfx)
 
 ~ScreenSpaceReflection ()
 
 ScreenSpaceReflection (const ScreenSpaceReflection &)=delete
 
ScreenSpaceReflectionoperator= (const ScreenSpaceReflection &)=delete
 
void setCamera (float eyeX, float eyeY, float eyeZ, float targetX, float targetY, float targetZ, float upX, float upY, float upZ, float fovYDeg, float aspect, float nearZ, float farZ)
 Camera for depth reconstruction (RH + ZO). Builds inv(viewProj) + near/far.
 
void setInvViewProj (const glm::mat4 &invViewProj)
 
void setEnabled (bool enabled)
 Enable/disable the pass. When disabled it emits transparent (0 hit).
 
bool getEnabled () const
 
void setMaxDistance (float meters)
 
void setStepLength (float meters)
 
void setMaxSteps (int steps)
 
void setThickness (float meters)
 
void setStrength (float strength)
 
float getStrength () const
 
bool hasParam (const std::string &name) const
 
void setFloat (const std::string &name, float value)
 
float getFloat (const std::string &name) const
 
void applyFromSceneTo (Graphics *gfx, Texture *sceneColor, Texture *hwDepth, Texture *worldNormal, Canvas *dest)
 Write the SSR result into the currently bound canvas / dest.
 
void applyFromScene (Graphics *gfx, Texture *sceneColor, Texture *hwDepth, Texture *worldNormal)
 Write SSR into the currently bound canvas / screen.
 
CanvasgetReflectionCanvas ()
 Owned reflection canvas (created on first use at the current target size).
 
TexturegetReflectionTexture ()
 The reflection texture from the owned canvas, or nullptr before first apply.
 
ShadergetShader () const
 

详细描述

Screen-space reflections (SSR) as a fullscreen post pass.

Reads the lit scene color, hardware depth (D32) and world normal, and for each pixel ray-marches the reflected ray in screen space. Where the ray hits geometry it emits the reflected scene color with A = hit validity, so a surface (e.g. Water) can blend it over an env-cubemap fallback.

Mirrors GlobalIllumination: manual fullscreen overlay (applyFromSceneTo). It does not auto-run in the default 3D path.

在文件 ScreenSpaceReflection.h26 行定义.

构造及析构函数说明

◆ ScreenSpaceReflection() [1/2]

eve::graphics::ScreenSpaceReflection::ScreenSpaceReflection ( Graphics gfx)
explicit

在文件 ScreenSpaceReflection.cpp37 行定义.

◆ ~ScreenSpaceReflection()

eve::graphics::ScreenSpaceReflection::~ScreenSpaceReflection ( )

在文件 ScreenSpaceReflection.cpp41 行定义.

◆ ScreenSpaceReflection() [2/2]

eve::graphics::ScreenSpaceReflection::ScreenSpaceReflection ( const ScreenSpaceReflection )
delete

成员函数说明

◆ applyFromScene()

void eve::graphics::ScreenSpaceReflection::applyFromScene ( Graphics gfx,
Texture sceneColor,
Texture hwDepth,
Texture worldNormal 
)

◆ applyFromSceneTo()

void eve::graphics::ScreenSpaceReflection::applyFromSceneTo ( Graphics gfx,
Texture sceneColor,
Texture hwDepth,
Texture worldNormal,
Canvas dest 
)

Write the SSR result into the currently bound canvas / dest.

在文件 ScreenSpaceReflection.cpp120 行定义.

引用了 applyFromScene(), eve::graphics::Graphics::getCanvas() , 以及 eve::graphics::Graphics::setCanvas().

◆ getEnabled()

bool eve::graphics::ScreenSpaceReflection::getEnabled ( ) const
inline

在文件 ScreenSpaceReflection.h42 行定义.

◆ getFloat()

float eve::graphics::ScreenSpaceReflection::getFloat ( const std::string &  name) const

◆ getReflectionCanvas()

Canvas * eve::graphics::ScreenSpaceReflection::getReflectionCanvas ( )

Owned reflection canvas (created on first use at the current target size).

在文件 ScreenSpaceReflection.cpp130 行定义.

引用了 eve::graphics::Graphics::getHeight(), eve::graphics::Graphics::getWidth() , 以及 eve::graphics::Graphics::newCanvas().

被这些函数引用 getReflectionTexture().

◆ getReflectionTexture()

Texture * eve::graphics::ScreenSpaceReflection::getReflectionTexture ( )

The reflection texture from the owned canvas, or nullptr before first apply.

在文件 ScreenSpaceReflection.cpp137 行定义.

引用了 c , 以及 getReflectionCanvas().

◆ getShader()

Shader * eve::graphics::ScreenSpaceReflection::getShader ( ) const
inline

在文件 ScreenSpaceReflection.h67 行定义.

◆ getStrength()

float eve::graphics::ScreenSpaceReflection::getStrength ( ) const
inline

在文件 ScreenSpaceReflection.h49 行定义.

◆ hasParam()

bool eve::graphics::ScreenSpaceReflection::hasParam ( const std::string &  name) const

在文件 ScreenSpaceReflection.cpp80 行定义.

引用了 eve::graphics::Shader::hasUniform() , 以及 name.

◆ operator=()

ScreenSpaceReflection & eve::graphics::ScreenSpaceReflection::operator= ( const ScreenSpaceReflection )
delete

◆ setCamera()

void eve::graphics::ScreenSpaceReflection::setCamera ( float  eyeX,
float  eyeY,
float  eyeZ,
float  targetX,
float  targetY,
float  targetZ,
float  upX,
float  upY,
float  upZ,
float  fovYDeg,
float  aspect,
float  nearZ,
float  farZ 
)

Camera for depth reconstruction (RH + ZO). Builds inv(viewProj) + near/far.

在文件 ScreenSpaceReflection.cpp52 行定义.

引用了 fovRad, eve::graphics::perspectiveVulkanRH_ZO(), proj, eve::graphics::Shader::sendFloat(), setInvViewProj() , 以及 view.

◆ setEnabled()

void eve::graphics::ScreenSpaceReflection::setEnabled ( bool  enabled)

Enable/disable the pass. When disabled it emits transparent (0 hit).

在文件 ScreenSpaceReflection.cpp69 行定义.

引用了 enabled , 以及 eve::graphics::Shader::sendFloat().

◆ setFloat()

void eve::graphics::ScreenSpaceReflection::setFloat ( const std::string &  name,
float  value 
)

◆ setInvViewProj()

void eve::graphics::ScreenSpaceReflection::setInvViewProj ( const glm::mat4 &  invViewProj)

在文件 ScreenSpaceReflection.cpp47 行定义.

引用了 eve::graphics::Shader::sendMatrix().

被这些函数引用 setCamera().

◆ setMaxDistance()

void eve::graphics::ScreenSpaceReflection::setMaxDistance ( float  meters)

在文件 ScreenSpaceReflection.cpp74 行定义.

引用了 setFloat() , 以及 v.

◆ setMaxSteps()

void eve::graphics::ScreenSpaceReflection::setMaxSteps ( int  steps)

在文件 ScreenSpaceReflection.cpp76 行定义.

引用了 setFloat() , 以及 v.

◆ setStepLength()

void eve::graphics::ScreenSpaceReflection::setStepLength ( float  meters)

在文件 ScreenSpaceReflection.cpp75 行定义.

引用了 setFloat() , 以及 v.

◆ setStrength()

void eve::graphics::ScreenSpaceReflection::setStrength ( float  strength)

在文件 ScreenSpaceReflection.cpp78 行定义.

引用了 setFloat() , 以及 v.

◆ setThickness()

void eve::graphics::ScreenSpaceReflection::setThickness ( float  meters)

在文件 ScreenSpaceReflection.cpp77 行定义.

引用了 setFloat() , 以及 v.


该类的文档由以下文件生成: