画布项目着色器(CanvasItem shaders):Godot的2D着色器
译者注:直译为***画布项目着色器***下文中将意译成2D着色器画布项目着色器(CanvasItem shaders)2D着色器用于绘制Godot中的所有的2D元素包括所有继承于CanvasItem的节点以及所有的GUI元素。相对于3D着色器2D着色器要简单一些内置函数也比较少但是2D和3D着色器的基础结构是相同的都包顶点函数(vertex)片元函数(fragment)及光(light)函数渲染模式画布元素渲染模式描述blend_mixMix blend mode (alpha is transparency), default.blend_addAdditive blend mode.blend_subSubtractive blend mode.blend_mulMultiplicative blend mode.blend_premul_alphaPre-multiplied alpha blend mode.blend_disabledDisable blending, values (including alpha) are written as-is.unshadedResult is just albedo. No lighting/shading happens in material.light_onlyOnly draw on light pass.skip_vertex_transformVERTEX/NORMAL/etc need to be transformed manually in vertex function.译者注:vertex built-in,fragment built-in 以及 light built-in根据其实际作用分别被意译为内置顶点属性内置片元属性以及内置光属性属性一词借用C#中的属性即property,其实就是getter和setter内置顶点属性(vertex built-ins)当值注明为in时意味着只读当值注明为out时意味着可以选择性地写入但是并不一定提供一个有效值。当值注明为inout时它会提供一个有效的默认值并且可以选择性地写入。采样器(sampler)不是可写对象它们也没有被标记。顶点数据(VERTEX)使用局部坐标表示(相对于摄像机的像素坐标)如果不改写的话它们的值会原封不动地传递出去。用户可以关闭内置***模型视图变换***(英文:modelview transform,注:但投影(projection)依然会发生)并使用如下代码手动实现:shader_type canvas_item; render_mode skip_vertex_transform; ​ void vertex() { ​ VERTEX (EXTRA_MATRIX * (WORLD_MATRIX * vec4(VERTEX, 0.0, 1.0))).xy; }注意WORLD_MATRIX实际上是一个模型视图矩阵它接受局部坐标的输入然后将其变换到视图空间。如果想要获取一个顶点的世界坐标你必须按照如下方法传入一个自定义的uniform值:material.set_shader_param(global_transform, get_global_transform())然后在你的顶点着色器部分:uniform mat4 global_transform; varying vec2 world_position; ​ void vertex(){ world_position (global_transform * vec4(VERTEX, 0.0, 1.0)).xy; }然后在顶点和片元函数中就都可以使用world_position了。诸如UV和COLOR等一些内置成员如果不加修改的话也会被传入片元函数。例如INSTANCE_CUSTOM变量包含着实例的自定义数据。在粒子中这些数据往往如下所示:x: Rotation angle in radians.y: Phase during lifetime (0 to 1).z: Animation frame.内置顶点属性描述in mat4 WORLD_MATRIX图片空间(Image space)到视图空间(view space)的变换in mat4 EXTRA_MATRIXExtra transform.in mat4 PROJECTION_MATRIXView space to clip space transform.in float TIMEGlobal time, in seconds.in vec4 INSTANCE_CUSTOMInstance custom data.in bool AT_LIGHT_PASSTrue if this is a light pass.inout vec2 VERTEXVertex, in image space.in vec2 TEXTURE_PIXEL_SIZENormalized pixel size of default 2D texture. For a Sprite with a texture of size 64x32px, TEXTURE_PIXEL_SIZE vec2(1/64, 1/32)inout vec2 UVUV.inout vec4 COLORColor from vertex primitive.inout float POINT_SIZEPoint size for point drawing.内置片元属性(Fragment built-ins)一些节点(例如:Sprite)会显示一个默认的纹理。然而当给这些节点添加了自定义片元函数以后纹理的查找则需要手动来完成。在内置属性COLOR中Godot并没有提供纹理的颜色。如果想在这些节点中读取纹理颜色需要如下方法:COLOR texture(TEXTURE, UV);这和法线贴图有所不同如果一个节点添加了法线贴图则Godot可以默认使用它并且把它赋值给内置的NORMAL属性。如果你使用了一个本用于3D的法线贴图它将呈现为翻转状态。如果你想在自己的Shader中使用它你需要把它赋值给NORMALMAP属性Godot会把它转换成2D模式并重写NORMAL属性NORMALMAP texture(NORMAL_TEXTURE, UV).rgb;内置片元属性描述in vec4FRAGCOORDFragment coordinate, pixel adjusted.inout vec3NORMALNormal read fromNORMAL_TEXTURE. Writable.out vec3NORMALMAPConfigures normal maps meant for 3D for use in 2D. If used, overwritesNORMAL.inout floatNORMALMAP_DEPTHNormalmap depth for scaling.in vec2UVUV from vertex function.inout vec4COLORColor from vertex function and output fragment color. If unused, will be set toTEXTUREcolor.in sampler2DTEXTUREDefault 2D texture.in sampler2DNORMAL_TEXTUREDefault 2D normal texture.in vec2TEXTURE_PIXEL_SIZENormalized pixel size of default 2D texture. For a Sprite with a texture of size 64x32px,TEXTURE_PIXEL_SIZEvec2(1/64, 1/32)in vec2SCREEN_UVScreen UV for use withSCREEN_TEXTURE.in vec2SCREEN_PIXEL_SIZESize of individual pixels. Equal to inverse of resolution.in vec2POINT_COORDCoordinate for drawing points.in floatTIMEGlobal time in seconds.in boolAT_LIGHT_PASSTrue if this is a light pass.in sampler2DSCREEN_TEXTUREScreen texture, mipmaps contain gaussian blurred versions.内置光属性(Light built-ins)相对于3D着色器2D着色器光函数的工作方式有所不同。在2D着色器中光函数会在物体被绘制的时候调用一次然后对场景中每一个触及到这个物体的光都调用一次。如果你不希望任何光影响到某一个物体可以使用unshaded渲染模式。如果你只希望一个物体被光覆盖的地方可见那么可以使用light_only渲染模式。当一个着色器(所属的物体)处于光照中时内置光属性AT_LIGHT_PASS的值将为true内置光属性描述in vec4FRAGCOORDFragment coordinate of pixel center. Origin at lower left.in vec3NORMALInput Normal. Although this value is passed in,normal calculation still happens outside of this function.in vec2UVUV from vertex function, equivalent to the UV in the fragment function.in vec4COLORInput Color. This is the output of the fragment function with final modulation applied.sampler2DTEXTURECurrent texture in use for CanvasItem.in vec2TEXTURE_PIXEL_SIZENormalized pixel size of default 2D texture. For a Sprite with a texture of size 64x32px,TEXTURE_PIXEL_SIZEvec2(1/64, 1/32)in vec2SCREEN_UVSCREEN_TEXTURECoordinate (for using with screen texture).in vec2POINT_COORDUV for Point Sprite.in floatTIMEGlobal time in seconds.inout vec2LIGHT_VECVector from light to fragment, can be modified to alter shadow computation.inout floatLIGHT_HEIGHTHeight of Light. Only effective when normals are used.inout vec4LIGHT_COLORColor of Light.in vec2LIGHT_UVUV for Light texture.out vec4SHADOW_COLORShadow Color of Light.inout vec4LIGHTValue from the Light texture and output color. Can be modified. If not used, the light function is ignored.

相关新闻

网易后端面试全解析:从211本科到一线大厂的实战指南

网易后端面试全解析:从211本科到一线大厂的实战指南

这次我们来看一个211本科同学面试网易后端岗位的真实经历。这位同学经历了4轮面试,从简历筛选到技术面再到HR面,整个过程可以说是被“拷打”到怀疑人生。但最终的结果如何?更重要的是,从这段经历中,我们能提炼出哪些对求职者真正有用的信息? 对于正在准备后端开发岗位,…

2026/7/28 16:12:52 阅读更多 →
基于433MHz无线通信与Arduino的履带小车移动平台设计与实现

基于433MHz无线通信与Arduino的履带小车移动平台设计与实现

1. 项目概述:从遥控玩具到专业级移动平台最近在整理工作室,翻出来一堆闲置的433M无线模块和几个废旧玩具的履带底盘,一个想法突然冒出来:为什么不把它们组合起来,做一个可玩性更高、扩展性更强的无线控制履带小车呢&am…

2026/7/28 16:12:52 阅读更多 →
大模型与算法面试宝典:Transformer与RAG核心考点解析

大模型与算法面试宝典:Transformer与RAG核心考点解析

1. 项目概述:为什么这份面试宝典值得收藏?最近两年,大模型和算法领域的技术迭代速度令人咋舌。作为一位经历过数十场技术面试的面试官,我亲眼见证了候选人从最初只会背LeetCode题,到现在需要掌握Transformer架构细节、…

2026/7/28 16:12:52 阅读更多 →

最新新闻

Transformer架构与大模型技术演进全解析

Transformer架构与大模型技术演进全解析

1. 大模型技术发展脉络解析2017年Transformer架构的提出彻底改变了自然语言处理领域的发展轨迹。这个看似简单的"编码器-解码器自注意力机制"组合,却孕育出了如今席卷全球的AI大模型浪潮。让我们从技术演进的视角,看看这条发展主线上的关键里程…

2026/7/28 16:24:30 阅读更多 →
tracker_server服务器搭建好以后,fastdfs图片上传 具体在项目中的应用(附完整代码,资源文件)

tracker_server服务器搭建好以后,fastdfs图片上传 具体在项目中的应用(附完整代码,资源文件)

环境一定要先搭建好,搭建的详细步骤和资源文件详见上一篇博客:https://blog.csdn.net/qq_37767455/article/details/100175038 一、运行截图最后浏览器访问:二、主要用到的代码 1.配置文件2.controller3.serviceOverridepublic AppResponse u…

2026/7/28 16:24:30 阅读更多 →
【紧急预警】AI副业时间衰减曲线已启动:第7天起效率断崖式下跌?3步动态重校准协议立即生效

【紧急预警】AI副业时间衰减曲线已启动:第7天起效率断崖式下跌?3步动态重校准协议立即生效

更多请点击: https://codechina.net 第一章:AI副业时间衰减曲线的本质认知与紧急预警信号识别 AI副业的时间投入产出比并非线性增长,而呈现典型的指数级衰减特征——初期高响应、快反馈的“蜜月期”往往掩盖了底层不可持续性。其本质源于三…

2026/7/28 16:24:30 阅读更多 →
暑假的感受

暑假的感受

今天是九月一号,又迎来了一年的 开学季现在处于大二的我们,感觉时间过的好快啊!经过一个月的学 习,感觉自己的暑假过的很充实,学到了很多的东西,认识了很多的朋友。 同时,在这里我认识了自己的师…

2026/7/28 16:24:30 阅读更多 →
为什么你的AI工作流总卡在“能用但不稳”阶段?——拆解17个高隐蔽性断点与6套已验证修复模板

为什么你的AI工作流总卡在“能用但不稳”阶段?——拆解17个高隐蔽性断点与6套已验证修复模板

更多请点击: https://intelliparadigm.com 第一章:为什么你的AI工作流总卡在“能用但不稳”阶段?——拆解17个高隐蔽性断点与6套已验证修复模板 AI工作流在POC阶段常表现良好,却在生产环境频繁出现延迟抖动、输出漂移、上下文截断…

2026/7/28 16:24:30 阅读更多 →
AI推理成本暴跌63%的秘密:Llama 3、Qwen2、Phi-3在8卡A10 vs 2×H100真实吞吐与$每千token对比(独家压测数据)

AI推理成本暴跌63%的秘密:Llama 3、Qwen2、Phi-3在8卡A10 vs 2×H100真实吞吐与$每千token对比(独家压测数据)

更多请点击: https://kaifayun.com 第一章:AI推理成本暴跌63%的秘密:Llama 3、Qwen2、Phi-3在8卡A10 vs 2H100真实吞吐与$每千token对比(独家压测数据) 过去三个月,我们对主流开源大模型在真实生产级GPU集…

2026/7/28 16:23:30 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻