位置: 编程技术 - 正文

OpenGL中的光照与材料(opengl光线跟踪代码)

编辑:rootadmin

推荐整理分享OpenGL中的光照与材料(opengl光线跟踪代码),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:opengl 点光源,opengl环境光,opengl 光照,opengl光源,opengl光线跟踪代码,opengl 灯光,opengl光源,opengl光源,内容如对您有帮助,希望把文章链接给更多的朋友!

OpenGL中的光照与材料(opengl光线跟踪代码)

OpenGL中的光照与材料

在OpenGL光照模型中,除非一个物体自己会发光,否则它将受到3种不同类型的光的照射,这3种不同类型的光分别是:环境光(ambient)、散射光(diffuse)和镜面光(specular)。作为现实世界中光照的抽象,这3种类型的光允许我们模拟和控制光照在物体表面上所产生的效果。 环境光(ambient) 环境光并不来自任何特定的方向。由环境光所照射的物体在所有方向的表面都是均匀照亮的。在OpenGL中,这种光照类型实际上模拟了环境中源自所有光源的散光。 散射光(diffuse) OpenGL中的散射光具有方向性,来自于一个特定的方向,它根据入射光线的角度在表面上向不同方向均匀地反射开来。因此,如果光线直接照向物体,它看上去就更亮一些。如果光线从一个较大的角度照射到物体表面上,它看上去就显得暗一些。注意,散射光源的反射光线是均匀地散射开来的。 镜面光(specular) OpenGL中的镜面光同样具有方向性,并且它的反射角度很锐利,只沿一个特定的方向反射。由于镜面光的高度方向性本质,取决于观察者的位置,镜面光甚至可能看不到。注意,镜面光源的反射光线锐利而一致地反射,这是它与散射光的一个重要区别。 事实上,光源是由各种强度的不同类型的光所组成的。没有一种光源是由纯粹的任何一种单独类型的光所组成的。因此,场景中的一种光源是由3种光成分所组成的:环境光、散射光和镜面光。像颜色的定义一样,每种光成分是用一个RGBA&#;定义的,它描述了组成这种成分的红光、绿光和蓝光的强度,alpha&#;在此被忽略。在使用光照时,我们并不把多边形描述为具有一种特定的颜色,而是认为,它是由一些具有某种反射属性的材料所组成的。我们不说一个多边形是红色的,而说这个多边形是由主要反射红光的材料所组成的。 我们需要一些时间才能通过设置光照和材料属性实现所需要的效果。在绘制一个物体时,OpenGL会决定这个物体的每个像素将使用什么颜色。光源具有自己的颜色,物体又具有反射的“颜色”,OpenGL会为图元的每个顶点分配一个RGB颜色&#;,它是根据环境光、散射光和镜面光乘以材料属性的环境光、散射光和镜面光反射率所产生的净效果决定的。由于在各个顶点间使用了平滑着色模式,因此能够产生照明的幻觉。 计算环境光 为了计算环境光,让我们首先来考虑光源的红、绿、蓝强度。对于一种红、绿、蓝成分的强度均为一半的环境光源,可以把这个光源的RGB强度&#;指定为(0.5,0.5,0.5)。如果被照射物体的环境光反射属性按照RGB术语指定为(0.5,1.0,0.5),那么这种环境光所产生的净颜色成分是: (0.5 * 0.5,0.5 * 1.0, 0.5 * 0.5) = (0., 0.5, 0.) 由此可以看出,物体材料的颜色成分实际上决定了入射光的反射比例。这是极为重要的一点,也是后续使用颜色追踪的关键所在。 散射和镜面光效果 环境光的计算比较简单直接。散射光也具有RGB强度,它也以相同的方式与材料的反射属性进行交互。不同的是,散射光具有方向性,物体表面上光的强度取决于表面和光源的角度、表面和光源的距离以及所有相关联的衰减因素等(雾的存在)。镜面光源及其强度也是如此,它的净效果(根据RGB强度&#;)的计算方式与环境光也一样,同样是根据光源的强度与材料的反射属性相乘,不过这里的强度还要根据入射角度进行调整。最后,全部三种RGB&#;加在一起,产生物体的最终颜色。

本文出自杜晓萌的博客,请勿用于任何商业用途,转载请保持完整性并标明出处:

openGL ES 2.0 初始化(I) ok、好了今天学习了openGLES2.0现在把今天学习到的东东做一个总结,本demo是运行在安装有androidsdk的Eclipse上实现的:好了总结开始:起先是ShaderUtil.java文

在OpenGL中给场景添加光照 在OpenGL中给场景添加光照为了在OpenGL中使用光照计算,我们需要调用glEnable方法,并用GL_LIGHTING作为参数。这个调用告诉OpenGL在确定场景中每个顶点的颜

搭建Qt下的OpenGL编程框架 转载:

标签: opengl光线跟踪代码

本文链接地址:https://www.jiuchutong.com/biancheng/373169.html 转载请保留说明!

上一篇:OpenGL简单绘制游戏角色阴影(opengl画简单图形)

下一篇:openGL ES 2.0 初始化(I)(opengl es3.0)

  • 个体工商户能开多少钱的普票
  • 汇算清缴退税会计科目
  • 增值税加计扣除是什么意思啊
  • 材料报废是否可以税前扣除
  • 小型微利企业认定标准最新
  • 发票勾选后什么时候可以抵扣税
  • 补贴收入企业所得税
  • 住宿报销是开普票还是专票
  • 买金税盘怎么做账
  • 应收账款项目分析思维导图
  • 货币资金项目应根据账户的期末余额合计填列
  • 长期待摊费用税前扣除
  • 小企业无形资产有
  • 无票收入申报时要填税率吗
  • 发票未能在汇算清缴前取得怎么办?
  • 个人所得税手续费奖励办税人员文件
  • 营改增之后有了利息收入核算税费?
  • 分公司增值税如何缴纳增值税
  • 土地增值税清算是什么意思
  • 税率开错的增值税发票怎么办
  • 关于油票的纳税人识别号
  • 纳税人登记为一般纳税人后一律不得转为小规模纳税
  • 应收账款周转率高好还是低好
  • 个税申报中工资薪金是不是全年实际工资
  • 采用简易计税方法
  • 安置房税金如何交
  • 享受小型微利企业税收优惠的条件
  • 如何将旧版本软件卸载
  • 微软surfacepro3上市时间
  • windows10预览版
  • 出售货物货款预缴增值税
  • 代理报关费会计怎么做账
  • sisusbrg.exe - sisusbrg是什么进程 有什么用
  • 增值税最高开票限额审批时限
  • koc文件用什么软件打开
  • php数组按照某个字段排序
  • 服务,不动产和无形资产怎么填小规模
  • 【强化学习】Q-Learning算法详解
  • RuntimeError: CUDA error: CUBLAS_STATUS_NOT_INITIALIZED when calling `cublas‘
  • 什么是资产评估的价值类型
  • 刷题笔贴吧
  • 增值税期末留抵退税
  • 短期借款利息有可能资本化处理,也可能费用化处理
  • 个体工商户开普通发票需要交税吗
  • springcloud分布式微服务组件
  • mysql清空缓存
  • 报验户如何管理
  • 增值税年末所有都要结平吗
  • 银行卡频繁小额转账
  • 应收利息科目的表述
  • 销售应税消费品缴纳的消费税计入
  • 投资性房地产转为非投资性房地产
  • 加工费如何开增票
  • 发票红字怎么弄
  • 进口货物会计处理举例
  • 金税盘忘记清卡了怎么办
  • 什么是固定资产的后续支出
  • 固定资产处置有什么问题
  • 生产成本是费用要素吗
  • 如何把凭证装订机弄坏
  • win7桌面卡死无响应
  • XP系统提示QQprotect.exe损坏文件的解决方法图文教程
  • win10系统打开word出现水渍
  • linux系统怎样安装
  • reminder.exe - reminder是什么进程 有什么用
  • win8.1系统升级win10
  • Win10最新版下载天翼云盘
  • linux的shm共享内存
  • opengl 4.2
  • android属性动画
  • android新手入门
  • js设计模型
  • JQuery绑定事件的函数是
  • js实现省份和市级联动
  • 国家税务局公告2018年第28号
  • 陕西税务厅
  • 江苏 税务局
  • 上海社保三方协议
  • 腾讯 短信服务
  • 增值税发票冲红是什么意思
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设