Godot Shader笔记:3D着色器(三)

原文地址:Docs » Shading » Shading reference » Spatial shaders

内置片元属性(fragment built-ins)

Godot片元函数的默认用途是设置对象材质的属性,并使内置渲染器处理最终的着色。然而你并不需要使用所有这些属性,如果你对其不做任何改写,Godot将优化掉相应的功能。

Built-in Description
in vec4 FRAGCOORD Fragment coordinate, pixel adjusted. In screen space.
in mat4 WORLD_MATRIX Model space to world space transform.
in mat4 INV_CAMERA_MATRIX World space to view space transform.
in mat4 CAMERA_MATRIX View space to world space transform.
in mat4 PROJECTION_MATRIX View space to clip space transform.
in mat4 INV_PROJECTION_MATRIX Clip space to view space transform.
in float TIME Elapsed total time in seconds.
in vec2 VIEWPORT_SIZE Size of viewport (in pixels).
in vec3 VERTEX Vertex that comes from vertex function (default, in view space).
in vec3 VIEW Vector from camera to fragment position (in view space).
in bool FRONT_FACING True if current face is front face.
inout vec3 NORMAL Normal that comes from vertex function (default, in view space).
inout vec3 TANGENT Tangent that comes from vertex function.
inout vec3 BINORMAL Binormal that comes from vertex function.
out vec3 NORMALMAP Set normal here if reading normal from a texture instead of NORMAL.
out float NORMALMAP_DEPTH Depth from variable above. Defaults to 1.0.
in vec2 UV UV that comes from vertex function.
in vec2 UV2 UV2 that comes from vertex function.
in vec4 COLOR COLOR that comes from vertex function.
out vec3 ALBEDO Albedo (default white).
out float ALPHA Alpha (0..1); if written to, the material will go to the transparent pipeline.
out float METALLIC Metallic (0..1).
out float SPECULAR Specular. Defaults to 0.5, best not to modify unless you want to change IOR.
out float ROUGHNESS Roughness (0..1).
out float RIM Rim (0..1). If used, Godot calculates rim lighting.
out float RIM_TINT Rim Tint, goes from 0 (white) to 1 (albedo). If used, Godot calculates rim lighting.
out float CLEARCOAT Small added specular blob. If used, Godot calculates Clearcoat.
out float CLEARCOAT_GLOSS Gloss of Clearcoat. If used, Godot calculates Clearcoat.
out float ANISOTROPY For distorting the specular blob according to tangent space.
out vec2 ANISOTROPY_FLOW Distortion direction, use with flowmaps.
out float SSS_STRENGTH Strength of Subsurface Scattering. If used, Subsurface Scattering will be applied to object.
out vec3 TRANSMISSION Transmission mask (default 0,0,0). Allows light to pass through object. Only applied if used.
out float AO Strength of Ambient Occlusion. For use with pre-baked AO.
out float AO_LIGHT_AFFECT How much AO affects lights (0..1; default 0).
out vec3 EMISSION Emission color (can go over 1,1,1 for HDR).
sampler2D SCREEN_TEXTURE Built-in Texture for reading from the screen. Mipmaps contain increasingly blurred copies.
sampler2D DEPTH_TEXTURE Built-in Texture for reading depth from the screen. Must convert to linear using INV_PROJECTION.
out float DEPTH Custom depth value (0..1).
in vec2 SCREEN_UV Screen UV coordinate for current pixel.
in vec2 POINT_COORD Point Coordinate for drawing points with POINT_SIZE.
out float ALPHA_SCISSOR If written to, values below a certain amount of alpha are discarded.
in bool OUTPUT_IS_SRGB True when calculations happen in sRGB color space (true in GLES2, false in GLES3).
内置光属性(light built-ins)

自定义光函数完全是可选的。你可以将渲染模式render_mode设置为unshaded 从而忽略掉光函数。如果没有光函数,Godot将会使用片元函数中的材质属性来计算光照(取决于渲染模式render_mode)。

编写光函数实际上就是给DIFFUSE_LIGHT (慢反射光)或者SPECULAR_LIGHT (镜面反射光) 赋一些值。如果什么值都不赋,将意味着不处理任何光。

光函数会对每一个光源进行逐像素调用,并且会对每一种光源类型循环调用。

下面是一个使用兰博特光照模型(Lambertian lighting model)的自定义光函数的范例:

void light() {
 DIFFUSE_LIGHT += dot(NORMAL, LIGHT) * ATTENUATION * ALBEDO;
}

如果你想让光照叠加,可以使用+=运算符将各个光叠加到DIFFUSE_LIGHT

内置属性 描述
in vec4 FRAGCOORD Fragment coordinate, pixel adjusted.
in mat4 WORLD_MATRIX Model space to world space transform.
in mat4 INV_CAMERA_MATRIX World space to view space transform.
in mat4 CAMERA_MATRIX View space to world space transform.
in mat4 PROJECTION_MATRIX View space to clip space transform.
in mat4 INV_PROJECTION_MATRIX Clip space to view space transform.
in float TIME Elapsed total time in seconds.
in vec2 VIEWPORT_SIZE Size of viewport (in pixels).
in vec3 NORMAL Normal vector, in view space.
in vec3 VIEW View vector, in view space.
in vec3 LIGHT Light Vector, in view space.
in vec3 LIGHT_COLOR Color of light multiplied by energy.
in vec3 ATTENUATION Attenuation based on distance or shadow.
in vec3 ALBEDO Base albedo.
in vec3 TRANSMISSION Transmission mask.
in float ROUGHNESS Roughness.
out vec3 DIFFUSE_LIGHT Diffuse light result.
out vec3 SPECULAR_LIGHT Specular light result.
in bool OUTPUT_IS_SRGB True when calculations happen in sRGB color space (true in GLES2, false in GLES3).
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容