机器学习实现计算不规则图形面积_《图形编程技术学习》(五十八)用VS实现逐顶点的光照计算...

本文介绍了在Visual Studio(VS)中利用OpenGL的顶点着色器进行光照计算,重点讨论了Blinn-Phong光照明模型、明暗处理方法(常数、Gouraud和Phong),并详细阐述了逐顶点光照计算的过程,包括光照方向、视线方向、法向量的计算,以及光照模型的完整实现。同时,提到了在背面光照时的处理策略。
摘要由CSDN通过智能技术生成

这个系列接近尾声了,自己也着急想早点弄完,最近忙着项目的事情,一连几天没有更新, 更新的时候遇到疑点也没有时间细细研究,大抵是囫囵吞枣,这种习惯很不好, 来得容易忘得也容易,到底是纸上得来终觉浅;想着闲下来细细做几个课题作业,想弄的很多,想看一遍整理一下Lua5.3.5的源码,分析一下skynet的机制,还想了解一下IBM-PC微机原理,一直因为各种各样的项目琐事被迫往后推迟,现在和自己说过最多的谎话大概是,等我闲下来。

一、光照计算的回顾

f0d6feecb0c0ed1bc6485295b76a7533.png

Blinn-Phong光照明模型

二、光照计算发生在哪个阶段?

7edf4fe0f269cf9016cffc7a0bb69c00.png

三、三种明暗处理方法

1、常数明暗处理

2、Gourand阴暗处理(Gouraud shading)

3 、Phong明暗处理(phong shading)

9bf1949375d3b449b7b755ef472c68a3.png

四、用Vertex Shader实现逐顶点的光照计算(Gourand shading)

ee14839ab66fe2604e95b343a88aefdb.png

在Vertex shader中计算光照明公式:

ccf54feaa611ca3d7c0173fa0873193a.png

关于光照计算这个前面的文章中有https://zhuanlan.zhihu.com/p/84093894介绍,

五、光照相关的全局变量

940d331aaedc8407cd4640b78155ede2.png

a7fc4a10fd0d9a8b71f581a91abc4d3c.png

六、光照方向的计算(点光源)

38c00d197c0809f52019ceba3282e5b2.png

七、视线方向的计算

eyeDir = vec3((vec4(0.0) - v)); 
eyeDir = normalize(eyeDir);

八、法向的计算

vec3 normal = vec3(gl_NormalMatrix * gl_Normal);
normal = normalize( normal );

为什么不是vec3 normal = vec3(gl_ModelViewMatrix * gl_Normal)?

扩展链接:https://www.jianshu.com/p/e001aec29976

九、计算H,N.L,N.H

4fc3fb8ad0ea5b2261fa9bec7e6a69f9.png

这里做了一个判断,当是背面光照的时候我们不做计算

十、由此即可完成整个光照模型的计算

61ffc8733091628b5fe606b52288180e.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值