网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月02日漏签0天
godot吧 关注:8,857贴子:40,037
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 1回复贴,共1页
<<返回godot吧
>0< 加载中...

【重置】【着色器介绍】两个十分重要的知识点

  • 只看楼主
  • 收藏

  • 回复
  • 多能豆
  • 小吧主
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
在主贴:
【着色器介绍】Godot着色器从入门到入门 https://tieba.baidu.com/p/6604817792
中,漏讲了两个非常重要的知识点,因为太重要了,所以在这里补充:
1.对于Sprite3D,在给它material_override添加材质后,你第一个uniform sampler2D的图片是固定获取自Sprite3D的Texture属性的:

着色器代码(将第一个uniform sampler2D加载的图片渲染):

两个对应的uniform sampler2D:

但实际上,第一个uniform sampler2D渲染的就是Texture属性加载的图片!!!!:

无论你第一个uniform sampler2D中加载了什么,着色器都会读取Texture属性!!!!!!!
2.在shader_type spatial下的颜色使用线性空间!!!
在shader_type spatial下,如果你直接用vec3来表示颜色,则实际渲染出的颜色会偏亮:



而这要怎么解决呢?官方给出的解释是用hint_color:
这样,取到的颜色和渲染的就一致了


而图片在渲染时也会变亮:



而这又要怎么解决呢?官方给出的解释是用hint_albedo:

(这里就不做演示了)
但问题来了,如果我不想用hint_color和hint_albedo就想表示正确的颜色怎么办?
(况且像ViewportTexture和CameraTexture这种动态的资源是无法用hint_albedo的)
那就自己转换线性颜色,至于方法,官方color.h源文件中就有这个函数方法(172行处):

链接:github.com/godotengine/godot/blob/master/core/color.h
我们只需要抄过来改一下格式就行了:

这样,即使是ViewportTexture也不会有色差了!


  • 人类的大敌
  • 吧主
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
对比了一下和之前那贴(https://tieba.baidu.com/p/7002688546)的差异,发现这贴把那个github的链接发出来了
我猜这贴就是当时被百度抽风掉的贴,现在被恢复回来了,之前那贴就提到百度就是因为github链接把贴里的内容吞掉了


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1回复贴,共1页
<<返回godot吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示