Zh/Env projectedtexture: Difference between revisions
< Zh
		
		
		
		Jump to navigation
		Jump to search
		| Thunder4ik (talk | contribs) m (→top: clean up, replaced: {{Warning:zh-cn → {{warning) | m (→实体属性(Flags)) | ||
| (9 intermediate revisions by 4 users not shown) | |||
| Line 1: | Line 1: | ||
| {{ | {{LanguageBar}} | ||
| {{tabs|main=source|source=1|source2=1|env_projectedtexture}} | |||
| [[File:Env projectedtexture appearances.jpg|thumb|Env_projectedtexture有着不同的外观]] | |||
| [[File:Projected texture.jpg|thumb|在[[Garry's Mod|Gmod]]中投射一个彩色[[texture|纹理]]。]] | |||
| [[File:Global_shadow_mapping.jpg|thumb|[[Portal 2|传送门2]]大量使用投射纹理作为地图光照]] | |||
| [[File:volumetric_projected_texture_p2ce.jpg|thumb|{{P2CE}}在原版[[Portal 2|传送门2]]地图上的体积光效果]] | |||
| {{this is a|point entity|name=env_projectedtexture|since=Source 2006}} 它投射一个{{L|Texture|纹理}}作为一个动态光源,可以影响地图内所有的物体。还可以选择使用[[Wikipedia:Shadow mapping|阴影贴图]]。 投射纹理不像其他光照实体的光照一样是预先生成的,这种光是在游戏内实时计算的,地图本身不需要经过{{L|VRAD}}处理就可以使用。 | |||
| {{warning|这是起源里最吃配置的实体,谨慎使用}} | {{warning|这是起源里最吃配置的实体,谨慎使用}} | ||
| Line 42: | Line 48: | ||
| | 所有{{source|3.1}}多人游戏 | | 所有{{source|3.1}}多人游戏 | ||
| | 无 | | 无 | ||
| | 默认情况下,这些指令在 | | 默认情况下,这些指令在{{L|Team Fortress 2}}被禁用,在不进行特殊设置的情况下无法使用该实体 | ||
| |-   | |-   | ||
| |  | | {{L|Viewmodel}}不会接收来自投射纹理的光照或阴影 | ||
| | ''除''{{gmod}}和{{portal2}}外的所有{{source|3.1}}游戏 | | ''除''{{gmod}}和{{portal2}}外的所有{{source|3.1}}游戏 | ||
| | [[env_projectedtexture/fixes#Enabling shadow receiving on the view model]] | | [[env_projectedtexture/fixes#Enabling shadow receiving on the view model]] | ||
| Line 76: | Line 82: | ||
| !colspan="4"|Source 2007/2009 Bugs | !colspan="4"|Source 2007/2009 Bugs | ||
| |- | |- | ||
| |colspan="4"|{{note| | |colspan="4"|{{note|此页面之前的结构方式很容易将新发现的错误归入错误的类别, 因此以下一些错误可能会也可能不会出现在现代标题中。}} | ||
| |- | |- | ||
| | 不接受Hammer中的纹理键值,将始终使用手电筒纹理 | | 不接受Hammer中的纹理键值,将始终使用手电筒纹理 | ||
| | {{src07|3.1}}, {{src09|3.1}}, {{srcmp|3.1}} | | {{src07|3.1}}, {{src09|3.1}}, {{srcmp|3.1}} | ||
| | 使用{{code|SpotlightTexture}} | | 使用{{code|SpotlightTexture}}{{L|输入}}来指定纹理 | ||
| [[Env_projectedtexture/fixes#Fix_configurable_texture_value_in_Hammer]] | [[Env_projectedtexture/fixes#Fix_configurable_texture_value_in_Hammer]] | ||
| | 无 | | 无 | ||
| Line 89: | Line 95: | ||
| | 无 | | 无 | ||
| |- | |- | ||
| |  | | {{L|Model|模型}}无法正确接收自身的阴影 | ||
| | {{src07|3.1}}, {{src09|3.1}}, {{srcmp|3.1}} {{confirm}} | | {{src07|3.1}}, {{src09|3.1}}, {{srcmp|3.1}} {{confirm}} | ||
| | 创建法线贴图,即便是平面法线也可以,例如{{file|dev/flat_normal|vtf}}. | | 创建法线贴图,即便是平面法线也可以,例如{{file|dev/flat_normal|vtf}}. | ||
| Line 101: | Line 107: | ||
| ==实体属性(Flags)== | ==实体属性(Flags)== | ||
| {{fl|1|Enabled|是否默认开启. | |||
| :{{bug|hidetested=1|这个属性[[since|从]]{{as|2}}才有。 在{{source 2013}}它不起作用。 <br>{{workaround}}使用{{ent|logic_auto}}进行TurnOff输入。}} | |||
| }} | |||
| {{fl|2|Always Update (for moving light)|所有灯光始终更新位置, 在{{gmod|2}}里也存在。 | |||
| :{{tip|如果游戏不支持此属性, 你仍可以移动投影纹理。每0.24秒清除父对象,每0.25秒设置父对象,这将更新投影纹理位置(父对象必须有{{L|attachment|附着点}})。}} | |||
| |since={{as}}|also={{Mapbase}}。}} | |||
| ==键值== | ==键值== | ||
| Line 118: | Line 128: | ||
| {{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|该实体投射的纹理。必须是 | {{KV:zh-cn|Texture Name (texturename)|string|nofgd=1|该实体投射的纹理。必须是{{L|VTF}}文件而不是{{L|VMT}},相对于<code>/materials。</code>}} | ||
| {{KV:zh-cn|Texture Frame (textureframe)|int|nofgd=1|材质帧数,如果是动态材质才行}} | {{KV:zh-cn|Texture Frame (textureframe)|int|nofgd=1|材质帧数,如果是动态材质才行}} | ||
| {{KV:zh-cn|Simple Projection (simpleprojection)|since=AS|nofgd=1|boolean|表示这是否是一个简单的、不产生光照的投射纹理。}} | {{KV:zh-cn|Simple Projection (simpleprojection)|since=AS|nofgd=1|boolean|表示这是否是一个简单的、不产生光照的投射纹理。}} | ||
| Line 127: | Line 137: | ||
| {{KV:zh-cn|Color Transition Time (colortransitiontime)|float|since=AS|also=mapbase|改变颜色所需的时间。值越高速度越快。}} | {{KV:zh-cn|Color Transition Time (colortransitiontime)|float|since=AS|also=mapbase|改变颜色所需的时间。值越高速度越快。}} | ||
| {{KV:zh-cn|Appearance (style)|choices|since=P2|各种自定义外观预设。{{note|需要Flags <code>Always Update</code>被勾选以使其正常工作}} }} | {{KV:zh-cn|Appearance (style)|choices|since=P2|各种自定义外观预设。{{note|需要Flags <code>Always Update</code>被勾选以使其正常工作}} }} | ||
| {{ | {{lightstyle presets}} | ||
| {{KV:zh-cn|Custom Appearance (pattern)|string|since=P2|为该光照实体设置自定义的外观模式。图案格式是一串字符,其中'''a'''是全暗,'''z'''是全亮。即<code>aaggnnttzz</code>会是一个从黑暗到光明的阶梯式淡入淡出。}} | {{KV:zh-cn|Custom Appearance (pattern)|string|since=P2|为该光照实体设置自定义的外观模式。图案格式是一串字符,其中'''a'''是全暗,'''z'''是全亮。即<code>aaggnnttzz</code>会是一个从黑暗到光明的阶梯式淡入淡出。}} | ||
| {{KV:zh-cn|Default Appearance (defaultstyle)|string|since=P2|}} | {{KV:zh-cn|Default Appearance (defaultstyle)|string|since=P2|}} | ||
| Line 135: | Line 145: | ||
| ==输入== | ==输入== | ||
| {{note|在部分游戏的 | {{note|在部分游戏的{{L|FGD}}里,只有<code>TurnOn</code>,<code>TurnOff</code>和<code>FOV</code>被写入FGD中}} | ||
| {{IO:zh-cn|TurnOn|开启。}} | {{IO:zh-cn|TurnOn|开启。}} | ||
| {{IO:zh-cn|TurnOff|关闭}} | {{IO:zh-cn|TurnOff|关闭}} | ||
| Line 145: | Line 155: | ||
| {{IO:zh-cn|LightOnlyTarget|param=boolean|设置 '''Light Only Target'''. | {{IO:zh-cn|LightOnlyTarget|param=boolean|设置 '''Light Only Target'''. | ||
| :{{bug | :{{bug|无效输入}}}} | ||
| {{IO:zh-cn|LightWorld|param=int|设置 '''Light World'''. 0 {{=}} no, 1 {{=}} yes.}} | {{IO:zh-cn|LightWorld|param=int|设置 '''Light World'''. 0 {{=}} no, 1 {{=}} yes.}} | ||
| {{IO:zh-cn|AlwaysUpdateOn|since=AS|开启每帧更新(用于移动光源)。}} | {{IO:zh-cn|AlwaysUpdateOn|since=AS|开启每帧更新(用于移动光源)。}} | ||
| Line 160: | Line 170: | ||
| ==输出== | ==输出== | ||
| {{O BaseEntity:zh-cn|l4d=1}} | {{O BaseEntity:zh-cn|l4d=1}} | ||
| {{ACategory|Lighting}} | |||
Latest revision as of 07:15, 25 June 2025
 
  传送门2大量使用投射纹理作为地图光照
env_projectedtexture是一个点实体,可在所有的  起源 游戏,自从
 起源 游戏,自从  起源2006 以来中使用。 它投射一个纹理作为一个动态光源,可以影响地图内所有的物体。还可以选择使用阴影贴图。 投射纹理不像其他光照实体的光照一样是预先生成的,这种光是在游戏内实时计算的,地图本身不需要经过VRAD处理就可以使用。
 起源2006 以来中使用。 它投射一个纹理作为一个动态光源,可以影响地图内所有的物体。还可以选择使用阴影贴图。 投射纹理不像其他光照实体的光照一样是预先生成的,这种光是在游戏内实时计算的,地图本身不需要经过VRAD处理就可以使用。
 警告:这是起源里最吃配置的实体,谨慎使用
警告:这是起源里最吃配置的实体,谨慎使用
待完善: This template is currently using deprecated 
suf or {{Lang}}-based translations. Please use the main {{Code class}} instead, which uses {{Autolang}}. 在源代码中,它由 class
 在源代码中,它由 class CEnvProjectedTexture 代表,定义于 env_projectedtexture.cpp。
注意事项与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中后期以来的所有较新  Nvidia显卡)在某些纹理上呈现大/小白色斑点、方块或噪点(有时还会闪烁)。 | 传送门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)
- Enabled : [1]
- 是否默认开启.
 错误:这个属性从 错误:这个属性从 异形丛生才有。 在 异形丛生才有。 在 它不起作用。 它不起作用。 解决方案:使用logic_auto进行TurnOff输入。 解决方案:使用logic_auto进行TurnOff输入。
- Always Update (for moving light) : [2] (存在于自  以来) (也存在于 以来) (也存在于 。 之中) 。 之中)
- 所有灯光始终更新位置, 在 Garry's Mod里也存在。 Garry's Mod里也存在。
 提示:如果游戏不支持此属性, 你仍可以移动投影纹理。每0.24秒清除父对象,每0.25秒设置父对象,这将更新投影纹理位置(父对象必须有附着点)。 提示:如果游戏不支持此属性, 你仍可以移动投影纹理。每0.24秒清除父对象,每0.25秒设置父对象,这将更新投影纹理位置(父对象必须有附着点)。
键值
- Target (target) <目标名>
- 跟着目标移动,确保勾选 Always update。
- FOV (lightfov) <浮点型>
- 投射的fov范围
 证实:该键值似乎在Alien Swarm中没有效果
 证实:该键值似乎在Alien Swarm中没有效果- NearZ (nearz) <浮点型>
- 比此距离近的物体不接收投射。
- FarZ (farz) <浮点型>
- 同上,但是比此距离远。
- Enable Shadows (enableshadows) <布尔值>
- 投射出来的阴影是否开启。. 0 = no, 1 = yes.
- Shadow Quality (shadowquality) <Choices>
- 阴影质量
- 0: 低 (锐利的、像素化的阴影)
- 1: 高 (边缘平滑的阴影)
 
- Light Only Target (lightonlytarget) <布尔值>
- 只有目标才行收到效果.
- Light World (lightworld) <布尔值>
- 是否影响世界上的静态几何. 0 = no, 1 = yes.
- Camera Space (cameraspace) <整数>
- 角度,对于摄像机.
- Brightness Scale (brightnessscale) <浮点型> (存在于自 AS 以来) Template:Also:zh-cn
- 按该亮度缩放光照颜色。由于投射纹理的亮度值只能是0到255,所以使用Brightness Scale键值可以使投影纹理比255更亮。
 证实:是否仅在Mapbase里需要通过该键值使用更高的亮度?
 证实:是否仅在Mapbase里需要通过该键值使用更高的亮度?- Color Transition Time (colortransitiontime) <浮点型> (存在于自 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 - Underwater light mutation - mmnnmmnnnmmnn   
- Custom Appearance (pattern)   <字符串> (存在于自  以来) 以来)
- 为该光照实体设置自定义的外观模式。图案格式是一串字符,其中a是全暗,z是全亮。即aaggnnttzz会是一个从黑暗到光明的阶梯式淡入淡出。
- Default Appearance (defaultstyle)   <字符串> (存在于自  以来) 以来)
- Enable Volumetrics (volumetric)<布尔值> (仅存在于 中) 中)
- 是否为该投射纹理启用体积光
- Volumetric Intensity (volumetricintensity)<浮点型> (仅存在于 中) 中)
- 定义体积光的强度,(默认值为1,可以使用更高的值,没有严格限制)
输入
 注意:在部分游戏的FGD里,只有
注意:在部分游戏的FGD里,只有TurnOn,TurnOff和FOV被写入FGD中- TurnOn
- 开启。
- TurnOff
- 关闭
- FOV <浮点型>
- 设置 FOV.
- EnableShadows <布尔值>
- 设置是否显示阴影 0 = no, 1 = yes.
- SpotlightTexture <字符串>
- 设置射灯材质.
- Target <字符串>
- 指定一个新的 目标实体 .
- CameraSpace <布尔值>
- 设置 Camera Space.
- LightOnlyTarget <布尔值>
- 设置 Light Only Target.
 错误:无效输入  [todo tested in ?] 错误:无效输入  [todo tested in ?]
- LightWorld <整数>
- 设置 Light World. 0 = no, 1 = yes.
- LightColor  <color255> (存在于自  以来) 以来)
- 设置光照颜色.
- SetLightStyle  <整数> (存在于自  以来) 以来)
- 为该实体设置一个外观。(详见上方键值章节的“Appearance”部分)
- SetPattern  <字符串> (存在于自  以来) 以来)
- 设置自定义外观。(详见上方键值章节的“Custom Appearance”部分)
- SetNearZ  <浮点型> (存在于自  以来) 以来)
- 设置 NearZ.
- SetFarZ  <浮点型> (存在于自  以来) 以来)
- 设置 FarZ.
- SetVolumetricIntensity  <浮点型> (仅存在于  之中) 之中)
- 设置体积光的强度。(默认值为1,可以使用更高的值,没有严格限制)
- SetBrightnessScale  <浮点型> (仅存在于  之中) 之中)
- 设置光照强度
Base:
- AddContext <字符串>
- 添加到实体的 Response Contexts/响应上下文列表。格式是<key>:<value>。
 语法:
- ClearContext
- 从此实体的列表中删除所有上下文。
- ClearParent
- 从移动层次结构中删除该实体,使其可以自由移动。
- FireUser1 to FireUser4
- 触发相应的OnUser输出;详见 User Inputs and Outputs。
- Kill
- 从这个世界中删除此实体。
- KillHierarchy
- 功能类似Kill,尽管此实体与其父实体都被删除了,但比Kill快一点。
- RemoveContext
- 从实体列表删除一个上下文。名字应与现有上下文进行匹配。
- SetParent <字符串>
- 跟随此实体移动,详见 实体层级(依赖关系)。
- SetParentAttachmentMaintainOffset <字符串>
- 同上,但没有传送。在接收到输入时,实体保持其相对于附件的位置。
- DispatchResponse <字符串> 不存在于FGD!
- 向实体发送一个上下文。 详见 Response 和 Concept.
- DispatchEffect  <字符串> (被移除于  以来) 不存在于FGD! 以来) 不存在于FGD!
- 在实体的原点坐标设置一个特定效果;参见 List of Client Effects。自从 求生之路后由粒子系统取代。 求生之路后由粒子系统取代。
- RunScriptCode  <字符串> (存在于自  以来) 以来)
- 在接收输入的实体范围内执行一串 VScript 源代码。通过控制台触发时可能需要字符串引用。
 修复:使用文本编辑器手动删除带有字符串的参数。 修复:使用文本编辑器手动删除带有字符串的参数。
- SetLocalOrigin  <coordinates> (存在于自  以来) 不存在于FGD! 以来) 不存在于FGD!
- 将此实体设置到地图中的某个位置。如果此实体是某实体父级,那么它的子级也会随着移动。
输出
Base/基础:
- OnUser1 to OnUser4
- 这些输出将分别响应于 FireUser1到FireUser4输入。 详见 User Inputs and Outputs。
- OnKilled   (仅存在于   之中) 之中)
- 当实体被Kill输入时响应此输出。































