LogoLogo
简体中文
简体中文
  • 主页
  • 联系我们
  • 感谢名单
  • 维基101 - 如何开始?
    • 修改指南
      • 如何备份,解包和重新打包
      • 如何配置修改用一个工作环境
      • 修改工具
        • 如何使用RSPNVPK
        • 资源
          • 游戏目录
          • BSP
            • BSPSource
            • BSP Viewer
            • BSP2MAP
            • BSPZIP
            • EntEd
            • Entspy
            • Map Analyst
            • PackBsp
            • Pakrat
            • VBSP_h4xed
            • VIDE
            • VMEX
            • WinBSPC
            • WinBSPZip
          • Hammer
            • 位移Luxel密度
          • VTF & VMT
            • VTFEdit
            • Vtex
              • Vtex - 编译参数
              • Vtex - 疑难解答
  • 信息
    • 纹理
      • Valve纹理格式-VTF
        • 创建材质
        • 创建动画粒子
        • 修改动画粒子-Wanty的方法
      • Valve材质类型-VMT
      • 纹理和颜色
        • 颜色和纹理信息
      • 着色器
        • $basetexture
        • $color
        • $reflectivity
        • 材质标志
      • 反照率贴图
      • 凹凸贴图
        • $bumpmap
        • $ssbump
      • 立方环境贴图
      • 光照贴图
      • 矢量材质
      • 纹理映射
      • 内容丢失
      • 基础天空盒
        • 2D天空盒
        • 3D天空盒
    • 脚本
      • 关键值
        • Gameinfo.txt
        • 武器配置
      • VScript
    • 文件格式
      • NUT & GNUT-Squirrel游戏语言
      • PSD-Photoshop文档
      • TGA-Truevision图像文件
      • TXT-文本文件
      • VPK-Valve包文件
    • 文件位置
      • VPK
      • 武器
        • 武器模型
        • 武器脚本
        • 武器配置
      • 模型
        • 模型-天空背景
        • 铁驭
          • 模型-铁驭能力
          • 模型-铁驭武器
        • 泰坦
        • 模型-引导标志
        • 模型-容器
        • 模型- Fixtures
        • 模型-IMC基础
        • 模型-工业
        • 模型- 虎大前进基地_live_fire
        • 模型-NPC
        • 模型-边境防御
  • 修改
    • 武器
      • 自定义武器皮肤
        • 使用\应用自定义武器皮肤
          • VTF文件制作
        • 制作武器自定义皮肤
          • 2D图像线框渲染模式(Wireframe mode)
        • 武器自定义皮肤样例
      • 武器效果
      • 准星修改
        • 批量修改准星
        • 准星样例
      • 武器定位
      • 武器视野
      • 一键更换武器视野
      • 特殊/独特武器修改
        • 电能步枪-电弧枪
        • 电能步枪-蓄力颜色
        • LSTAR-蓄力颜色
    • 铁驭
      • 模型-铁驭类
    • 泰坦
      • 泰坦的穹顶护盾
      • 北极星
        • 线缆-钩爪和绊索陷阱
        • 电浆磁轨炮-蓄力特效
        • 北极星-重力特效
        • 北极星-铝热剂特效
      • 浪人
        • 剑封颜色
      • 军团
        • 强大火力-蓄力颜色
      • 离子
        • 镭射炮-蓄力颜色
        • 漩涡防护罩颜色
    • 地图
      • 地图-天空背景
      • 地图-立体地图
      • 战争游戏
        • 全息墙颜色
    • 用户界面
      • 游戏文本修改-r1_language
      • 游戏中
        • 计分板背景
      • 菜单
        • 暂停菜单模糊
        • 主菜单背景
        • 网路-菜单
        • 新闻和聚焦
        • 设置
          • 控制
          • 按键设置
    • 声音
      • 击杀音效
      • 大厅背景音乐
    • 杂项
      • 电缆-滑索
      • 马文机器人-胸部显示屏
      • 脉冲刀范围特效
      • 被声呐探测到的效果
      • 模型-炸蛛
      • 尼斯湖水怪模型
  • 脚本数据
    • 准星
    • 特效(FX)
    • 特效
      • 特效-铁驭
        • 特效-铁驭武器
          • 特效-突击步枪
          • 特效-冲锋枪
          • 特效-轻机枪
          • 特效-狙击步枪
          • 特效-散弹枪
          • 特效-榴弹发射器
          • 特效-副手武器和手枪
          • 特效-反泰坦武器
          • 特效-特殊武器
        • 特效-铁驭投掷物
          • 特效-电弧效果
          • 特效-飞火星
          • 特效-重力星
        • 特效-铁驭能力
      • 特效-泰坦
        • 特效-离子
        • 特效-强力
        • 特效-北极星
          • 特效-电浆轨道炮
          • 特效- Holo Railgun
          • 特效-毒蛇
        • 特效-帝王
          • 特效-Monarch Beam
        • 特效-浪人
        • 特效-烈焰
          • 特效-铝热剂发射器
          • 特效-Meteor First
          • 特效-火墙
        • 特效-军团
      • 特效-NPC和炮台
        • 特效-NPC
          • 特效-无人机
          • FX - Drone Cloak
          • FX - Drone Frag
          • FX - MRVN
          • FX - Mortar
          • FX - Holo Spectre
        • 特效-炮台
      • 特效-杂项和未知项
        • FX - Holo Map
        • FX - Beacon
        • FX - Skybox
          • FX - Skybox 1K
          • FX - Skybox Carrier
          • FX - Skybox Creature
          • FX - Skybox Nuke
          • FX - Skybox Station Traffic
        • FX - Skyway
        • FX - Dev
          • FX - Bug Repro
        • FX - Droppod
        • FX - Scan
      • 特效-原始数据
        • FX - EMP
        • FX - Env
        • FX - Grenade
        • FX - Harvester
          • FX - Coop Harvester FX
        • FX - HUD
          • FX - HUD AR FX
          • FX - HUD AR Impacts
          • FX - HUD AR Lines
          • FX - HUD AR Ordinance
          • FX - HUD AR Pings
          • FX - HUD AR Titandroppoint
        • FX - Impact
          • FX - Impact FX EXP Cutom
        • FX - Light
        • FX - Orbital Strike
        • FX - Projectile Plasma
        • FX - Reload
        • FX - Shell Eject
        • FX - Smoke
        • FX - Tracers
        • FX - Weapon
          • FX - Arc Cannon
          • FX - Dragonbreath
          • FX - Flamethrower
          • FX - Malta Gun
          • FX - Triple Threat
    • 声音
      • 声音-默认语音
      • 声音-铁驭
        • 铁驭武器
          • 突击步枪
          • 冲锋枪
          • 轻机枪
          • 狙击步枪
          • 散弹枪
          • 榴弹枪
          • 副手武器及手枪
          • 反泰坦武器
        • 铁驭投掷物
        • 铁驭能力
      • 声音-泰坦
        • 声音-离子
        • 声音-强力
        • 声音-北极星
        • 声音-帝王
        • 声音-浪人
        • 声音-烈焰
        • 声音-军团
      • 声音-无人机和NPC
        • 声音 -巨型炮塔
      • 声音-杂项和未知项
        • 声音-电弧炮
        • 声音-电弧枪
        • 声音- Flamethrower
        • 声音- Triplethreat
    • 图标和HUD
      • 菜单
        • 私房加载界面
        • 私人比赛
        • 计分板
  • 修改样例
    • 低配模式
    • 无HUD修改
  • 导出资源
    • 导出地图
    • 导出模型
    • 使用Legion的方式导出
  • 资源
    • 纹理库
Powered by GitBook
On this page
  • 类型
  • 着色器语言 Shader Language
  • 着色器模型 Shader Mode
  • 顶点着色器 Vertex shader
  • 顶点着色器样例
  • 像素着色器
  • 像素着色器样例
  • 着色器在起源引擎中的应用
  • 后处理着色器
  • 逐对象着色器
  • 着色器参数列表
  • 基础
  • 反射
  • 材质标志

Was this helpful?

  1. 信息
  2. 纹理

着色器

着色器是由显卡运行的用来对物体进行绘制和渲染的软件。起源引擎3D世界中的一切物体都需要使用着色器。

Previous颜色和纹理信息Next$basetexture

Last updated 3 years ago

Was this helpful?

着色器是由显卡运行的用来对物体进行绘制和渲染的软件。起源引擎3D世界中的一切物体都需要使用着色器。

着色器使用存储在中的参数进行操作。一般的处理都是非常简单的,但也不排除一些非常复杂的用来处理实时阴影,光照和折射的处理方式。

类型

着色器有两种主要类型,像素着色器和顶点着色器,它们分别在渲染任务中承担不同的职责。着色器代替了固定的函数通道并且允许开发者通过动态地修改像素和顶点来更好地控制渲染输出效果。SDK工具包包含了很多。

着色器语言 Shader Language

目前有三种主要的着色器语言,, 和 。起源引擎使用的是基于 的着色器。至于大多数的 Cg 着色器参数也可以很容易地移植到 HLSL 上来。

着色器模型 Shader Mode

着色器模型定义了显卡如何执行高级着色技术。旧的显卡不能够在物理模型上识别新的阴影技术。目前有五个版本的着色器模型:SM1.1,SM1.4,SM2.0,SM3.0和SM4.0.

起源引擎默认使用的着色器模型是 Shader Model 2.0 ,这是最常见的一种模型。但是如果你希望着色器兼容更新或者更老的显卡,你必须指定其使用的着色器模型版本,如果未指定,显卡大概率使用不了该着色器。

当为较新的显卡创建着色器时,别忘了支持比较旧的显卡,否则你的游戏应用规模将会被限制,很多老显卡的玩家将不能够进行游玩。着色器需要向后兼容对特定旧显卡进行着色器指定,这样老的显卡将会使用某一个先前版本的着色器模型,而不是会导致错误的新着色器模型。

如果你想了解更多关于不同着色器的详情规格参数,请阅读以下。

有关更多起源引擎中创建着色器的信息,请参阅页面

顶点着色器 Vertex shader

顶点着色器适用于可编程通道中的每一个顶点。其基本作用是将几何图形转换为屏幕空间坐标,以便像素着色器栅格化图像。在更复杂的模型上,顶点着色器负责控制网络形变,光照和一般的顶点位移。注意,顶点着色器不能够创建顶点,只能够对顶点进行编辑。

下面是一个在起源引擎中使用了大量带注释的顶点着色器的案例:

顶点着色器样例

这是一个穿透着色器(pass through shader)- 目前来说,它没有对顶点数据进行重大修改,只是在像素着色器阶段进行了数据传递。

// common vertex shader defines provided with this header
#include "common_vs_fxc.h"

// define an output structure
struct VS_OUTPUT
{
  // position vector (float4)
  float4 pos       : POSITION0;
  // texture coordinates (uv - float2)
  float2 texCoord  : TEXCOORD0;
};

// main function - note C style definition
// takes a position vector (float4)
// returns a VS_OUTPUT struct
VS_OUTPUT main( float4 inPos: POSITION )
{
  // declare an empty VS_OUTPUT to fill
  VS_OUTPUT o = (VS_OUTPUT) 0;

  // compute the sign of the input position
  inPos.xy = sign( inPos.xy);
  // set the output position using the xy of the input
  o.pos = float4( inPos.xy, 0.0f, 1.0f);

  // get into range [0,1]
  o.texCoord = (float2(o.pos.x, -o.pos.y) + 1.0f)/2.0f;
  return o;
}

像素着色器

像素着色器应用于屏幕上呈现的每一个像素。像素着色器期望顶点着色器插值输入,然后用其栅格化图像。

下面是一个在起源引擎中使用了大量带注释的像素着色器的案例:

像素着色器样例

下面的像素着色器是一个用于创建灰度效果的后处理着色器(post-process shader)。

// specify a texture sampler, the actual source of this is specified in a vmt
sampler2D Texture0 : register( s0 );

// same function declaration style as vertex shaders
// pixel shaders return the colour value of the pixel (hence the float4)
float4 main( float2 texCoord  : TEXCOORD0 ) : COLOR
{
  // sample the texture at the specified texture coordinates
  float4 tex = tex2D( Texture0, texCoord );
     
  // greyscale the pixel colour values
  // - perform a dot product between the pixel colour and the specified vector
  // - 0.222, 0.707, 0.071 is found throughout image processing for gray scale effects.
  float4 grey = dot(float3(0.222, 0.707, 0.071), tex);
  
  // return the pixel colour in the form of a float4.          
  return grey;
}

着色器在起源引擎中的应用

起源引擎提供了两种不同形式的着色器,Posprocess和Per-Object,在起源引擎中使用的大多数效果和材质很大程度上依赖于其着色器组件。

后处理着色器

后处理(Postprocess)着色器是一个典型的像素着色器,它可以在整个屏幕上进行四边形渲染。这个四边形渲染使用了帧副本缓冲来加载纹理,这样像素着色器可以改变和修改帧来输出各种效果,经典进阶应用有运动模糊和爆炸等。

注解:以上部分已经过时,这些文件也不再包含在SDK中。sdk_bloom.cpp 和 sdk_bloom.ps20.fxc 定义了一个可供使用的着色器作为替代品。

起源 SDK 在后处理文件中提供了几个后处理着色器的例子 (sdk_postprocess.cpp,sdk_postprocess_vs20.fxc,和sdk_postprocess_ps20.fxc)

逐对象着色器

逐对象(Per-Object)着色器可以作用于起源引擎中的任何对象,比如说一个模型或者一幅画。其通过相关的Valve Material (.vmt)文件进行引用。每个逐对象着色器都可以用来创建折射材料,动态修改模型顶点或者实现其他高级的渲染效果。

起源 SDK 在 lightmap 文件中提供了几个逐对象着色器的例子( sdk_lightmap.cpp, sdk_lightmap_vs20.fxc,和 sdk_lightmap_ps20.fxc)。

着色器参数列表

这里列出了在 "Generic" 着色器中可用的参数列表,其他着色器可用参数请参照对应文档:

  • 特殊着色器的参数在着色器的说明文档中会有介绍;

  • 用于配置单个效果的参数一般会被分组到特定着色器的说明文章之中。如果找不到需要引用的参数,请尝试搜索它。

请查看材质贴图编译旗标(Material Map Compile Flags)的特殊 %compile 参数列表来查看可以改vbsp编译材料行为的参数。

这个列表还远远不够完整。

基础

反射

材质标志

参考文献:

高级的后处理着色器,比如说起源引擎中的运动模糊和爆炸着色器,可能需要自定义。更多关于后处理着色器的信息请参阅文档。

请查看来查看枚举的 $flags和 $flags2 参数的具体使用方法。

材质文件
现有的着色器
High Level Shader Language (HLSL)
C for Graphics (Cg)
OpenGL Shading Language (GLSL)
HLSL
WIKI百科的文章
着色器编辑
渲染目标
自定义后处理效果
材质旗标
$basetexture
$reflectivity
Material Flags
https://developer.valvesoftware.com/wiki/Shader
https://developer.valvesoftware.com/wiki/Category:List_of_Shader_Parameters