diff --git a/.obsidian/plugins/various-complements/histories.json b/.obsidian/plugins/various-complements/histories.json index 06b690a..cd8c1c9 100644 --- a/.obsidian/plugins/various-complements/histories.json +++ b/.obsidian/plugins/various-complements/histories.json @@ -1 +1 @@ -{"582020846":{"582020846":{"currentFile":{"count":1,"lastUpdated":1727792069567}}},"根据bComputeExport,分别使用RDG的ComputeShader与PixelShader输出DepthStencil。":{"根据bComputeExport,分别使用RDG的ComputeShader与PixelShader输出DepthStencil。":{"currentFile":{"count":1,"lastUpdated":1727249472660}}},"MeshDraw":{"MeshDraw":{"internalLink":{"count":1,"lastUpdated":1727260163677}}},"实现了一个在屏幕空间宽度恒定的":{"实现了一个在屏幕空间宽度恒定的":{"currentFile":{"count":1,"lastUpdated":1728700795488}}},"TsDirectorCamManagerActor":{"TsDirectorCamManagerActor":{"currentFile":{"count":1,"lastUpdated":1729139925413}}},"Bloom":{"Bloom":{"currentFile":{"count":1,"lastUpdated":1729490733473}}}} \ No newline at end of file +{"582020846":{"582020846":{"currentFile":{"count":1,"lastUpdated":1727792069567}}},"根据bComputeExport,分别使用RDG的ComputeShader与PixelShader输出DepthStencil。":{"根据bComputeExport,分别使用RDG的ComputeShader与PixelShader输出DepthStencil。":{"currentFile":{"count":1,"lastUpdated":1727249472660}}},"MeshDraw":{"MeshDraw":{"internalLink":{"count":1,"lastUpdated":1727260163677}}},"实现了一个在屏幕空间宽度恒定的":{"实现了一个在屏幕空间宽度恒定的":{"currentFile":{"count":1,"lastUpdated":1728700795488}}},"TsDirectorCamManagerActor":{"TsDirectorCamManagerActor":{"currentFile":{"count":1,"lastUpdated":1729139925413}}},"Bloom":{"Bloom":{"currentFile":{"count":1,"lastUpdated":1729490733473}}},"FBloomFinalizeApplyConstantsCS":{"FBloomFinalizeApplyConstantsCS":{"currentFile":{"count":1,"lastUpdated":1729584275683}}},"解决NaiLin高跟":{"解决NaiLin高跟":{"currentFile":{"count":1,"lastUpdated":1729587089926}}}} \ No newline at end of file diff --git a/01-Diary/周小结/2024.10.md b/01-Diary/周小结/2024.10.md index b7eb1e8..8e3ee4f 100644 --- a/01-Diary/周小结/2024.10.md +++ b/01-Diary/周小结/2024.10.md @@ -9,4 +9,6 @@ # 10.21~10.26 1. 给运营与导播部署共享盘。 2. 使用闲置路由器测试为什么飞书无法进行局域网传文件的问题。 -3. 解决NaiLin高跟 <=>切换的问题 \ No newline at end of file +3. 解决NaiLin高跟 <=>切换的问题。 +4. 解决SiNuo、XinYi ChaosBone 无法Igone RootMotion问题。 +5. 添加Native 控制VJ播放函数。 \ No newline at end of file diff --git a/03-UnrealEngine/卡通渲染相关资料/渲染功能/PostProcess/ToonPostProcess.md b/03-UnrealEngine/卡通渲染相关资料/渲染功能/PostProcess/ToonPostProcess.md index 1324380..5ce856c 100644 --- a/03-UnrealEngine/卡通渲染相关资料/渲染功能/PostProcess/ToonPostProcess.md +++ b/03-UnrealEngine/卡通渲染相关资料/渲染功能/PostProcess/ToonPostProcess.md @@ -5,15 +5,41 @@ excerpt: tags: rating: ⭐ --- +# FFT + # Bloom Bloom主要分 - Bloom - FFTBloom - LensFlares + +BloomThreshold,ClampMin = "-1.0", UIMax = "8.0"。 +相关逻辑位于: +```c++ +if (bBloomSetupRequiredEnabled) +{ + const float BloomThreshold = View.FinalPostProcessSettings.BloomThreshold; + + FBloomSetupInputs SetupPassInputs; + SetupPassInputs.SceneColor = DownsampleInput; + SetupPassInputs.EyeAdaptationBuffer = EyeAdaptationBuffer; + SetupPassInputs.EyeAdaptationParameters = &EyeAdaptationParameters; + SetupPassInputs.LocalExposureParameters = &LocalExposureParameters; + SetupPassInputs.LocalExposureTexture = CVarBloomApplyLocalExposure.GetValueOnRenderThread() ? LocalExposureTexture : nullptr; + SetupPassInputs.BlurredLogLuminanceTexture = LocalExposureBlurredLogLumTexture; + SetupPassInputs.Threshold = BloomThreshold; + SetupPassInputs.ToonThreshold = View.FinalPostProcessSettings.ToonBloomThreshold; + + DownsampleInput = AddBloomSetupPass(GraphBuilder, View, SetupPassInputs); +} +``` ## FFTBloom ***普通Bloom算法只能做到圆形光斑,对于自定义形状的就需要使用FFTBloom。*** +- FFT Bloom:https://zhuanlan.zhihu.com/p/611582936 +- Unity FFT Bloom:https://github.com/AKGWSB/FFTConvolutionBloom + ### 频域与卷积定理 图像可以视为二维的信号,而一个信号可以通过 **不同频率** 的 Sine & Cosine 函数的线性叠加来近似得到。对于每个频率的函数,我们乘以一个常数振幅并叠加到最终的结果上,这些振幅叫做 **频谱**。值得注意的是所有的 F_k 都是 **复数**: @@ -23,6 +49,13 @@ Bloom主要分 一一对位的乘法速度是远远快于需要循环累加的朴素卷积操作。因此接下来我们的目标就是找到一种方法,建立图像信号与其频域之间的联系。在通信领域通常使用傅里叶变换来进行信号的频、时域转换 ### 相关代码 +- c++ + - AddFFTBloomPass() + - FBloomFinalizeApplyConstantsCS (Bloom计算完成) + - AddTonemapPass(),PassInputs.Bloom = Bloom与PassInputs.SceneColorApplyParamaters +- Shader + - + **FBloomFindKernelCenterCS**:用于找到Bloom效果的核(Kernel)中心(纹理中找到最亮的像素)。用于在一个,并记录其位置。主要通过计算Luminance来获取到中心区域,而在这里的中心区域可以有多个,这也代表着在最终输出的SceneColor里可以有多个【曝点光晕(Bloom)效果】