渲染用途

默认情况下,Surface Shader 都是以输出到屏幕上,显示场景为主。

但有时候,我们也有一些特殊需要,比如:

  • 渲染为阴影贴图(ShadowMap)
  • 渲染为环境反射图(Reflection Probe)

不同的渲染用途,有不同的渲染流程和细节,因此需要特殊处理。

Surface Shader 框架中,预定义了常见的不同用途的流程,在 资源管理器/internal/chunks/shading-entries/main-functions/ 目录下可以找到。

以下是内置的渲染用途:

常用的渲染用途文件位置备注
渲染到场景(默认)render-to-scene
渲染到阴影贴图render-to-shadowmap
渲染到环境贴图render-to-reflectmap可选
渲染卡通描边misc/silhouette-edge
渲染天空misc/sky
后期处理或通用计算 Passmisc/quad引擎预留

只需要在 Surface Shader 组装 环节引用对应的头文件,就可以完成渲染流程。

比如,在 internal/effects/builtin-standard.effect 中,我们可以看到应用案例:

  1. CCPogram standard-vs %{
  2. ...
  3. #include <shading-entries/main-functions/render-to-scene/vs>
  4. }%
  5. CCProgram shadow-caster-vs %{
  6. ...
  7. #include <shading-entries/main-functions/render-to-shadowmap/vs>
  8. }%
  9. CCPogram standard-fs %{
  10. ...
  11. #include <shading-entries/main-functions/render-to-scene/fs>
  12. }%
  13. CCProgram shadow-caster-fs %{
  14. ...
  15. #include <shading-entries/main-functions/render-to-shadowmap/fs>
  16. }%
  17. CCProgram reflect-map-fs %{
  18. ...
  19. #include <shading-entries/main-functions/render-to-shadowmap/fs>
  20. }%