首页 > 其他分享 >渲染中的光照着色方式:PBR(Physically Based Rendering,物理基础渲染)与 传统经验渲染

渲染中的光照着色方式:PBR(Physically Based Rendering,物理基础渲染)与 传统经验渲染

时间:2024-06-18 16:21:46浏览次数:10  
标签:Based PBR BRDF 渲染 着色 表面 模型

参考《Unity Shader 入门精要》十八章 基于物理的渲染

 

与PBR(Physically Based Rendering,物理基础渲染)对应的渲染方法通常被称为“传统渲染”或“基于经验的渲染”(Empirical Rendering)。以下是两者的主要区别:

传统渲染

传统渲染方法基于经验规则和艺术调整,而不是物理定律。这种方法主要依赖于开发人员和艺术家的直觉和经验,通过调整各种参数和技巧来实现所需的视觉效果。

特点

  1. 经验法则

    • 传统渲染方法依赖于经验法则和艺术调整,而非严格的物理模拟。
  2. 简单的光照模型

    • 使用简单的光照模型,如 Phong 着色模型、Blinn-Phong 着色模型和 Lambert 着色模型。
  3. 不一定遵循能量守恒

    • 光照计算不一定遵循能量守恒原则,可能导致非物理的光照效果。
  4. 容易实现和调整

    • 实现相对简单,适用于硬件性能有限或开发周期较短的项目。

常见的传统着色模型

  1. Phong 着色模型

    • 计算出每个顶点的颜色,并在片元(像素)阶段进行插值。
  2. Blinn-Phong 着色模型

    • Phong 模型的改进版,引入了半角向量以简化计算。
  3. Lambert 着色模型

    • 仅考虑漫反射光。

 

PBR(Physically Based Rendering,物理基础渲染)是一种计算机图形学技术,用于实现更加逼真和一致的光照效果。PBR 通过模拟光与物体表面相互作用的物理原理,生成更加真实的图像。PBR 着色模型的核心理念是将物理属性作为基础,结合环境光和材质属性,计算出最终的光照效果。

PBR 的基本概念

PBR 基于以下几个核心概念:

  1. BRDF(双向反射分布函数)

    • BRDF 描述了光线如何从表面反射。常用的 BRDF 模型包括 Lambertian(用于漫反射)和 Cook-Torrance(用于镜面反射)。
  2. 能量守恒

    • PBR 着色模型遵循能量守恒原理,即反射的光线总能量不会超过入射光线的总能量。
  3. 微表面理论

    • 微表面理论假设表面由许多微小的面片组成,这些面片的法线方向分布决定了光的反射特性。

PBR 的材质属性

PBR 着色通常使用以下几种材质属性:

  1. Albedo(反照率)

    • 表示表面的基础颜色,不包含任何光照信息。
  2. Metalness(金属度)

    • 表示材质的金属性质。金属材质的金属度为1,非金属材质的金属度为0。金属材质通常会影响表面的反射特性和颜色。
  3. Roughness(粗糙度)

    • 描述表面的光滑程度。粗糙度为0表示完全光滑的表面,粗糙度为1表示完全粗糙的表面。粗糙度会影响高光的扩散程度。
  4. Normal(法线)

    • 用于表示表面的法线方向,影响光线的反射和折射。
  5. Ambient Occlusion(环境光遮蔽)

    • 表示表面的自阴影效果,用于模拟小范围内的光线遮蔽。
  6. Specular(镜面反射)

    • 用于非金属材质,表示镜面反射的颜色和强度。

PBR 着色模型

常见的 PBR 着色模型包括:

  1. 金属/粗糙度(Metallic/Roughness)

    • 使用 Albedo、Metalness 和 Roughness 等属性。
    • Unity 标准着色器使用的就是这种模型。
  2. 镜面/光滑度(Specular/Glossiness)

    • 使用 Albedo、Specular 和 Glossiness 等属性。

Unity 中的 PBR

在 Unity 中,可以使用标准着色器(Standard Shader)实现 PBR。Unity 标准着色器支持金属/粗糙度模型,可以通过材质属性面板设置相关参数。

 

物理基础渲染(PBR)的理论和数学实现基于模拟光线与物体表面相互作用的物理原理。PBR的核心是BRDF(双向反射分布函数),它描述了入射光线和反射光线之间的关系。以下是PBR的理论基础和数学实现的详细介绍。

PBR 的理论基础

1. 能量守恒

PBR 遵循能量守恒原理,即反射的光线总能量不会超过入射光线的总能量。反射光和吸收光之和等于入射光。

2. 微表面理论

微表面理论假设表面由许多微小的面片组成,这些面片的法线方向分布决定了光的反射特性。

3. Fresnel 效应

Fresnel 效应描述了反射光的强度随着观察角度的变化而变化。对于金属材质,反射光颜色与材质颜色相关;对于非金属材质,反射光为白色。

4. Cook-Torrance BRDF

Cook-Torrance BRDF 是一种常用的 BRDF 模型,它由三部分组成:Fresnel 项、几何项和微表面法线分布项。

PBR 的数学实现

1. Cook-Torrance BRDF

Cook-Torrance BRDF 用于计算反射光的强度和颜色。其公式如下:

2. Fresnel 项

Fresnel 项描述了反射光的强度随着观察角度的变化:

3. 几何遮蔽项

几何遮蔽项描述了光线被遮蔽的程度:

4. 微表面法线分布项

微表面法线分布项描述了表面微法线的分布:

PBR 着色器示例

以下是一个使用 Cook-Torrance BRDF 的 Unity 着色器示例:

Shader "Custom/PBRShader"
{
    Properties
    {
        _MainTex("Albedo (RGB)", 2D) = "white" {}
        _Metallic("Metallic", Range(0.0, 1.0)) = 0.0
        _Glossiness("Smoothness", Range(0.0, 1.0)) = 0.5
        _NormalMap("Normal Map", 2D) = "bump" {}
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        #pragma surface surf Standard fullforwardshadows

        sampler2D _MainTex;
        sampler2D _BumpMap;
        half _Metallic;
        half _Glossiness;

        struct Input
        {
            float2 uv_MainTex;
            float2 uv_BumpMap;
        };

        void surf(Input IN, inout SurfaceOutputStandard o)
        {
            half4 c = tex2D(_MainTex, IN.uv_MainTex);
            o.Albedo = c.rgb;
            o.Metallic = _Metallic;
            o.Smoothness = _Glossiness;
            o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
        }
        ENDCG
    }
    FallBack "Diffuse"
}

具体的实现步骤

  1. 计算半角向量

    float3 halfVector = normalize(lightDir + viewDir);
  2. 计算 Fresnel 项

    float3 F = F0 + (1.0 - F0) * pow(1.0 - dot(viewDir, halfVector), 5.0);
  3. 计算几何遮蔽项

    float G = G_Smith(normal, viewDir, lightDir, roughness);
  4. 计算微表面法线分布项

    float D = D_GGX(normal, halfVector, roughness);
  5. 计算 Cook-Torrance BRDF

    float3 specular = (D * G * F) / (4 * dot(normal, lightDir) * dot(normal, viewDir));

通过这些步骤,可以实现 PBR 的核心计算,并将结果用于最终的光照计算,从而生成逼真的光照效果。

总结

PBR(物理基础渲染)基于模拟光线与物体表面相互作用的物理原理,通过 BRDF(特别是 Cook-Torrance BRDF)实现更为逼真的光照效果。PBR 的核心概念包括能量守恒、微表面理论和 Fresnel 效应,其数学实现涉及 Fresnel 项、几何遮蔽项和微表面法线分布项。通过这些理论和数学模型,可以在游戏和图形应用中实现高度逼真的材质和光照效果。

标签:Based,PBR,BRDF,渲染,着色,表面,模型
From: https://www.cnblogs.com/jeason1997/p/18254567

相关文章

  • 渲染农场:设计师提高工作效率的得力助手
    在当今数字化设计时代,设计师们面临着前所未有的创作挑战。随着项目复杂度的攀升,高质量的视觉效果成为标配,而这也意味着渲染任务日益繁重。渲染,这一将设计构想转化为真实感图像的过程,往往是创意实现中的瓶颈。在此背景下,渲染农场应运而生,成为设计师们提高工作效率、释放创意潜力的......
  • 服务端渲染(SSR): 了解Vue的服务端渲染能力,以及它如何帮助改善SEO和提升首屏渲染速度
    一、介绍服务端渲染(SSR)定义和作用 服务端渲染(ServerSideRendering,简称SSR)是一种流行的渲染页面的方法,它主要是在服务器上执行页面的初始化渲染,生成全量的HTML,并把这些HTML发送给客户端。换句话说,服务器已经预先生成好了页面的标记并发送到客户端,客户端只需要填充......
  • 解析Html Canvas的卓越性能与高效渲染策略
    一、什么是Canvas想必学习前端的同学们对Canvas都不陌生,它是HTML5新增的“画布”元素,可以使用JavaScript来绘制图形。Canvas元素是在HTML5中新增的标签用于在网页实时生成图像,并且可以操作图像内容,基本上它是一个可以用JavaScript操作的位图(bitmap)。Canvas由一个可绘制区域H......
  • 解析Html Canvas的卓越性能与高效渲染策略
    一、什么是Canvas想必学习前端的同学们对Canvas都不陌生,它是HTML5新增的“画布”元素,可以使用JavaScript来绘制图形。Canvas元素是在HTML5中新增的标签用于在网页实时生成图像,并且可以操作图像内容,基本上它是一个可以用JavaScript操作的位图(bitmap)。Canvas由一个可绘......
  • 通过Vue3+高德地图的JS API实现市区地图渲染
    效果图:核心代码:<scriptsetup>import{onMounted,onUnmounted}from'vue';importAMapLoaderfrom'@amap/amap-jsapi-loader';import{message}from'ant-design-vue';importschoolfrom'@/assets/icons/school......
  • C4D如何预览动画?C4D动画云渲染助力
    C4D是一款功能丰富的3D设计软件,以其快速的预览渲染和多样的渲染插件而闻名,其卓越的渲染效果赢得了CG行业专业人士的广泛赞誉。尽管C4D的渲染功能十分强大,但对于初学者而言,其复杂的渲染设置可能会带来一些挑战。本文一起来看看C4D中的渲染设置技巧,一起来看看相关内容吧。在Cinema......
  • 云渲染动画:C4D如何正确渲染导出动画?
    ​C4D是一款功能强大的3D建模、动画和渲染软件,在制作动画时,正确的渲染和导出流程至关重要,以确保动画质量和流畅性。帧率概念动画就是一幅幅图片连贯起来,30帧/秒,就是一秒出现30张图片一般国外都是30,所以很多软件也是默认30帧。但国内一般25帧/秒就好,这样可以节约电脑资源和渲染......
  • 【FFmpeg】SDL 音视频开发 ② ( SDL 视频显示函数 | 设置渲染器目标纹理 | 设置渲染器
    文章目录一、SDL视频显示函数1、SDL的渲染器和纹理之间的关系2、SDL_SetRenderTarget函数-设置渲染器目标纹理3、SDL_SetRenderDrawColor函数-设置渲染器颜色4、SDL_RenderClear函数-清除渲染器5、SDL_RenderDrawRect函数-渲染器绘制矩形6、SDL_Render......
  • dlib安装问题:ERROR: Could not build wheels for dlib, which is required to install
      #问题安装报错。 >pipinstalldlibDefaultingtouserinstallationbecausenormalsite-packagesisnotwriteableCollectingdlibDownloadingdlib-19.24.4.tar.gz(3.3MB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━......
  • CBT-LLM: A Chinese Large Language Model for Cognitive Behavioral Therapy-based M
    本文是LLM系列文章,针对《CBT-LLM:AChineseLargeLanguageModelforCognitiveBehavioralTherapy-basedMentalHealthQuestionAnswering》的翻译。CBT-LLM:一个基于认知行为治疗的心理健康问答的中文大语言模型摘要1引言2相关工作3方法4实验5结论和未......