Zh/Shader: Difference between revisions

From Valve Developer Community
< Zh
Jump to navigation Jump to search
Line 19: Line 19:
注:为 SM 3.0 编写的着色器可能无法在 Mac 和 Linux 系统上正常工作,因为 Valve 的 graphics wrapper 运行时是缺乏这些支持的。
注:为 SM 3.0 编写的着色器可能无法在 Mac 和 Linux 系统上正常工作,因为 Valve 的 graphics wrapper 运行时是缺乏这些支持的。


*为较新的显卡创建着色器时,请务必记住支持使用较旧显卡的着色器,否则您将很快将游戏的规格限制为仅少数几个。较旧的卡可能需要指定所谓的“着色器回退”,如果较新的着色器失败,将使用备份着色器(使用较旧的着色器模型)。
*为较新的GPU创建着色器时,请务必记住去支持那些较旧GPU用的着色器,否则你会很快把游戏的着色器规格限制得很小。
 
*较旧的GPU可能需要“着色器回退 (shader fallbacks)”,如果较新的着色器用不了,那么游戏会使用旧的着色器模型。

Revision as of 22:49, 3 January 2023

着色器概述

着色器是在GPU上运行的一套程序,用于确定应如何绘制对象。着色器替代了传统的固定渲染管线,可以实现3D图形学计算中的相关计算,由于其可编辑性,可以实现各种各样的图像效果而不用受显卡的固定渲染管线限制。着色器曾只存在于离线渲染(如 电影工业)领域,而实时渲染领域的着色器则是在微软推出Shader Model后才被首次引入。

  • Source 3D渲染中的所有内容都使用基于着色器绘制的方法
  • 着色器根据存储在材质文件中的参数进行进一步工作,虽然看上去很简单,但里面存有非常复杂的来处理 实时阴影照明折射 等效果的配置信息。


类型

着色器(Shader)主要有顶点着色器(Vertex Shader,以下简称 VS)和像素着色器(Pixel Shader,以下简称 PS)两种(注:两种着色器在不同的实现中略有不同)。

着色语言

目前有三种主要的着色器语言:高阶着色器语言(HLSL),C for Graphics (Cg)和 OpenGL着色语言(GLSL)。Source 使用基于 HLSL 的着色器。而且 Cg 与其也非常相似,故大多数 Cg 着色器都可以快速轻松地移植到 HLSL。

Shader Model (以下简称 SM)

SM 直接定义如何使 GPU 使用高阶着色技术,可以防止太老旧 GPU 运行基于新着色技术的程序。

Source 支持 SM 2.0(包括 PS 2.0b)和 SM 3.0。其中,SM 3.0 是一次巨大飞跃,支持了浮点精度运算,是现代高画质游戏的基石。

注:为 SM 3.0 编写的着色器可能无法在 Mac 和 Linux 系统上正常工作,因为 Valve 的 graphics wrapper 运行时是缺乏这些支持的。

  • 为较新的GPU创建着色器时,请务必记住去支持那些较旧GPU用的着色器,否则你会很快把游戏的着色器规格限制得很小。
  • 较旧的GPU可能需要“着色器回退 (shader fallbacks)”,如果较新的着色器用不了,那么游戏会使用旧的着色器模型。