首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏未竟东方白

    【笔记】《Phong Deformation: ...》的思路

    . ---- PartB 两种变形插值 Phong变形的思路来自于光照计算中的Phong光照着色和三角剖分问题中的Phong细分算法. 这种插值实际上就是Phong着色中的重心插值. ---- PartE Phong变形 在最开始我们说到Phong变形的特点就是组合了两种不同的插值方式, 前面已经展现了两种不同的插值, 其中单元中心的插值法变形不足而顶点插值变形过度, 那么Phong ---- PartF 误差分析 对于Phong变形, 作者在文中给出了详细的实验证明和理论证明, 其关键是证明Phong变形能够达到对真实变形的拟合准确度. 一维上的插值有能达到精度的算法所以Phong变形意义不大, 但是在三维上就不是这样了. 经过类似的推导可以证明Phong在三维上同样能够达到三次方精度如下.

    1.2K20发布于 2020-12-22
  • 来自专栏音视频技术学习笔记

    24.opengl高级光照-Blinn-Phong

    这一讲原理比较简单,代码也很容易实现,Blinn在Phong的基础上提了一个小点的优化,实现起来一共两三行代码,就名垂千古。 这一章节讲Blinn-Phong通过对冯氏光照做的一些优化。 冯氏光照的问题分析: ? 冯氏光照 图中地板光照边缘出现明显的断裂,过渡不自然。 ? Blinn-Phong算法原理 1977年,James F. Blinn在冯氏着色模型上加以拓展,引入了Blinn-Phong着色模型。 冯氏光照 vs Blinn-Phong 我自己本地参考实现的效果,PHONG 和 BLINN-PHONG并没有这么大区别,不知道原因。 ? "Blinn-Phong" : "Phong") << std::endl; // glfw: swap buffers and poll IO events (keys

    1.2K20发布于 2020-07-15
  • 来自专栏个人编程笔记

    vsg-使用 Phong 光照渲染管线

    vsg 中已经内置了基于Phong光照模型构建渲染管线,无需自己写shader就可以实现对应的渲染效果。

    15100编辑于 2025-12-09
  • 来自专栏叶子的开发者社区

    【GAMES101】Lecture 08 着色-Blinn-Phong反射模型

    Blinn-Phong反射模型-高光 我们在lecture7的时候讲了这个Blinn-Phong反射模型的漫反射部分,现在我们继续讲Blinn-Phong反射模型的高光部分 这个高光是怎么产生的呢,我们说当这个物体的表面非常光滑的时候 的接近程度来衡量看到的高光程度,类似的我们可以得出一个计算高光的式子,因为方向向量都是单位向量,所以余弦值就等于方向向量的点乘结果 这里我们为什么要用n和h来衡量而不直接用R和v呢,其实用R和v衡量的也有,叫phong 反射模型,我们这里讲的是Blinn-Phong反射模型,是Phong反射模型的一个改进,那为什么是改进呢,主要是因为h的计算更加简单,直接将v和l相加单位化即可,而R则需要通过反射算子来计算, 那为什么还有一个指数 ,不能明明n和h离的比较远也有高光吧,所以要让这个高光出现的范围变小,而加上一个指数运算就可以加剧这个变化的程度 下面这个图就可以看出p和高光的变化,当这个p变大的时候,高光部分就会缩小 Blinn-Phong ,也不管是从哪来的,反正就是这个强度的光,然后也和观察方向没关系,从哪看都是这个样子,当然还存在一个吸收率,所以环境光La=Ka×Ia Blinn-Phong反射模型 到这里Blinn-Phong反射模型就讲完了三个部分了

    28210编辑于 2024-01-19
  • 来自专栏Kindem的博客

    GPU Pro 1 笔记 - As Simple as Possible Tessellation for Interactive Applications

    笔记 文章提出了一种新的曲面细分方法,可以在运行时增加新的顶点,提高几何细节,被称为 Phong Tessellation,下面是普通渲染与曲面细分的对比图: Phong Shading / PhongPhong Normal Tessellation Expr 作者按照他们的思路,提供了一次非三角面片上的曲面细分,也就是开始说的 Phong Tessellation: Phong Tessellation 看图更好理解: Phong Tesselation Desc 作者还给了 Shader: Phong Tesselation Shader 然后作者又了提一句,说 Phong Normal Tessellation 已经能提供不错的细节提升了,而且相对他们这个算法来说开销更小,不一定所有顶点都需要使用 Phong Tessellation。 Phong Tessellation 在轮廓上的表现会比 Phong Normal Tessellation 更好,所以只需要在轮廓上采用 Phong Normal Tessellation 就行了,然后给了一个计算

    51220编辑于 2022-08-12
  • 来自专栏LET

    Material小结

    Blinn-Phong OpenGL中渲染会使用Blinn-Phong: 其中 , , 是材质对应的颜色, 是光线 在法线 对应的反射, 和 是对应的光源和环境光。 Blinn-Phong模型是一种经验式的模型,不是完全基于物理的模型(physically plausible),一个正确的BRDF要求: 始终大于零,positive 满足交换律: 能量守恒: 因此 ,在PBR中我们可以使用改造后的Phong模型: 简单回顾,我们需要基于物理的材质模型来真实的模拟光和物体的交互,可以等同于BRDF。 除了最简单的Lambertian BRDF(diffuse)和pure specular BRDF之后,我们也有了修改后的Phong模型,但Phong本质上还是属于经验模型。 我想额外说一下PhongPhong是一名越南人,1973年获得博士学位,发明了Phong模型,当时他已经知道自己得了白血病,1975年去世。

    1.1K40发布于 2020-12-03
  • 来自专栏Unity游戏开发

    Shader-基础光照-高光反射光照模型

    Specular_fragment.png 逐像素渲染光照更加平滑 将光照的处理交给fragment 实现完整的Phong光照模型 struct v2f { color = ambient + diffuse + specular; return fixed4(color, 1.0); } Blinn-Phong Blinn-Phong.png 得到一个新的公式 fixed3 halfDir = normalize(worldLightDir + viewDir); fixed3 specular = _LightColor0 Specular_Blinn-Phong.png 对比Phong模型,高光部分更加明显

    1.2K30发布于 2019-05-28
  • 来自专栏简易现代魔法

    图形学入门(三):基础着色

    为了能在计算机中快速进行渲染,我们需要采用一些方法简化这个计算过程,现在被广泛使用的着色模型叫 Phong 反射模型(Phong Reflection Model)2。 因此 Phong 反射模型的计算中并不会产生阴影。 Blinn-Phong 反射模型对 Phong 反射模型进行了改进,它和 Phong 反射模型的区别仅在于镜面高光分量的计算方式。 反射模型中实现和 Phong 反射模型类似的镜面高光效果,就需要选用一个更大的光亮度,一般而言会选择 4 倍于 Phong 反射模型中的数值,如下图7所示: ? 需要注意的是,这里说的 Phong 着色法和前文说的 Phong 反射模型不是一回事,只是恰好都是 Bui Tuong Phong8提出的,因此都冠有他的名字。

    1.9K40发布于 2021-08-10
  • 来自专栏腾讯社交用户体验设计

    3D to H5工作流应用手册 [理论篇]

    3、Phong平滑着色法 Phong Shading 与Gouraud Shading不同的是,它会对顶点的法线进行插值,并透过每个像素的法向量计算光照特性。 Blinn-PhongPhong的进阶版,着色性能更好,且高光弥散更自然。 Phong镜面反射模型视觉构成 [ F5 ] Blinn–Phong 模型: 是在OpenGL和Direct3D里默认的着色模型,一种调优后的非物理的Phong模型,顶点间的像素插值使用Gouraud着色算法 ,比Phong着色算法性能更好,而且高光效果也更平滑。 Phong及Blinn-Phong镜面反射模型对比 [ F6 ] Cook-Torrance/GGX 光照模型 如果你用过C4D的默认渲染器,那么一定在材质的反射通道设置中见过它俩。

    3.3K42编辑于 2022-01-06
  • 光照模型:Gouraud模型

    它不是一个新的光照模型(不改变 Phong/Blinn-Phong 的公式),这两种光照模型的不同就是在不同的阶段计算光照。 逐片元(Phong shading 思路):在片元着色器对每个像素算 ambient + diffuse + specular,细节最丰富。 γ*C_C片元阶段(Fragment Shader)不再算光照,只输出 C_pixel优缺点:项目 Gouraud Shading(逐顶点光照) Phong 低端硬件、物体很多、以漫反射为主、网格较密的模型 高质量渲染、强高光材质(金属/塑料/车漆等)、网格较粗也要细节的情况 与光照模型关系 可搭配 Lambert/Phong /Blinn-Phong;只是“在哪算” 同样可搭配 Lambert/Phong/Blinn-Phong;只是“在哪算”一句话总结 省算力,用插值“糊”出光照

    7300编辑于 2026-02-10
  • 光照模型:Phone模型

    Phong模型1) 向量定义(对应图中几何关系)P:表面上一点(当前像素/片元的位置)N:该点的单位法线(图中虚线方向),N = normalize(N)L:光照方向(从点 P 指向光源 LightPos 2) Phong 三项:环境光 + 漫反射 + 镜面反射Phong 模型把最终颜色/亮度写成: I = I_ambient + I_diffuse + I_specular(1) 环境光 Ambient vec3 color = (ambient + diffuse + specular) * uObjectColor; FragColor = vec4(color, 1.0);}Blinn-Phong 模型在phong模型的基础上,改变高光的计算,不使用反射向量,取而代之的是半程向量H:H = normalize(L + V)几何意义:H 是 L 和 V 的角平分方向。 镜面反射(替换为 Half Vector):undefined I_specular = Ks * Il * (max(dot(N, H), 0) ^ shininess)其他项计算和phong模型的计算一致

    7800编辑于 2026-02-10
  • 来自专栏音视频技术学习笔记

    34.opengl PBR-理论

    一、什么是PBR PBR:Physically Babsed Rendering,基于物理的着色 为什么有PBR phong光照模型,没有遵循能量守恒,对光照的反应看起来并不真实,PBR是对phong光照模型的一次革命性升级 应用基于物理的BRDF,双向反射分布函数(Bidirectional Reflective Distribution Function) ,它的作用是基于表面材质属性来对入射辐射率进行缩放或者加权 Blinn-Phong 如下公式所示:是一个2元积分,其中cosθ表示入射角和平面法线夹角,联系前面的Phong光照可以想象,夹角越大,平面上的反射光照越弱。 ? 辐射率 ? 辐射率计算 5.

    96240发布于 2020-08-26
  • 来自专栏图形学与OpenGL

    CG实验6 简单光照与材质

    3.实验原理: Phong光照明模型是由物体表面上一点P反射到视点的光强I为环境光的反射光强Ie、理想漫反射光强Id、和镜面反射光Is的总和,即 I=Iaka+IpKd(LN)+IpKs(RV)n I 在用Phong模型进行真实感图形计算时,对物体表面上的每个点P,均需计算光线的反射方向R,再由V计算 。 结合RGB颜色模型,Phong光照明模型的最终形式详见教材公式(8.21)。 H.fy=(H.fy/mo);H.fz=(H.fz/mo); glClearColor(0.0, 0.0, 0.0, 0.0); glShadeModel(GL_SMOOTH); } //根据Phong 模型计算光强 Color Phong(int x0, int y0, int r, int x, int y) { Vector N; float z,alpha,theta,Ks; Ks=1.0

    82030发布于 2019-02-25
  • 来自专栏未竟东方白

    【笔记】《计算机图形学》(10)——表面着色

    经过这样的处理我们可以用较小的性能代价在低面数的表面上绘制出比较真实的光照效果 ---- 10.2 Phong着色 对于非郎伯物体,例如台球之类的光滑物体,光线找到表面会产生高光。 高光的特性是: 会根据视角改变而改变 有一定的角度扩散而非完全的镜面反射,但是角度越大亮度越低 由于反射是发生在物体表面的,所以反射颜色主要由光源颜色决定 Phong光照模型 为了模拟现实中非郎伯物体的高光特性 这样得到的下面的式子就是1975年Phong提出的Phong着色,这个控制着高光可视范围的指数p称为Phong指数: ? 由于余弦值小于1,指数处理必然是指数越大值越小,直观上看就是下面的对比图。 最后我们合并Lambert散射与Phong高光的式子,顺便给Phong再加一个反射强度控制参数cp得到完整的着色公式,这称为Blinn-Phong着色 ? 在也就是像8.2中提到的在面片着色器中让面片每个像素都插值得到自己的法线方向然后进行一次Phong着色,这样可以得到非常平滑的高光效果 ?

    1.7K20发布于 2020-09-28
  • 来自专栏图形学与OpenGL

    机械版CG 实验6 简单光照明模型实现

    3.实验原理: Phong光照明模型是由物体表面上一点P反射到视点的光强I为环境光的反射光强Ie、理想漫反射光强Id、和镜面反射光Is的总和,即 ? 在用Phong模型进行真实感图形计算时,对物体表面上的每个点P,均需计算光线的反射方向R,再由V计算。 结合RGB颜色模型,Phong光照明模型最终有如下的形式: ? 本次实验中,光源在无穷远处,光线方向为单位向量L(0.5, 0.5, 0.707),视点在无穷远处,视线方向V为(0, 0, 1)。 );H.fy=(H.fy/mo);H.fz=(H.fz/mo); glClearColor(0.0, 0.0, 0.0, 0.0); glShadeModel(GL_SMOOTH); } //根据Phong 模型计算光强 Color Phong(int x0, int y0, int r, int x, int y) { Vector N; float z,alpha,theta,Ks; Ks=1.0

    80610发布于 2018-10-09
  • 来自专栏郭艺帆的专栏

    ARKit 进阶:材质

    不管是 phong 还是 blinn-phong 光照模型,镜面反射都与材质的shininess相关, shinness越大,反射效果对比度越高,类似玻璃反射。 4. phong 在计算Lambert漫反射的基础上,加上了用phong算法计算的镜面反射。 ambient * al + diffuse * max(0, dot(N, L)) + specular * pow(max(0, dot(R, E)), shininess) 公式的最后一项就是phong phong 主要根据材质的diffuse与ambient, specular, shininess来计算着色。 5. blinn 在计算Lambert漫反射的基础上,加上了用blinn-phong算法计算的镜面反射。blinn-phong 的镜面反射光过渡更平滑,效果更真实,也是大多数渲染管线的默认光照模型。

    4K01发布于 2017-09-27
  • 来自专栏小L的魔法馆

    Computer Graphics note(4):Shading

    文章目录 一.Shading Model(Blinn-Phong Reflectance Model) 1.相关定义(Shading is Local) 2.Diffuse Reflection(Blinn-Phong 有许多着色模型,例如Blinn-Phong Reflectance Model(经验模型)。如下图着色模型: ? 如果采用的观测方向 v\pmb{v}vvv 和镜面反射方向 R\pmb{R}RRR 的夹角的话,其模型称为Phong Reflectance Model,而Blinn-Phong Reflectance 4.Ambitent Term(Blinn-Phong)) 此时暂时假设任何一点接收到环境光的强度相同,如下图: ? 注意区别Phong shading是个着色频率,Blinn-Phong是个着色模型。

    2.1K30发布于 2020-07-07
  • 来自专栏AutoML(自动机器学习)

    【GAMES101-现代计算机图形学课程笔记】Lecture 08 Shading 2 (着色管线)

    本节内容概要: Blinn-Phong reflectance model Specular and ambient terms Shading frequencies Graphics pipeline Blinn-Phong reflectance model 1.1 漫反射项 在介绍本节内容之前首先回顾一下上一节的内容。 前面提到了光可以分成三种: 漫反射光、镜面反射光和环境光。 但是反射方向在实际计算时并不太好计算,所以Blinn-Phong模型对此作了改进,简化了计算,具体方法见下图: image.png 可以看到首先需要定义一个新的矢量,叫做半程矢量(bisector) 2.3 Phong shading Phone shading的大致思路是首先计算出每个三角形顶点的法向方向,之后通过插值的方法计算出三角形内部每个像素的法线方向,这样就可以精确地对每个像素着色。 感觉上来说phong shading应该是效果最好的,但是也是最麻烦的。可是phong shading真的就一定是最好的吗?

    1.7K20发布于 2020-06-12
  • 来自专栏程序员叨叨叨

    3.2 Vertex Shader Program

    例如, 输入一个三角面片,顶点着色程序对其进行 phong 光照计算,只计算三个顶点的光照颜色,而三角面片内部点的颜色按照硬件默认的算法(Gourand 明暗处理或 者快速 phong 明暗处理)进行插值 ,如果图形硬件比较先进,默认的处理算法较好(快速 phong 明暗处理),则效果也会较好;如果图形硬件使用 Gourand 明暗处理算法,则会出现马赫带效应(条带化)。

    66930发布于 2018-08-28
  • 来自专栏我的技术专栏

    [CG编程] 基本光照模型的实现与拓展以及常见光照模型解析

    该模型基于phong光照模型。在下面的这个例子里,我们使用一个“基本”模型对固定功能光照模型提供了简化版本。 光照模型 Blinn-Phong反射模型是Phong模型的变种,它们的区别在于在计算镜面反射项时,Phong采用的向量是R与V,而该模型采用的向量是H与N,H向量是什么? Blinn-Phong模型以降低准确度来换取更高的性能,然而Blinn-Phong模型实际上模拟某些材质时,比Phong模型更加接近实验测量数据。 Blinn-phong模型几乎是早起计算机游戏的唯一之选,并且以硬件形式入驻早起GPU固定管线。 对phong代码稍作修改,可以得Blinn-Phong模型的代码: struct Matrial { float ka ; //环境反射量 float kd ; //漫反射量

    1.4K20发布于 2018-07-02
领券