Zh/Env projectedtexture: Difference between revisions

From Valve Developer Community
< Zh
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 11: Line 11:
{{code class:zh-cn|CEnvProjectedTexture|env_projectedtexture.cpp}}
{{code class:zh-cn|CEnvProjectedTexture|env_projectedtexture.cpp}}


==注意事项==
==注意事项与Bug修复==
*Valve's games only support one shadow map in the [[PVS]] at a time.
{{main:zh-cn|Env_projectedtexture/fixes}}
: {{fix|It is possible to modify/remove this limit by [[Env_projectedtexture/fixes#Enabling_multiple_shadow_maps.|following these instructions.]]}}
*V社的游戏仅支持在同一时间内在[[PVS]]里渲染一个阴影贴图
*Textures used for projected textures require the flags Clamp S, Clamp T and Clamp All to avoid glitchy tiling. Also note, that VTFs are used directly and no VMT is needed.
: {{note:zh-cn|自{{ep2}},玩家的手电筒也是阴影贴图}}
{{note|In [[Garry's Mod]], there can be up to 9 active <code>env_projectedtexture</code>s turned on with shadow mapping at a time. You can also increase this limit by putting <code>-numshadowtextures #</code> in the Steam launch parameters of Garry's Mod, where # is the number of shadow maps the game should allow.}}
: {{warning|在{{csgo}}中,无论阴影质量设置如何,都只能在地图内使用一个投射纹理}}
*Shadows are only rendered when the user is running with "High" shadow detail. If your options menu does not show the "High" shadow detail setting by default, you can add <code>-force_vendor_id 0x10DE -force_device_id 0x1180</code> to the game's launch options for it to show up.
: {{fix|可以[[Env_projectedtexture/fixes#Enabling_multiple_shadow_maps.|遵循该教程]]修改/删除此限制。}}
*In multiplayer, <code>mat_supportflashlight</code> must be set to 1 for flashlights to work. By default these ConVars are disabled in [[Team Fortress 2]], so this entity won't work there without special configuration.
*被投射的纹理需要勾选Clamp S, Clamp T and Clamp All选项,以避免突兀的平铺。以及,投射纹理是直接使用[[VTF]]的,不需要[[VMT]]
*[[Viewmodel]]s won't receive light or shadows from projected textures. You can follow [[env_projectedtexture/fixes#Enabling shadow receiving on the view model|these instructions to fix this bug]].
{{note|[[Garry's Mod|Gmod]]中,可以同时有9个启用的<code>env_projectedtexture</code>s。你还可以在启动参数中添加<code>-numshadowtextures #</code>以提高上限。  # 是游戏应允许的阴影贴图数量。}}
{{bug|In Portal 2, some Nvidia graphics cards render white specks or squares on certain textures. To fix this, remove the bumpmap ({{ent|$bumpmap}} or {{ent|$ssbump}}) or {{ent|$detail}} textures.}}
{{note|{{P2CE}}将此上限提高到了8}}
: [https://www.youtube.com/watch?v=PJ1mnJHln5Q Video of said bug.]
{{note|在{{Mapbase}}里,你可以同时使用4个投射纹理。 这个上限可以通过启动参数<code>-numshadowtextures #</code>或者gameinfo.txt中的<code>CommandLine</code>部分来增加。}}
{{bug|Parenting does not work with stock SDK code.}}
*仅当玩家的阴影质量设置为“高”时才能显示投射纹理。如果您的阴影质量设置里不显示这一选项,你可以在游戏的启动参数里添加<code>-force_vendor_id 0x10DE -force_device_id 0x1180<、code>来强制显示
: {{fix|This bug is fixable by following these instructions: [[Env_projectedtexture/fixes#Fixing Parenting]].|code}}
* {{note|在{{csgo}}里,<code>env_projectedtexture</code>产生的阴影在阴影质量设置为“低”时显示}}
===Source 2007/2009 bugs===
*在多人游戏里,<code>mat_supportflashlight</code>必须被设置为1才能让手电筒正常工作,在[[Team Fortress 2|TF2]]中,这个[[Cvar|指令]]默认被禁用,故没有特殊修改的话,该实体无法在TF2中使用
These have all been fixed in more recent engine builds.<!--Do we really still need this section? These issues are fixed now, yes?-->
*[[Viewmodel|手臂模型]]不会接收来自投射纹理的任何光照和阴影,除了[[Garry's mod|Gmod]]和[[Portal 2|传送门2]]您可以[[env_projectedtexture/fixes#Enabling shadow receiving on the view model|按照该教程]]修复这个Bug。
{{bug|在传送门2中,部分英伟达显卡会在某些纹理上呈现白色噪点或方块(老黄出来挨打)。要解决此问题,请移除该纹理的[[Bumpmap|法线贴图]]($bumpmap或$ssbump)或[[$detail|细节纹理]]}}
: [https://www.youtube.com/watch?v=PJ1mnJHln5Q 描述此bug的视频]
{{bug|在传送门2中,当游戏在DirectX 9模式下运行时,无论阴影质量设置如何,在某些显卡上<code>env_projectedtexture</code>都不会渲染阴影。要解决此问题,请在启动参数添加<code>-vulkan</code>,让游戏在Vulkan模式下运行。}}
{{bug|实体绑定在原版SDK代码中无法使用}}
: {{fix|可以按照该教程修复此bug[[Env_projectedtexture/fixes#Fixing Parenting]].|code}}
{{bug|{{csgo}}投射纹理与{{ent|env_cascade_light}}之间没有平滑过渡}}}}
<!--我们真的要继续保留原文的“Source 2007/2009 bugs”吗?毕竟那部分提到的bug已经在新的起源分支中被修复了-->


{{bug|The configurable texture value from Hammer is not accepted - will always default to the flashlight. You must use the <code>SpotlightTexture</code> [[input]] or you can also override the actual contents of the default VTF with a new one.}}
==实体属性(Flags)==
: {{fix|You can fix this issue by following these instructions: [[Env_projectedtexture/fixes#Fix_configurable_texture_value_in_Hammer]].|code}}
*1: Enabled(默认开启)
{{note|The <code>SpotlightTexture</code> input has been disabled in the Portal 2 and CS:GO engines, and instead shows an error message: "SetSpotlightTexture is disabled. If you need this feature reimplemented, tell a programmer."}}
*2: Always Update(始终更新,用于移动光源){{AS_add:zh-cn}}{{Mapbase also:zh-cn}}
 
{{bug|The entity cannot target another entity.}}
: {{fix|This bug is fixable by following these instructions: [[env_projectedtexture/fixes#Fixing targeting]].|code}}
{{bug|[[Model]]s will not receive their own shadows correctly unless using [[$bumpmap]]. Even a flat bump map is sufficient.}}
{{bug|Causes issues if the entity overlaps a portal in [[Portal|Portal 1]]. Simply the projection overlapping a portal works fine.}}
 
==标签==
*1: Enabled - 启用
*2: Always Update (moving light) {{AS add}} - 实时更新(移动的光源)


==键值==
==键值==

Revision as of 17:02, 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
Warning.png警告:反恐精英:全球攻势中,无论阴影质量设置如何,都只能在地图内使用一个投射纹理
Note.png修复:可以遵循该教程修改/删除此限制。
  • 被投射的纹理需要勾选Clamp S, Clamp T and Clamp All选项,以避免突兀的平铺。以及,投射纹理是直接使用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<、code>来强制显示
  • 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!
材质名称,hammer不存在此键值。The texture or material which this entity projects. Must be a VTF file (not VMT), relative to /materials.
Texture Frame (textureframe) <整数(en)> 不存在于FGD!
材质帧数,如果是动态材质才行,hammer不存在此键值。If the texture is animated, this is the frame it should begin on.
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 以来)
Scale the light color by this brightness.
Color Transition Time (colortransitiontime) <浮点型(en)> (存在于自 AS 以来)
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输入时响应此输出。