my-room-in-3d中的电脑,电视,桌面光带发光原理

1. my-room-in-3d中的电脑,电视,桌面光带发光原理

最近在github中,看到了这样的一个项目;
项目地址
在这里插入图片描述
我看到的时候,蛮好奇他这个光带时怎么做的。
最后发现,他是通过,加载一个 lightMap.jpg这个纹理来实现的
好,我们来看看这个纹理和普通纹理有什么区别
在这里插入图片描述
我们会发现,这个高光纹理,他的颜色就三种颜色,分别是:r(红色), g(绿色), b(蓝色)
这样的一个三元色,
那他为什么要这么做呢?

最后我们发现,他这么做的原因,是因为他这样可以获取到,需要高光处的片源的的位置信息。说白了,就是获取位置,这个纹理的效果,就是想打了个标记,可以告诉我们,此处的片源是需要高光的,需要特殊颜色的,需要特殊处理

知道了这些,这个高光效果就很简单了

uniform sampler2D lightMapTexture;

void main() {
    vec3 bakeDayColor = vec3(1.0, 1.0, 0.0); // 假设,这个是原本的颜色
    vec3 lightMapColor = texture2D(lightMapTexture, vUv).rgb; // 这个就是那个纹理的颜色
    vec3 macCoor = vec(0.5,0.3,0.65); // 假设这个是,Mac 电脑背后光的颜色
    float lightStrength = lightMapColor.r * 5.0; // 这里为什么是 lightMapColor.r 呢?这个要看lightMapTexture 这个纹理,在电脑处他是什么颜色的,我们此时假设他是 red的,那么就是 lightMapColor.r了
  
  // 关键的来了
 bakeDayColor = mix(bakeDayColor, macColor, lightStrength);
  gl_FragColor = vec4(bakedColor, 1.0);
	
}

这个就是最核心的代码。
在这里插入图片描述

相关推荐

  1. Windows10去除电脑桌面图标快捷方式

    2024-05-05 01:28:03       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-05 01:28:03       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-05 01:28:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-05 01:28:03       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-05 01:28:03       20 阅读

热门阅读

  1. cron表达式详解(通俗易懂)

    2024-05-05 01:28:03       9 阅读
  2. 【24.5】

    2024-05-05 01:28:03       10 阅读
  3. QGraphicsView实现简易地图8『缓存视口周边瓦片』

    2024-05-05 01:28:03       10 阅读
  4. Summary of Common Interview Questions of SpringMVC

    2024-05-05 01:28:03       9 阅读
  5. Redis:访问权限控制,密码设置

    2024-05-05 01:28:03       11 阅读
  6. 谈谈TCP Socket中读取数据的函数---read、recv、readv

    2024-05-05 01:28:03       10 阅读
  7. C++中的构造函数以及默认拷贝构造函数

    2024-05-05 01:28:03       13 阅读
  8. QT, 系统托盘 及 菜单

    2024-05-05 01:28:03       12 阅读
  9. 我用过的最好用的 AI 工具

    2024-05-05 01:28:03       11 阅读
  10. 【博弈游戏】

    2024-05-05 01:28:03       10 阅读