0.简介

前面我们实现的镜面反射都是统一的反射指数,但是对于有些材质就不适合有太强的反光效果,通过镜面反射纹理来实现不同部位的反射效果不同

1.添加纹理

这里和纹理的使用差不多,将原来的参数替换成图片,这里的图片应该是一张灰度图如下图。

箱子的反射贴图

这个是木箱子的反射贴图,黑色的部分是不发生镜面反光的,白色部分是有镜面反光的。

float HighMaterial::getSpecular(vec2 uv)
{if (speculars.cols <= 0)return specular;int j = abs((int(uv.x * speculars.cols)) % speculars.cols);int i = abs((int(uv.y * speculars.rows)) % speculars.rows);return speculars.at<uchar>(i, j)*1.0/255.0;
}

采样函数中变成如下代码

Ray Polygon::sample(Ray out, Ray reflect, Ray refract)
{Ray res(out.direction, out.position, 0, vec3(0, 0, 0), out.polygon);//out光线带的是对应物体的法向量值float cosa = abs(dot(out.normal,-out.direction));//光线入射角和面法向量的cos值//发光计算res.color = m->getColor(out.end.textureUV) * m->light * std::fmaxf(cosa,0);//反射颜色计算if(reflect.polygon)res.color += reflect.color * m->getSpecular(out.end.textureUV);if (refract.polygon)res.color += refract.color + m->transparent;return res;
}

2.效果

不加这个纹理的时候效果是如下。

反射效果

看到箱子底部全部反光,地面油油的效果。

加上这个新的贴图后。

有选择性的反射

箱子不是全部反光了,只有边上金属边框有反光效果。

地面也加上反射贴图。

反射纹理

加上后看起来地面不再是油油的了。

3.源码

release0.14

学习光线追踪(18)---镜面反射贴图相关推荐

  1. 《用两天学习光线追踪》3.球体和表面法向量

    本项目参考自教程<Ray Tracing in One Weekend>,在跑通了所有例子之后,加上了自己的理解写成笔记,项目使用CPU多线程提速,并增加了GUI进度显示. 项目链接:ht ...

  2. 《用两天学习光线追踪》7.反射向量和金属材质

    本项目参考自教程<Ray Tracing in One Weekend>,在跑通了所有例子之后,加上了自己的理解写成笔记,项目使用CPU多线程提速,并增加了GUI进度显示. 项目链接:ht ...

  3. 《用一周学习光线追踪》2.BVH树、AABB相交检测

    本项目上接<用两天学习光线追踪>,继续学习光线追踪. 项目链接:https://github.com/maijiaquan/ray-tracing-with-imgui 目录: <用 ...

  4. 《用两天学习光线追踪》1.项目介绍和ppm图片输出

    本项目参考自教程<Ray Tracing in One Weekend>,在跑通了所有例子之后,加上了自己的理解写成笔记,项目使用CPU多线程提速,并增加了GUI进度显示. 项目链接:ht ...

  5. 图论与图学习(一):图的基本概念

    图(graph)近来正逐渐变成机器学习的一大核心领域,比如你可以通过预测潜在的连接来理解社交网络的结构.检测欺诈.理解汽车租赁服务的消费者行为或进行实时推荐.近日,数据科学家 Maël Fabien ...

  6. Tensorflow2学习笔记:简单灰度图分类

    Tensorflow2学习笔记:简单灰度图分类 相关介绍 实验环境 实验步骤 导入相关库 导入数据集 浏览数据 预处理数据 构建模型 设置层 编译模型 训练模型 向模型馈送数据 评估准确率 进行预测 ...

  7. 2023最新首发,全网最全 Spring Boot 学习宝典(附思维导图)

    作者:bug菌 博客:CSDN.掘金.infoQ.51CTO等 简介:CSDN/阿里云/华为云/51CTO博客专家,博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,掘金/ ...

  8. 【计算机网络学习笔记18】防火墙技术、入侵检测技术

    [计算机网络学习笔记18]防火墙技术.入侵检测技术 一.防火墙 防火墙 (firewall) :一种访问控制技术,通过严格控制进出网络边界的分组,禁止任何不必要的通信,从而减少潜在入侵的发生,尽可能降 ...

  9. NLP中的自监督表示学习,全是动图,很过瘾的

    作者:amitness 编译:ronghuaiyang 原文链接: NLP中的自监督表示学习,全是动图,很过瘾的​mp.weixin.qq.com 其实在自监督学习的概念提出之前,NLP中就已经运用到 ...

最新文章

  1. java不能连接mysql,无法使用Docker将Java程序连接到MySQL
  2. Android使用AudioRecord录制pcm音频原始数据以及使用AudioTrack播放
  3. Go学习——defer、panic
  4. Location对象、History对象
  5. poj 1925(坐标上的dp)
  6. 二十种实战调优MySQL性能优化的经验(转自公众号:架构之家 2018-05-08)
  7. 小程序在wxml页面中取整
  8. 采用HttpModules来重写URLS
  9. 2021.08.25学习内容torch.clamp(input, min, max, out=None) → Tensor,torch.mm(matrix multiply)
  10. java 内置jetty_内置jetty
  11. 做图表统计你需要掌握SQL Server 行转列和列转行
  12. OpenStack Queens版本Security项目介绍
  13. 【交通流预测】基于matlab小波神经网络短时交通流预测【含Matlab源码 400期】
  14. Window操作系统安全配置
  15. 《A Single Camera Eye-Gaze Tracking System with Free Head Motion》论文阅读
  16. oracle中的存储过程是什么,oracle存储过程是什么?
  17. 2021年北京高新技术企业认定补贴及政策要求
  18. PreTranslateMessage详解
  19. [蓝桥杯]2020年第十一届省赛真题C/C++ B组(七月)
  20. 微信小程序选项卡swiper默认高度150px(让高度实现自适应)怎么解决?

热门文章

  1. UVA 1637 - Double Patience(概率DP)
  2. 今日头条视频Url嗅探
  3. 新个人所得税EXCEL计算公式以及税后工资反算税前工资公式
  4. 了解微信小程序、掌握微信小程序开发工具的使用、了解小程序的目录以及文件结构、掌握小程序中常用的组件、掌握WXML、WXSS、WXS的基本使用
  5. uniAPP 自定义页面导航烂 - 搜索 APP有效
  6. 计算机社团活动效果取得成绩,电脑社团工作总结
  7. 墙面有几种装修方法_墙面怎么装?四种装修方式总有一款适合你
  8. 引才!博士60万、硕士35万、本科28万,沿海城市
  9. 通过 irp 请求包删除文件
  10. 快递员上门取件api接口技术对接java文档