-- -- c_detail.lua -- local texturasAtivadas = true -- Mantém o controle do estado das texturas ---------------------------------------------------------------- -- enableDetail ---------------------------------------------------------------- function enableDetail() if bEffectEnabled then return end texturasAtivadas = true -- Load textures detail22Texture = dxCreateTexture('media/detail22.dds', "dxt3") detail58Texture = dxCreateTexture('media/detail58.dds', "dxt3") detail68Texture = dxCreateTexture('media/detail68.dds', "dxt1") detail63Texture = dxCreateTexture('media/detail63.dds', "dxt3") dirtyTexture = dxCreateTexture('media/dirty.dds', "dxt3") detail04Texture = dxCreateTexture('media/detail04.dds', "dxt3") detail29Texture = dxCreateTexture('media/detail29.dds', "dxt3") detail55Texture = dxCreateTexture('media/detail55.dds', "dxt3") detail35TTexture = dxCreateTexture('media/detail35T.dds', "dxt3") -- Create shaders brickWallShader, tec = getBrickWallShader() if brickWallShader then grassShader = getGrassShader() roadShader = getRoadShader() road2Shader = getRoad2Shader() paveDirtyShader = getPaveDirtyShader() paveStretchShader = getPaveStretchShader() barkShader = getBarkShader() rockShader = getRockShader() mudShader = getMudShader() concreteShader = getBrickWallShader() sandShader = getMudShader() end effectParts = { detail22Texture, detail58Texture, detail68Texture, detail63Texture, dirtyTexture, detail04Texture, detail29Texture, detail55Texture, detail35TTexture, brickWallShader, grassShader, roadShader, road2Shader, paveDirtyShader, paveStretchShader, barkShader, rockShader, mudShader, concreteShader, sandShader } bAllValid = true for _,part in ipairs(effectParts) do bAllValid = part and bAllValid end bEffectEnabled = true if not bAllValid then outputChatBox( "Detail: Could not create some things. Please use debugscript 3" ) disableDetail() else engineApplyShaderToWorldTexture ( roadShader, "*road*" ) engineApplyShaderToWorldTexture ( roadShader, "*tar*" ) engineApplyShaderToWorldTexture ( roadShader, "*asphalt*" ) engineApplyShaderToWorldTexture ( roadShader, "*freeway*" ) engineApplyShaderToWorldTexture ( concreteShader, "*wall*" ) engineApplyShaderToWorldTexture ( concreteShader, "*floor*" ) engineApplyShaderToWorldTexture ( concreteShader, "*bridge*" ) engineApplyShaderToWorldTexture ( concreteShader, "*conc*" ) engineApplyShaderToWorldTexture ( concreteShader, "*drain*" ) engineApplyShaderToWorldTexture ( paveDirtyShader, "*walk*" ) engineApplyShaderToWorldTexture ( paveDirtyShader, "*pave*" ) engineApplyShaderToWorldTexture ( paveDirtyShader, "*cross*" ) engineApplyShaderToWorldTexture ( mudShader, "*mud*" ) engineApplyShaderToWorldTexture ( mudShader, "*dirt*" ) engineApplyShaderToWorldTexture ( rockShader, "*rock*" ) engineApplyShaderToWorldTexture ( rockShader, "*stone*" ) engineApplyShaderToWorldTexture ( grassShader, "*grass*" ) engineApplyShaderToWorldTexture ( grassShader, "desertgryard256" ) -- grass engineApplyShaderToWorldTexture ( sandShader, "*sand*" ) engineApplyShaderToWorldTexture ( barkShader, "*leave*" ) engineApplyShaderToWorldTexture ( barkShader, "*log*" ) engineApplyShaderToWorldTexture ( barkShader, "*bark*" ) -- Roads engineApplyShaderToWorldTexture ( roadShader, "*carpark*" ) engineApplyShaderToWorldTexture ( road2Shader, "*hiway*" ) engineApplyShaderToWorldTexture ( roadShader, "*junction*" ) engineApplyShaderToWorldTexture ( paveStretchShader, "snpedtest*" ) -- Pavement engineApplyShaderToWorldTexture ( paveStretchShader, "sidelatino*" ) engineApplyShaderToWorldTexture ( paveStretchShader, "sjmhoodlawn41" ) -- Remove detail from LOD models etc. for i,part in ipairs(effectParts) do if getElementType(part) == "shader" then engineRemoveShaderFromWorldTexture ( part, "tx*" ) engineRemoveShaderFromWorldTexture ( part, "lod*" ) end end end end function disableDetail() if not bEffectEnabled then return end texturasAtivadas = false for _,part in ipairs(effectParts) do if part then destroyElement( part ) end end effectParts = {} bAllValid = false bEffectEnabled = false end function isDetail() return bEffectEnabled end function getBrickWallShader() return getMakeShader( getBrickWallSettings () ) end function getGrassShader() return getMakeShader( getGrassSettings () ) end function getRoadShader() return getMakeShader( getRoadSettings () ) end function getRoad2Shader() return getMakeShader( getRoad2Settings () ) end function getPaveDirtyShader() return getMakeShader( getPaveDirtySettings () ) end function getPaveStretchShader() return getMakeShader( getPaveStretchSettings () ) end function getBarkShader() return getMakeShader( getBarkSettings () ) end function getRockShader() return getMakeShader( getRockSettings () ) end function getMudShader() return getMakeShader( getMudSettings () ) end function getMakeShader(v) local shader,tec = dxCreateShader ( "fx/detail.fx", 1, 100 ) if shader then dxSetShaderValue( shader, "sDetailTexture", v.texture ); dxSetShaderValue( shader, "sDetailScale", v.detailScale ) dxSetShaderValue( shader, "sFadeStart", v.sFadeStart ) dxSetShaderValue( shader, "sFadeEnd", v.sFadeEnd ) dxSetShaderValue( shader, "sStrength", v.sStrength ) dxSetShaderValue( shader, "sAnisotropy", v.sAnisotropy ) end return shader,tec end function getBrickWallSettings () local v = {} v.texture=detail22Texture v.detailScale=3 v.sFadeStart=60 v.sFadeEnd=100 v.sStrength=0.6 v.sAnisotropy=1 return v end function getGrassSettings () local v = {} v.texture=detail58Texture v.detailScale=2 v.sFadeStart=60 v.sFadeEnd=100 v.sStrength=0.6 v.sAnisotropy=1 return v end function getRoadSettings () local v = {} v.texture=detail68Texture v.detailScale=1 v.sFadeStart=60 v.sFadeEnd=100 v.sStrength=0.6 v.sAnisotropy=1 return v end function getRoad2Settings () local v = {} v.texture=detail63Texture v.detailScale=1 v.sFadeStart=90 v.sFadeEnd=100 v.sStrength=0.7 v.sAnisotropy=0.9 return v end function getPaveDirtySettings () local v = {} v.texture=dirtyTexture v.detailScale=1 v.sFadeStart=60 v.sFadeEnd=100 v.sStrength=0.4 v.sAnisotropy=1 return v end function getPaveStretchSettings () local v = {} v.texture=detail04Texture v.detailScale=1 v.sFadeStart=80 v.sFadeEnd=100 v.sStrength=0.3 v.sAnisotropy=1 return v end function getBarkSettings () local v = {} v.texture=detail29Texture v.detailScale=1 v.sFadeStart=80 v.sFadeEnd=100 v.sStrength=0.6 v.sAnisotropy=1 return v end function getRockSettings () local v = {} v.texture=detail55Texture v.detailScale=1 v.sFadeStart=80 v.sFadeEnd=100 v.sStrength=0.5 v.sAnisotropy=1 return v end function getMudSettings () local v = {} v.texture=detail35TTexture v.detailScale=2 v.sFadeStart=80 v.sFadeEnd=100 v.sStrength=0.6 v.sAnisotropy=1 return v end