EngineApplyShaderToWorldTexture: Difference between revisions
Jump to navigation
Jump to search
(Described what (I think) appendLayers does) |
(Replace to root.) |
||
(8 intermediate revisions by 3 users not shown) | |||
Line 23: | Line 23: | ||
*'''targetElement:''' The element to restrict applying the shader to. If this is not set the shader will be applied to everything using the texture name. Valid element types for targetElement are [[vehicle|vehicles]], [[Object|objects]] and [[Ped|peds]]. | *'''targetElement:''' The element to restrict applying the shader to. If this is not set the shader will be applied to everything using the texture name. Valid element types for targetElement are [[vehicle|vehicles]], [[Object|objects]] and [[Ped|peds]]. | ||
}} | }} | ||
*'''appendLayers:''' allows two or more shaders to be applied in the same texture. You may want to modify the ''DepthBias'' in the technique pass to avoid Z-fighting artifacts when using this. | *'''appendLayers:''' allows two or more layered shaders to be applied in the same texture. You may want to modify the ''DepthBias'' in the technique pass to avoid Z-fighting artifacts when using this. | ||
===Returns=== | ===Returns=== | ||
Returns ''true'' if the shader was successfully applied, ''false'' otherwise. | Returns ''true'' if the shader was successfully applied, ''false'' otherwise. | ||
==Example== | ==Example== | ||
This example will replace the texture of a group of common explosions (grenades, rockets, etc) with a custom explosion effect | |||
<syntaxhighlight lang="lua"> | |||
theTechnique = dxCreateShader("shader.fx") | |||
explosionTexture = dxCreateTexture( "tex/Explosion.png") | |||
function replaceEffect() | |||
engineApplyShaderToWorldTexture(theTechnique, "fireball6") | |||
dxSetShaderValue (theTechnique, "gTexture", explosionTexture) | |||
end | |||
addEventHandler("onClientResourceStart", resourceRoot, replaceEffect) | |||
</syntaxhighlight> | |||
This example will apply a shader to the "des_logwall" world texture (which is used by the house near the 'play' gamemode spawn point) | This example will apply a shader to the "des_logwall" world texture (which is used by the house near the 'play' gamemode spawn point) | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
theTechnique = dxCreateShader("shader.fx") | |||
engineApplyShaderToWorldTexture( | engineApplyShaderToWorldTexture(theTechnique, "des_logwall") | ||
</syntaxhighlight> | </syntaxhighlight> | ||
This | This example will apply a shader to the current vehicle of the local player | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
theTechnique = dxCreateShader( "shader.fx" ) | |||
function applyShader(thePlayer, seat) | |||
local theVehicle = source | |||
if seat == 0 and thePlayer == localPlayer then | |||
engineApplyShaderToWorldTexture(theTechnique, "vehiclegrunge256", theVehicle) | |||
engineApplyShaderToWorldTexture(theTechnique, "?emap*", theVehicle) | |||
end | |||
end | |||
addEventHandler("onClientVehicleEnter", root, applyShader) | |||
) | |||
function removeShader(thePlayer, seat) | |||
local theVehicle = source | |||
if seat == 0 and thePlayer == localPlayer then | |||
engineRemoveShaderFromWorldTexture(theTechnique, "vehiclegrunge256", theVehicle) | |||
engineRemoveShaderFromWorldTexture(theTechnique, "?emap*", theVehicle) | |||
end | |||
end | |||
) | addEventHandler("onClientVehicleExit", root, removeShader) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
= | |||
{{ | Basic texture replacement shader example (compatible with all script examples on this page): | ||
<syntaxhighlight lang="fx"> | |||
texture gTexture; | |||
technique TexReplace | |||
{ | |||
pass P0 | |||
{ | |||
Texture[0] = gTexture; | |||
} | |||
} | |||
</syntaxhighlight> | |||
* Save the above code as [shadername]'''.fx''' | |||
==See Also== | ==See Also== | ||
{{Engine_functions}} | {{Engine_functions}} | ||
{{Drawing_functions}} | {{Drawing_functions}} |
Latest revision as of 23:50, 1 November 2022
This function applies a shader to one or more world textures.
Tip:
|
Syntax
bool engineApplyShaderToWorldTexture ( element shader, string textureName [, element targetElement = nil, bool appendLayers = true ] )
OOP Syntax Help! I don't understand this!
- Method: shader:applyToWorldTexture(...)
Required Arguments
- shader: The shader which is to be applied
- textureName: The name of the world texture to apply the shader to. Wildcard matching e.g. "ro?ds*" can be used to apply to more than one texture at a time.
Optional Arguments
- targetElement: The element to restrict applying the shader to. If this is not set the shader will be applied to everything using the texture name. Valid element types for targetElement are vehicles, objects and peds.
- appendLayers: allows two or more layered shaders to be applied in the same texture. You may want to modify the DepthBias in the technique pass to avoid Z-fighting artifacts when using this.
Returns
Returns true if the shader was successfully applied, false otherwise.
Example
This example will replace the texture of a group of common explosions (grenades, rockets, etc) with a custom explosion effect
theTechnique = dxCreateShader("shader.fx") explosionTexture = dxCreateTexture( "tex/Explosion.png") function replaceEffect() engineApplyShaderToWorldTexture(theTechnique, "fireball6") dxSetShaderValue (theTechnique, "gTexture", explosionTexture) end addEventHandler("onClientResourceStart", resourceRoot, replaceEffect)
This example will apply a shader to the "des_logwall" world texture (which is used by the house near the 'play' gamemode spawn point)
theTechnique = dxCreateShader("shader.fx") engineApplyShaderToWorldTexture(theTechnique, "des_logwall")
This example will apply a shader to the current vehicle of the local player
theTechnique = dxCreateShader( "shader.fx" ) function applyShader(thePlayer, seat) local theVehicle = source if seat == 0 and thePlayer == localPlayer then engineApplyShaderToWorldTexture(theTechnique, "vehiclegrunge256", theVehicle) engineApplyShaderToWorldTexture(theTechnique, "?emap*", theVehicle) end end addEventHandler("onClientVehicleEnter", root, applyShader) function removeShader(thePlayer, seat) local theVehicle = source if seat == 0 and thePlayer == localPlayer then engineRemoveShaderFromWorldTexture(theTechnique, "vehiclegrunge256", theVehicle) engineRemoveShaderFromWorldTexture(theTechnique, "?emap*", theVehicle) end end addEventHandler("onClientVehicleExit", root, removeShader)
Basic texture replacement shader example (compatible with all script examples on this page):
texture gTexture; technique TexReplace { pass P0 { Texture[0] = gTexture; } }
- Save the above code as [shadername].fx
See Also
- engineAddImage
- engineApplyShaderToWorldTexture
- engineFreeModel
- engineGetModelFlags
- engineGetModelIDFromName
- engineGetModelLODDistance
- engineGetModelNameFromID
- engineGetModelPhysicalPropertiesGroup
- engineGetModelTextureNames
- engineGetModelTextures
- engineGetModelTXDID
- engineGetModelVisibleTime
- engineGetObjectGroupPhysicalProperty
- engineGetSurfaceProperties
- engineGetVisibleTextureNames
- engineImageGetFilesCount
- engineImageGetFiles
- engineImageGetFile
- engineImageLinkDFF
- engineImageLinkTXD
- engineImportTXD
- engineLoadCOL
- engineLoadDFF
- engineLoadIMG
- engineLoadIFP
- engineLoadTXD
- engineRemoveImage
- engineRemoveShaderFromWorldTexture
- engineReplaceAnimation
- engineReplaceCOL
- engineReplaceModel
- engineRequestModel
- engineResetModelFlags
- engineResetModelLODDistance
- engineResetSurfaceProperties
- engineRestoreAnimation
- engineRestoreCOL
- engineRestoreDFFImage
- engineRestoreModel
- engineRestoreModelPhysicalPropertiesGroup
- engineRestoreObjectGroupPhysicalProperties
- engineRestoreTXDImage
- engineRestreamWorld
- engineSetAsynchronousLoading
- engineSetModelFlag
- engineSetModelFlags
- engineSetModelLODDistance
- engineSetModelPhysicalPropertiesGroup
- engineSetModelVisibleTime
- engineSetObjectGroupPhysicalProperty
- engineSetSurfaceProperties
- engineStreamingFreeUpMemory
- engineStreamingGetUsedMemory
- dxConvertPixels
- dxCreateFont
- dxCreateRenderTarget
- dxCreateScreenSource
- dxCreateShader
- dxCreateTexture
- dxDrawCircle
- dxDrawImage
- dxDrawImageSection
- dxDrawLine
- dxDrawLine3D
- dxDrawMaterialLine3D
- dxDrawMaterialPrimitive
- dxDrawMaterialPrimitive3D
- dxDrawMaterialSectionLine3D
- dxDrawPrimitive
- dxDrawPrimitive3D
- dxDrawRectangle
- dxDrawText
- dxDrawWiredSphere
- dxGetBlendMode
- dxGetFontHeight
- dxGetMaterialSize
- dxGetPixelColor
- dxGetPixelsSize
- dxGetPixelsFormat
- dxGetStatus
- dxGetTextSize
- dxGetTextWidth
- dxGetTexturePixels
- dxIsAspectRatioAdjustmentEnabled
- dxSetAspectRatioAdjustmentEnabled
- dxSetBlendMode
- dxSetPixelColor
- dxSetRenderTarget
- dxSetShaderValue
- dxSetShaderTessellation
- dxSetShaderTransform
- dxSetTestMode
- dxSetTextureEdge
- dxSetTexturePixels
- dxUpdateScreenSource