Zh/Env projectedtexture: Difference between revisions

From Valve Developer Community
< Zh
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 5: Line 5:
[[File:Global_shadow_mapping.jpg|thumb|[[Portal 2|传送门2]]大量使用投射纹理作为地图光照]]
[[File:Global_shadow_mapping.jpg|thumb|[[Portal 2|传送门2]]大量使用投射纹理作为地图光照]]
[[File:volumetric_projected_texture_p2ce.jpg|thumb|{{P2CE}}在原版[[Portal 2|传送门2]]地图上的体积光效果]]
[[File:volumetric_projected_texture_p2ce.jpg|thumb|{{P2CE}}在原版[[Portal 2|传送门2]]地图上的体积光效果]]
{{base point:zh-cn|env_projectedtexture(投射纹理)|since=Half-Life 2: Episode One}}它投射一个[[Texture|纹理]]作为一个动态光源,可以影响地图内所有的物体。还可以选择使用[[Wikipedia:Shadow mapping|阴影贴图]]。 投射纹理不像其他光照实体的光照一样是预先生成的,这种光是在游戏内实时计算的,地图本身不需要经过[[VRAD]]处理就可以使用。
{{base point:zh-cn|env_projectedtexture|since=Half-Life 2: Episode One}}它投射一个[[Texture|纹理]]作为一个动态光源,可以影响地图内所有的物体。还可以选择使用[[Wikipedia:Shadow mapping|阴影贴图]]。 投射纹理不像其他光照实体的光照一样是预先生成的,这种光是在游戏内实时计算的,地图本身不需要经过[[VRAD]]处理就可以使用。


{{Warning:zh-cn|这是起源里最吃配置的实体,谨慎使用}}
{{Warning:zh-cn|这是起源里最吃配置的实体,谨慎使用}}
Line 15: Line 15:
*V社的游戏仅支持在同一时间内在[[PVS]]里渲染一个阴影贴图
*V社的游戏仅支持在同一时间内在[[PVS]]里渲染一个阴影贴图
: {{note:zh-cn|自{{ep2}},玩家的手电筒也是阴影贴图}}
: {{note:zh-cn|自{{ep2}},玩家的手电筒也是阴影贴图}}
: {{warning|在{{csgo}}中,无论阴影质量设置如何,都只能在地图内使用一个投射纹理}}
: {{warning:zh-cn|在{{csgo}}中,无论阴影质量设置如何,都只能在地图内使用一个投射纹理}}
: {{fix|可以[[Env_projectedtexture/fixes#Enabling_multiple_shadow_maps.|遵循该教程]]修改/删除此限制。}}
: {{fix:zh-cn|可以[[Env_projectedtexture/fixes#Enabling_multiple_shadow_maps.|遵循该教程]]修改/删除此限制。}}
*被投射的纹理需要勾选Clamp S, Clamp T and Clamp All选项,以避免突兀的平铺。以及,投射纹理是直接使用[[VTF]]的,不需要[[VMT]]
*被投射的纹理需要勾选Clamp S, Clamp T and Clamp All Flags,以避免突兀的平铺。以及,投射纹理是直接使用[[VTF]]的,不需要[[VMT]]
{{note|在[[Garry's Mod|Gmod]]中,可以同时有9个启用的<code>env_projectedtexture</code>s。你还可以在启动参数中添加<code>-numshadowtextures #</code>以提高上限。  # 是游戏应允许的阴影贴图数量。}}
{{note|在[[Garry's Mod|Gmod]]中,可以同时有9个启用的<code>env_projectedtexture</code>s。你还可以在启动参数中添加<code>-numshadowtextures #</code>以提高上限。  # 是游戏应允许的阴影贴图数量。}}
{{note|{{P2CE}}将此上限提高到了8}}
{{note|{{P2CE}}将此上限提高到了8}}
{{note|在{{Mapbase}}里,你可以同时使用4个投射纹理。 这个上限可以通过启动参数<code>-numshadowtextures #</code>或者gameinfo.txt中的<code>CommandLine</code>部分来增加。}}
{{note|在{{Mapbase}}里,你可以同时使用4个投射纹理。 这个上限可以通过启动参数<code>-numshadowtextures #</code>或者gameinfo.txt中的<code>CommandLine</code>部分来增加。}}
*仅当玩家的阴影质量设置为“高”时才能显示投射纹理。如果您的阴影质量设置里不显示这一选项,你可以在游戏的启动参数里添加<code>-force_vendor_id 0x10DE -force_device_id 0x1180<、code>来强制显示
*仅当玩家的阴影质量设置为“高”时才能显示投射纹理。如果您的阴影质量设置里不显示这一选项,你可以在游戏的启动参数里添加<code>-force_vendor_id 0x10DE -force_device_id 0x1180</code>来强制显示
* {{note|在{{csgo}}里,<code>env_projectedtexture</code>产生的阴影在阴影质量设置为“低”时显示}}
* {{note|在{{csgo}}里,<code>env_projectedtexture</code>产生的阴影在阴影质量设置为“低”时显示}}
*在多人游戏里,<code>mat_supportflashlight</code>必须被设置为1才能让手电筒正常工作,在[[Team Fortress 2|TF2]]中,这个[[Cvar|指令]]默认被禁用,故没有特殊修改的话,该实体无法在TF2中使用
*在多人游戏里,<code>mat_supportflashlight</code>必须被设置为1才能让手电筒正常工作,在[[Team Fortress 2|TF2]]中,这个[[Cvar|指令]]默认被禁用,故没有特殊修改的话,该实体无法在TF2中使用
Line 30: Line 30:
{{bug|实体绑定在原版SDK代码中无法使用}}
{{bug|实体绑定在原版SDK代码中无法使用}}
: {{fix|可以按照该教程修复此bug[[Env_projectedtexture/fixes#Fixing Parenting]].|code}}
: {{fix|可以按照该教程修复此bug[[Env_projectedtexture/fixes#Fixing Parenting]].|code}}
{{bug|{{csgo}}投射纹理与{{ent|env_cascade_light}}之间没有平滑过渡}}}}
{{bug|{{csgo}}投射纹理与{{ent|env_cascade_light}}之间没有平滑过渡}}
<!--我们真的要继续保留原文的“Source 2007/2009 bugs”吗?毕竟那部分提到的bug已经在新的起源分支中被修复了-->
<!--我们真的要继续保留原文的“Source 2007/2009 bugs”吗?毕竟那部分提到的bug已经在新的起源分支中被修复了-->


Line 52: Line 52:
{{KV:zh-cn|Light Color (lightcolor)|color255 + int|颜色与强度}}
{{KV:zh-cn|Light Color (lightcolor)|color255 + int|颜色与强度}}
{{KV:zh-cn|Camera Space (cameraspace)|integer|角度,对于摄像机.}}
{{KV:zh-cn|Camera Space (cameraspace)|integer|角度,对于摄像机.}}
{{KV:zh-cn|Texture Name (texturename)|string|nofgd=1|材质名称,hammer不存在此键值。The [[texture]] or [[material]] which this entity projects. Must be a [[VTF]] file (not VMT), relative to <code>/materials</code>.}}
{{KV:zh-cn|Texture Name (texturename)|string|nofgd=1|该实体投射的纹理。必须是[[VTF]]文件而不是[[VMT]],相对于<code>/materials。</code>}}
{{KV:zh-cn|Texture Frame (textureframe)|int|nofgd=1|材质帧数,如果是动态材质才行,hammer不存在此键值。If the texture is animated, this is the frame it should begin on.}}
{{KV:zh-cn|Texture Frame (textureframe)|int|nofgd=1|材质帧数,如果是动态材质才行}}
{{KV:zh-cn|Simple Projection (simpleprojection)|since=AS|nofgd=1|boolean|Indicates if this is a simple, non-light casting texture projection.}}
{{KV:zh-cn|Simple Projection (simpleprojection)|since=AS|nofgd=1|boolean|Indicates if this is a simple, non-light casting texture projection.}}
{{KV:zh-cn|Simple Projection Size (projection_size)|since=AS|nofgd=1|float|}}
{{KV:zh-cn|Simple Projection Size (projection_size)|since=AS|nofgd=1|float|}}
{{KV:zh-cn|Simple Projection Rotation (projection_rotation)|since=AS|nofgd=1|float|}}
{{KV:zh-cn|Simple Projection Rotation (projection_rotation)|since=AS|nofgd=1|float|}}
{{KV:zh-cn|Brightness Scale (brightnessscale)|float|since=AS|Scale the light color by this brightness.}}
{{KV:zh-cn|Brightness Scale (brightnessscale)|float|since=AS|also=mapbase|Scale the light color by this brightness.}}
{{KV:zh-cn|Color Transition Time (colortransitiontime)|float|since=AS|Amount of time it takes for a color change to occur. Higher numbers cause faster transitions.}}
{{KV:zh-cn|Color Transition Time (colortransitiontime)|float|since=AS|also=mapbase|Amount of time it takes for a color change to occur. Higher numbers cause faster transitions.}}
{{KV:zh-cn|Appearance (style)|choices|since=P2|Various Custom Appearance presets. {{Note|Requires AlwaysUpdateOn to work. }} }}
{{KV:zh-cn|Appearance (style)|choices|since=P2|Various Custom Appearance presets. {{Note|Requires AlwaysUpdateOn to work. }} }}
{{light appearances}}
{{light appearances}}

Revision as of 17:10, 24 December 2021

English (en)中文 (zh)Translate (Translate)

Template:Translate:zh-cn

Env_projectedtexture有着不同的外观
Gmod中投射一个彩色纹理
传送门2大量使用投射纹理作为地图光照
传送门 2:社区特供版在原版传送门2地图上的体积光效果

起源 env_projectedtexture是一个存在于所有的 起源 游戏自从 Template:Name=Half-Life 2: Episode One 以来的点实体。它投射一个纹理作为一个动态光源,可以影响地图内所有的物体。还可以选择使用阴影贴图。 投射纹理不像其他光照实体的光照一样是预先生成的,这种光是在游戏内实时计算的,地图本身不需要经过VRAD处理就可以使用。

Template:Warning:zh-cn


待完善: 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


注意事项与Bug修复

主条目:Env_projectedtexture/fixes
  • V社的游戏仅支持在同一时间内在PVS里渲染一个阴影贴图
Template:Note:zh-cn
Template:Warning:zh-cn
修复:可以遵循该教程修改/删除此限制。
  • 被投射的纹理需要勾选Clamp S, Clamp T and Clamp All Flags,以避免突兀的平铺。以及,投射纹理是直接使用VTF的,不需要VMT
Note.png注意:Gmod中,可以同时有9个启用的env_projectedtextures。你还可以在启动参数中添加-numshadowtextures #以提高上限。 # 是游戏应允许的阴影贴图数量。
Note.png注意:传送门 2:社区特供版将此上限提高到了8
Note.png注意:Mapbase里,你可以同时使用4个投射纹理。 这个上限可以通过启动参数-numshadowtextures #或者gameinfo.txt中的CommandLine部分来增加。
  • 仅当玩家的阴影质量设置为“高”时才能显示投射纹理。如果您的阴影质量设置里不显示这一选项,你可以在游戏的启动参数里添加-force_vendor_id 0x10DE -force_device_id 0x1180来强制显示
  • Note.png注意:反恐精英:全球攻势里,env_projectedtexture产生的阴影在阴影质量设置为“低”时显示
  • 在多人游戏里,mat_supportflashlight必须被设置为1才能让手电筒正常工作,在TF2中,这个指令默认被禁用,故没有特殊修改的话,该实体无法在TF2中使用
  • 手臂模型不会接收来自投射纹理的任何光照和阴影,除了Gmod传送门2您可以按照该教程修复这个Bug。
Icon-Bug.png错误:在传送门2中,部分英伟达显卡会在某些纹理上呈现白色噪点或方块(老黄出来挨打)。要解决此问题,请移除该纹理的法线贴图($bumpmap或$ssbump)或细节纹理  [todo tested in ?]
描述此bug的视频
Icon-Bug.png错误:在传送门2中,当游戏在DirectX 9模式下运行时,无论阴影质量设置如何,在某些显卡上env_projectedtexture都不会渲染阴影。要解决此问题,请在启动参数添加-vulkan,让游戏在Vulkan模式下运行。  [todo tested in ?]
Icon-Bug.png错误:实体绑定在原版SDK代码中无法使用  [todo tested in ?]
Cpp.png代码修复:可以按照该教程修复此bugEnv_projectedtexture/fixes#Fixing Parenting.
Icon-Bug.png错误:反恐精英:全球攻势投射纹理与env_cascade_light之间没有平滑过渡  [todo tested in ?]

实体属性(Flags)

键值

Target (target) <目标名(en)>
跟着目标移动,确保勾选 Always update
FOV (lightfov) <浮点型(en)>
投射的fov范围
证实:无效,在Alien Swarm.
NearZ (nearz) <浮点型(en)>
比此距离近的物体不接收投射。
FarZ (farz) <浮点型(en)>
同上,但是比此距离远。
Enable Shadows (enableshadows) <布尔值(en)>
投射出来的阴影是否开启。. 0 = no, 1 = yes.
Shadow Quality (shadowquality) <Choices(en)>
阴影质量
  • 0: Low (sharp, pixelized shadows) 低
  • 1: High (smooth edged shadows) 高
Light Only Target (lightonlytarget) <布尔值(en)>
只有目标才行收到效果.
Light World (lightworld) <布尔值(en)>
是否影响世界上的静态几何. 0 = no, 1 = yes.
Light Color (lightcolor) <color255(en) + 整数(en)>
颜色与强度
Camera Space (cameraspace) <整数(en)>
角度,对于摄像机.
Texture Name (texturename) <字符串(en)> 不存在于FGD!
该实体投射的纹理。必须是VTF文件而不是VMT,相对于/materials。
Texture Frame (textureframe) <整数(en)> 不存在于FGD!
材质帧数,如果是动态材质才行
Simple Projection (simpleprojection) <布尔值(en)> (存在于自 AS 以来) 不存在于FGD!
Indicates if this is a simple, non-light casting texture projection.
Simple Projection Size (projection_size) <浮点型(en)> (存在于自 AS 以来) 不存在于FGD!
Simple Projection Rotation (projection_rotation) <浮点型(en)> (存在于自 AS 以来) 不存在于FGD!
Brightness Scale (brightnessscale) <浮点型(en)> (存在于自 AS 以来) Template:Also:zh-cn
Scale the light color by this brightness.
Color Transition Time (colortransitiontime) <浮点型(en)> (存在于自 AS 以来) Template:Also:zh-cn
Amount of time it takes for a color change to occur. Higher numbers cause faster transitions.
Appearance (style) <choices> (存在于自 传送门2 以来)
Various Custom Appearance presets.
Note.png注意:Requires AlwaysUpdateOn to work.

Template:Light appearances

Custom Appearance (pattern) <字符串(en)> (存在于自 传送门2 以来)
Set a custom pattern of light brightness for this light. Pattern format is a string of characters, where a is total darkness, z fully bright. i.e. aaggnnttzz would be a steppy fade in from dark to light.
Default Appearance (defaultstyle) <字符串(en)> (存在于自 传送门2 以来)

Template:KV BaseEntity:zh-cn

输出

Template:Note:zh-cn

TurnOn
开启。
TurnOff
关闭
FOV <浮点型(en)>
设置 FOV.
EnableShadows <布尔值(en)>
设置是否显示阴影 0 = no, 1 = yes.
SpotlightTexture <字符串(en)>
设置射灯材质.
Target <字符串(en)>
指定一个新的 目标实体 .
CameraSpace <布尔值(en)>
设置 Camera Space.
LightOnlyTarget <布尔值(en)>
设置 Light Only Target.
Icon-Bug.png错误:Non-functional.无效  [todo tested in ?]
LightWorld <整数(en)>
设置 Light World. 0 = no, 1 = yes.
AlwaysUpdateOn  (存在于自 异形丛生 以来)
Turn on per frame updating (for moving lights).
AlwaysUpdateOff  (存在于自 异形丛生 以来)
Turn off per frame updating (for moving lights).
LightColor <color255(en)> (存在于自 异形丛生 以来)
Change the Light Color.
SetLightStyle <整数(en)> (存在于自 传送门2 以来)
设置 an Appearance. (see Appearance keyvalue above for possible values)
SetPattern <字符串(en)> (存在于自 传送门2 以来)
设置 Custom Appearance. (see Custom Appearance keyvalue above)
SetNearZ <浮点型(en)> (存在于自 传送门2 以来)
设置 NearZ.
SetFarZ <浮点型(en)> (存在于自 传送门2 以来)
设置 FarZ.


输出

Base/基础:

OnUser1 to OnUser4
这些输出将分别响应于 FireUser1FireUser4 输入。 详见 User Inputs and Outputs
OnKilled  (存在于 求生之路系列求生之路系列 之中)
当实体被Kill输入时响应此输出。