env_projectedtexture
< Zh
![](/w/images/thumb/e/e1/Global_shadow_mapping.jpg/300px-Global_shadow_mapping.jpg)
传送门2大量使用投射纹理作为地图光照
env_projectedtexture
是一个点实体 ,可在所有的 起源 游戏,自从
起源2006 以来中使用。 它投射一个纹理 作为一个动态光源,可以影响地图内所有的物体。还可以选择使用阴影贴图。 投射纹理不像其他光照实体的光照一样是预先生成的,这种光是在游戏内实时计算的,地图本身不需要经过VRAD 处理就可以使用。
![Warning.png](/w/images/thumb/c/cb/Warning.png/10px-Warning.png)
待完善: This template is currently using deprecated
suf
or {{Lang}}
-based translations. Please use the main {{Code class}}
instead, which uses {{Autolang}}
. 在源代码中,它由 class
CEnvProjectedTexture
代表,定义于 env_projectedtexture.cpp
。
Contents
注意事项与Bug修复
问题 | 受影响的游戏 | 修复/解决方案 | 备注 |
---|---|---|---|
由于着色器缺失,![]() |
![]() |
无 | 无 |
官方起源游戏只能同时渲染一个ShadowMap | 官方起源游戏/原始Source SDK Base 2013源代码 | 可参照此教程来修改/移除此限制 | 以下游戏为特例: |
投射的纹理需要勾选Clamp S,Clamp T和Clamp All Flags,以避免平铺时出现问题,另外请注意,可直接指定VTF而无需VMT | 所有起源游戏 | 无 | 无 |
仅在阴影细节为“高”时才可渲染投射的阴影 |
除![]() ![]() |
如果你的设置界面里阴影细节没有显示选项“高”,请在游戏启动参数里添加-force_vendor_id 0x10DE -force_device_id 0x1180
|
|
在多人游戏中,mat_supportflashlight 必须设置为1才能使用手电筒
|
所有起源多人游戏 | 无 | 默认情况下,这些指令在Team Fortress 2 被禁用,在不进行特殊设置的情况下无法使用该实体 |
Viewmodel 不会接收来自投射纹理的光照或阴影 | 除![]() ![]() |
env_projectedtexture/fixes#Enabling shadow receiving on the view model | |
部分英伟达显卡(尤其是使用最新驱动程序或2010中后期以来的所有较新![]() |
传送门2和Garry's Mod,也可能存在于所有起源游戏[证实]. | 移除($bumpmap ,$ssbump )或$detail textures),或使用mat_bumpmap 0 (来禁止渲染法线贴图),或以Vulkan模式运行游戏(启动参数里添加-vulkan ).
|
复原此问题的视频(需要翻墙). 另一个在Gmod中的复原GIF(点击以查看GIF): ![]() |
在DirectX 9模式下运行时,无论阴影细节设置如何,某些显卡都不会正确渲染投射纹理投射出的阴影,其阴影会穿过固体和模型 | 传送门2 | 通过启动参数-vulkan 来以Vulkan模式运行游戏
|
也影响所有Directx 9模式下的模组,已在![]() ![]() |
原始代码中,实体绑定无法使用 | Source SDK Base 2013 | Env_projectedtexture/fixes#Fixing Parenting | 无 |
投射的光照没有与env_cascade_light 的平滑过渡
|
CS:GO | 无 | 无 |
SpotlightTexture 在部分游戏中被禁用
|
传送门 2 引擎分支和CS:GO 引擎分支 | 无 | 已在地层起源中修复 |
Source 2007/2009 Bugs | |||
![]() | |||
不接受Hammer中的纹理键值,将始终使用手电筒纹理 | 起源2007, 起源2009, 起源 多人分支 | 使用SpotlightTexture 输入 来指定纹理
Env_projectedtexture/fixes#Fix_configurable_texture_value_in_Hammer |
无 |
此实体无法瞄准另一个实体 | 起源2007, 起源2009, 起源 多人分支 [证实] | env_projectedtexture/fixes#Fixing targeting | 无 |
模型 无法正确接收自身的阴影 | 起源2007, 起源2009, 起源 多人分支 [证实] | 创建法线贴图,即便是平面法线也可以,例如![]() dev/flat_normal.vtf .
|
无 |
在传送门中,如果该实体与传送门重叠会出现问题 | 传送门 | 无 | ![]() |
实体属性(Flags)
- 1: Enabled(默认开启)
- 2: Always Update(始终更新,用于移动光源)Template:AS add:zh-cnTemplate:Mapbase also:zh-cn
键值
- Target (target) <targetname >
- 跟着目标移动,确保勾选 Always update。
- FOV (lightfov) <float >
- 投射的fov范围
![](/w/images/thumb/2/2e/Confirm.png/10px-Confirm.png)
- NearZ (nearz) <float >
- 比此距离近的物体不接收投射。
- FarZ (farz) <float >
- 同上,但是比此距离远。
- Enable Shadows (enableshadows) <boolean >
- 投射出来的阴影是否开启。. 0 = no, 1 = yes.
- Shadow Quality (shadowquality) <choices>
- 阴影质量
- 0: 低 (锐利的、像素化的阴影)
- 1: 高 (边缘平滑的阴影)
- Light Only Target (lightonlytarget) <boolean >
- 只有目标才行收到效果.
- Light World (lightworld) <boolean >
- 是否影响世界上的静态几何. 0 = no, 1 = yes.
- Camera Space (cameraspace) <integer >
- 角度,对于摄像机.
- Brightness Scale (brightnessscale) <float > (存在于自 AS 以来) Template:Also:zh-cn
- 按该亮度缩放光照颜色。由于投射纹理的亮度值只能是0到255,所以使用Brightness Scale键值可以使投影纹理比255更亮。
![](/w/images/thumb/2/2e/Confirm.png/10px-Confirm.png)
- Color Transition Time (colortransitiontime) <float > (存在于自 AS 以来) Template:Also:zh-cn
- 改变颜色所需的时间。值越高速度越快。
Lightstyle presets
(epilepsy warning)Literal Value Description Sequence Preview 0 Normal m
10 Fluorescent flicker mmamammmmammamamaaamammma
2 Slow, strong pulse abcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba
11 Slow pulse, noblack abcdefghijklmnopqrrqponmlkjihgfedcba
5 Gentle pulse jklmnopqrstuvwxyzyxwvutsrqponmlkj
1 Flicker A mmnmmommommnonmmonqnmmo
6 Flicker B nmonqnmomnmomomno
3 Candle A mmmmmaaaaammmmmaaaaaabcdefgabcdefg
7 Candle B mmmaaaabcdefgmmmmaaaammmaamm
8 Candle C mmmaaammmaaammmabcdefaaaammmmabcdefmmmaaaa
4 Fast strobe mamamamamama
9 Slow strobe aaaaaaaazzzzzzzz
12 不存在于FGD! Underwater light mutation mmnnmmnnnmmnn
- Custom Appearance (pattern) <string > (存在于自
以来)
- 为该光照实体设置自定义的外观模式。图案格式是一串字符,其中a是全暗,z是全亮。即
aaggnnttzz
会是一个从黑暗到光明的阶梯式淡入淡出。
- Default Appearance (defaultstyle) <string > (存在于自
以来)
- Enable Volumetrics
(volumetric)
<boolean > (仅存在于中)
- 是否为该投射纹理启用体积光
- Volumetric Intensity
(volumetricintensity)
<float > (仅存在于中)
- 定义体积光的强度,(默认值为1,可以使用更高的值,没有严格限制)
输入
![Note.png](/w/images/thumb/c/cc/Note.png/10px-Note.png)
TurnOn
,TurnOff
和FOV
被写入FGD中TurnOn
- 开启。
TurnOff
- 关闭
FOV
<float >- 设置 FOV.
EnableShadows
<boolean >- 设置是否显示阴影 0 = no, 1 = yes.
SpotlightTexture
<string >- 设置射灯材质.
Target
<string >- 指定一个新的 目标实体 .
CameraSpace
<boolean >- 设置 Camera Space.
LightOnlyTarget
<boolean >- 设置 Light Only Target.
错误:无效输入 [todo tested in?]
LightWorld
<integer >- 设置 Light World. 0 = no, 1 = yes.
AlwaysUpdateOn
(存在于自 AS 以来)- 开启每帧更新(用于移动光源)。
AlwaysUpdateOff
(存在于自 AS 以来)- 关闭每帧更新(用于移动光源)。
LightColor
<color255 > (存在于自 AS 以来)- 设置光照颜色.
SetLightStyle
<integer > (存在于自以来)
- 为该实体设置一个外观。(详见上方键值章节的“Appearance”部分)
SetPattern
<string > (存在于自以来)
- 设置自定义外观。(详见上方键值章节的“Custom Appearance”部分)
SetNearZ
<float > (存在于自以来)
- 设置 NearZ.
SetFarZ
<float > (存在于自以来)
- 设置 FarZ.
SetVolumetricIntensity
<float > (仅存在于中)
- 设置体积光的强度。(默认值为1,可以使用更高的值,没有严格限制)
SetBrightnessScale
<float > (仅存在于中)
- 设置光照强度
Base:
AddContext
<string >- 添加到实体的 Response Contexts/响应上下文列表。格式是
<key>:<value>
。
语法:
ClearContext
- 从此实体的列表中删除所有上下文。
ClearParent
- 从移动层次结构中删除该实体,使其可以自由移动。
FireUser1
到FireUser4
- 触发相应的
OnUser
输出;详见 User Inputs and Outputs。
Kill
- 从这个世界中删除此实体。
KillHierarchy
- 功能类似
Kill
,尽管此实体与其父实体都被删除了,但比Kill
快一点。
RemoveContext
- 从实体列表删除一个上下文。名字应与现有上下文进行匹配。
SetParent
<string >- 跟随此实体移动,详见 实体层级(依赖关系)。
SetParentAttachmentMaintainOffset
<string >- 同上,但没有传送。在接收到输入时,实体保持其相对于附件的位置。
DispatchResponse
<string > 不存在于FGD!- 向实体发送一个上下文。 详见 Response
和 Concept
.
DispatchEffect
<string > (自从被移除) 不存在于FGD!
- 在实体的原点坐标设置一个特定效果;参见 List of Client Effects
。自从
求生之路后由粒子系统取代。
RunScriptCode
<string > (存在于自以来)
- 在接收输入的实体范围内执行一串 VScript 源代码。通过控制台触发时可能需要字符串引用。
修复:使用文本编辑器手动删除带有字符串的参数。
SetLocalOrigin
<coordinates > (存在于自以来) 不存在于FGD!
- 将此实体设置到地图中的某个位置。如果此实体是某实体父级,那么它的子级也会随着移动。
输出
Base/基础:
OnUser1
到OnUser4
- 这些输出将分别响应于
FireUser1
到FireUser4
输入。 详见 User Inputs and Outputs。 OnKilled
(仅存在于之中)
- 当实体被Kill输入时响应此输出。