《Real-Time Rendering》第四版学习笔记——Chapter 5 Shading Basics(一)

本文是《Real-Time Rendering》第四版的学习笔记,主要介绍着色模型的基本概念,包括写实风格和风格化外观的着色模型。接着详细探讨了光源类型,如方向光、点光源和聚光灯,以及着色模型的实现,包括计算频率、材质系统的设计策略。文章还讨论了在实现着色模型时需要考虑的因素,如计算频率、常量更新和性能优化。
摘要由CSDN通过智能技术生成

引言

着色模型根据应用可以主要分为两大类:写实风格(photorealism)和风格化外观(stylized appearance)。

一、着色模型

着色模型描述了物体的颜色对于各种因素(如表面方向、视角、光照等)应该如何产生颜色变化。

着色模型通常包含一些属性来控制外观的变化。

以Gooch着色模型为例。该着色模型是非写实风格的着色模型,主要目的是提升工程制图领域的细节清晰度。其主要理念是对比表面法线和光源位置,同时收到视角影响。数学定义如下:
c s h a d e d = s c h i g h l i g h t + ( 1 − s ) ( t c w a r m + ( 1 − t ) c c o o l ) \mathbf c_{shaded}=s\mathbf c_{highlight}+(1-s)(t\mathbf c_{warm}+(1-t)\mathbf c_{cool}) cshaded=schighlight+(1s)(tcwarm+(1t)ccool)
其中部分中间变量定义如下:
c c o o l = ( 0 , 0 , 0.55 ) + 0.25 c s u r f a c e , c w a r m = ( 0.3 , 0.3 , 0 ) + 0.25 c s u r f a c e , c h i g h l i g h t = ( 1 , 1 , 1 ) , t = ( n ⋅ l ) + 1 2 , r = 2 ( n ⋅ l ) n − l , s = ( 100 ( r ⋅ v ) − 97 ) ∓ \mathbf c_{cool}=(0,0,0.55)+0.25\mathbf c_{surface},\\ \mathbf c_{warm}=(0.3,0.3,0)+0.25\mathbf c_{surface},\\ \mathbf c_{highlight}=(1,1,1),\\ t=\cfrac{(\mathbf n\cdot\mathbf l)+1}{2},\\ \mathbf r=2(\mathbf n\cdot\mathbf l)\mathbf n-\mathbf l,\\ s=(100(\mathbf r\cdot\mathbf v)-97)^{\mp} ccool=(0,0,0.55)+0.25csurface,cwarm=(0.3,0.3,0)+0.25csurface,chighlight=(1,1,1),t=2(nl)+1,r=2(nl)nl,s=(100(rv)97)

其中常见的数学操作:限制操作 ∓ \mp ,如限制高光混合因子取值范围;点乘操作,对于单位向量来说,可以直接计算两个向量的夹角余弦,可用于计算光线与法线夹角等;线性插值操作,在着色器内置函数中很常见,如lerpmix等。 r = 2 ( n ⋅ l ) n − l \mathbf r=2(\mathbf n\cdot\mathbf l)\mathbf n-\mathbf l r=2(nl)nl是用于计算光线 l \mathbf l l对于 n \mathbf n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董小虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值