Godot Shader笔记:3D着色器(一)
2019-06-19 本文已影响0人
吃烧烤的老王
译者注:直译为空间着色器下文中直接意译成3D着色器
3D着色器(Spatial shaders)
3D着色器用于对3D对象进行着色。它们是Godot提供的最复杂的着色器类型。3D着色器可以使用不同的渲染模式render mode和渲染选项(render option,例如:次表面散射Subsurface Scattering,透射Transmission,环境光遮挡Ambient Occlusion,光晕Rim lighting等),以实现高度的可定制化。用户可以选择性地编写顶点,片元以及光函数来影响物体的渲染。
渲染模式(Render modes)
渲染模式 | 描述 |
---|---|
blend_mix | 混合式融合(mix blend)模式 (用alpha作透明通道),此模式为默认模式. |
blend_add | 添加式融合(additive blend) 模式. |
blend_sub | 相减式融合(subtractive blend) 模式. |
blend_mul | 相减式融合(multiplicative blend)模式. |
depth_draw_opaque | 只绘制不透明几何体的深度,而不绘制透明几何体 |
depth_draw_always | 绘制所有的几何体深度 (包括透明和不透明的). |
depth_draw_never | 不绘制深度. |
depth_draw_alpha_prepass | Do opaque depth pre-pass for transparent geometry. |
depth_test_disable | 关闭深度测试 |
cull_front | 剔除正面 |
cull_back | 剔除背面 (默认项). |
cull_disabled | Culling disabled (double sided). |
unshaded | 只渲染慢反射.光照和着色器不对材质发生影响 |
diffuse_lambert | Lambert shading for diffuse (default). |
diffuse_lambert_wrap | Lambert wrapping (roughness dependent) for diffuse. |
diffuse_oren_nayar | Oren Nayar for diffuse. |
diffuse_burley | Burley (Disney PBS) for diffuse. |
diffuse_toon | Toon shading for diffuse. |
specular_schlick_ggx | Schlick-GGX for specular (default). |
specular_blinn | Blinn for specular (compatibility). |
specular_phong | Phong for specular (compatibility). |
specular_toon | Toon for specular. |
specular_disabled | Disable specular. |
skip_vertex_transform | VERTEX/NORMAL/etc. need to be transformed manually in vertex function. |
world_vertex_coords | VERTEX/NORMAL/etc. are modified in world coordinates instead of local. |
ensure_correct_normals | Use when non-uniform scale is applied to mesh. |
vertex_lighting | 使用基于顶点的光照 |
shadows_disabled | Disable computing shaders in shader. |
ambient_light_disabled | Disable contribution from ambient light and radiance map. |