EngineApplyShaderToWorldTexture

From Multi Theft Auto: Wiki
Revision as of 01:58, 14 April 2013 by Ccw (talk | contribs)
Jump to navigation Jump to search

This function applies a shader to one or more world textures.

[[{{{image}}}|link=|]] Note: The resource shader_tex_names can help in finding the names of world textures.
[[{{{image}}}|link=|]] Note: When replacing the texture for a ped using the CJ skin, set textureName to "CJ"
[[{{{image}}}|link=|]] Note: The shader inherits the render states of the original when it is drawn, so texture stage 0 will already be set to the original texture.
ADDED/UPDATED IN VERSION 1.3.1 r5246:
  • CJ body parts textures can be replaced by using: "cj_ped_head", "cj_ped_torso", "cj_ped_legs", "cj_ped_feet" and maybe some other things like "cj_ped_necklace", "cj_ped_watch" etc. Latest version of shader_tex_names will show what is being used.

Syntax

bool engineApplyShaderToWorldTexture ( element shader, string textureName [, element targetElement = nil, bool appendLayers = true ] )

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

ADDED/UPDATED IN VERSION 1.3.0 r4140:
  • 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 and objects.
ADDED/UPDATED IN VERSION 1.3.1 r4939:
targetElement can be a ped.
  • appendLayers: --TODO

Returns

Returns true if the shader was successfully applied, false otherwise.

Example

This example will apply a shader to the "des_logwall" world texture (which is used by the house near the 'play' gamemode spawn point)

myShader = dxCreateShader( "hello.fx" )
engineApplyShaderToWorldTexture( myShader, "des_logwall" )

This untested example will apply a shader to the current vehicle of the local player

myShader = dxCreateShader( "hello.fx" )

addEventHandler("onClientVehicleEnter", root,
    function(thePlayer, seat)
        local theVehicle = source
        if seat == 0 and thePlayer == localPlayer then
            engineApplyShaderToWorldTexture( myShader, "vehiclegrunge256", theVehicle )
            engineApplyShaderToWorldTexture( myShader, "?emap*", theVehicle )
        end
    end
)

addEventHandler("onClientVehicleExit", root,
    function(thePlayer, seat)
        local theVehicle = source
        if seat == 0 and thePlayer == localPlayer then
            engineRemoveShaderFromWorldTexture( myShader, "vehiclegrunge256", theVehicle )
            engineRemoveShaderFromWorldTexture( myShader, "?emap*", theVehicle )
        end
    end
)

Changelog

Version Description
1.3.0-9.04140 Added targetElement argument
1.3.0-9.04418 Added peds to allowed element types (for pixel shaders only)
1.3.1-9.04939 Added peds to allowed element types (full support)

See Also