Minecraft(我的世界)中文论坛

 找回密码
 注册(register)
查看: 2623|回复: 140

[其它开发教程] [光影包制作教程] 第四章———实现基本光照效果

  [复制链接]
悲剧小白 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
1825
钻石
性别
保密
注册时间
2015-4-21
查看详细资料
 楼主| 发表于 2019-4-29 21:08:35 | 显示全部楼层 |阅读模式

您尚未登录,立即登录享受更好的浏览体验!

您需要 登录 才可以下载或查看,没有帐号?注册(register)

x
本帖最后由 悲剧小白 于 2019-7-7 15:04 编辑

索引待建立



第三章中,我们终于正常的显示了整个世界。但是,如果你仔细观察就会发现:这个世界似乎不受光照影响?如图:
file_1555305956000.jpg
不行,这样不科学(我就是要和mc讲科学,不要喷我)。但是,gbuffers_textured渲染器并没有光照系统,于是我们将目光再次上移至gbuffers_textured_lit。本章节使用gbuffers_textured_lit渲染器实现最基本的光照系统。

开始编写光影文件

在shaders文件夹里再创建两个文件,分别为gbuffers_textured_lit.vsh和gbuffers_textured_lit.fsh并写出代码。

gbuffers_textured_lit.vsh:
  1. #version 120
  2. varying vec4 color;
  3. varying vec4 texcoord;
  4. varying vec4 lmcoord;
  5. void main()
  6. {
  7.     gl_Position = ftransform();
  8.     color = gl_Color;
  9.     texcoord = gl_TextureMatrix[0] * gl_MultiTexCoord0;
  10.     lmcoord = gl_TextureMatrix[1] * gl_MultiTexCoord1;
  11. }
复制代码

gbuffers_textured_lit.fsh:
  1. #version 120
  2. uniform sampler2D texture;
  3. uniform sampler2D lightmap;
  4. varying vec4 color;
  5. varying vec4 texcoord;
  6. varying vec4 lmcoord;
  7. void main() {
  8.     gl_FragData[0] = texture2D(texture, texcoord.st) * texture2D(lightmap, lmcoord.st) * color;
  9. }
复制代码

代码解释

相较于gbuffers_textured,顶点着色器中多了lmcoord,不解释。
main函数中多了lmcoord = gl_TextureMatrix[1] * gl_MultiTexCoord1;其中纹理坐标矩阵(gl_TextureMatrix)的0号矩阵储存的是纹理数据,1号矩阵储存的是光照数据,这里是需要记住的。gl_MultiTexCoord1是1号纹理坐标。这句代码的意思是计算了光照的坐标并赋值给lmcoord
片段着色器则是又定义了一个2D的纹理采样器uniform sampler2D lightmap;光照贴图(lightmap),Minecraft会每隔一段时间(可能是几个游戏刻)生成一个光照贴图,用来表示一个物体在当前光照下的亮度。
main函数中则是用同样的方法,根据顶点着色器传来的坐标,从lightmap中获得光照颜色(其实也可以说成是像素受到光照后产生的颜色偏差)后乘进去。这里要注意的是,lmcoord的s轴对应人造光源强度,t轴对应环境光源强度。在这个代码中,如果你把获取像素像素颜色那一段删掉的话,效果会很滑稽。我不放图了,好奇的可以自己试试。

效果展示

游客,如果您要查看本帖隐藏内容请回复
游客,如果您要查看本帖隐藏内容请回复
游客,如果您要查看本帖隐藏内容请回复
如果你的代码加载后效果是这个样子,那么恭喜你,本章的目标你已经达成了。

代码下载

游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 4人气 +4 金粒 +2 收起 理由
ColorPencil + 2 + 12 MCBBS有你更精彩~
RainIFunS + 2 加油,别弃坑哦
海螺螺 -1 -10 未分类
Qhnan + 1 Ssssssssssssssssssss

查看全部评分

Bimanager 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
513
钻石
性别
保密
注册时间
2018-1-31
查看详细资料
发表于 2019-4-29 21:27:24 | 显示全部楼层
继续学习0.0
回复

使用道具 举报

酥皮 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
248
钻石
性别
保密
注册时间
2016-5-21
查看详细资料
发表于 2019-4-30 21:40:05 | 显示全部楼层
很好的分享
回复

使用道具 举报

454475906 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
3012
钻石
性别
保密
注册时间
2013-8-25
查看详细资料
发表于 2019-4-30 23:10:29 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

monseasd 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
2885
钻石
性别
保密
注册时间
2014-7-10
查看详细资料
发表于 2019-5-2 18:38:02 | 显示全部楼层
感谢大佬的教程,好详细
回复

使用道具 举报

qwe425819332 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
90
钻石
性别
保密
注册时间
2014-9-27
查看详细资料
发表于 2019-5-3 09:04:21 | 显示全部楼层
66666666666666666666666
回复

使用道具 举报

3m4s 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
551
钻石
性别
保密
注册时间
2013-11-6
查看详细资料
发表于 2019-5-4 09:51:11 | 显示全部楼层
我去 厉害
回复

使用道具 举报

yujm4623 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
37
钻石
性别
保密
注册时间
2019-5-3
查看详细资料
发表于 2019-5-4 10:08:03 | 显示全部楼层
23333333333333333333
回复

使用道具 举报

CoolPayW 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
69
钻石
性别
保密
注册时间
2015-12-27
查看详细资料
发表于 2019-5-9 17:06:56 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

简简-单单 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
462
钻石
性别
保密
注册时间
2017-10-16
查看详细资料
发表于 2019-5-9 20:26:53 | 显示全部楼层
lz加油,别弃坑了
回复

使用道具 举报

orange——par 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
811
钻石
性别
保密
注册时间
2016-10-27
查看详细资料
发表于 2019-5-10 18:49:01 | 显示全部楼层
试一下
回复

使用道具 举报

腹黑攻 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
21
钻石
性别
保密
注册时间
2019-4-5
查看详细资料
发表于 2019-5-11 08:20:26 来自手机 | 显示全部楼层
持续更新!
回复

使用道具 举报

腹黑攻 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
21
钻石
性别
保密
注册时间
2019-4-5
查看详细资料
发表于 2019-5-11 08:21:32 来自手机 | 显示全部楼层
持续更新!
回复

使用道具 举报

ffcr 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
74
钻石
性别
保密
注册时间
2017-3-4
查看详细资料
发表于 2019-5-11 08:26:58 来自手机 | 显示全部楼层
希望手机版也能这样开发
回复

使用道具 举报

leishilin 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
121
钻石
性别
保密
注册时间
2019-4-29
查看详细资料
发表于 2019-5-11 15:09:09 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册(register)

本版积分规则

Archiver|小黑屋|Mcbbs.net ( 京ICP备15023768号-1 ) | 京公网安备 11010502037624号 | 手机版

GMT+8, 2019-11-14 06:07 , Processed in 0.382298 second(s), Total 23, Slave 22 queries , Gzip On, MemCached On.

"Minecraft"以及"我的世界"为Mojang Synergies AB的商标 本站与Mojang以及微软公司没有从属关系

© 2010-2019 我的世界中文论坛 版权所有 本站原创图文内容版权属于原创作者,未经许可不得转载

快速回复 返回顶部 返回列表