khanat-opennel-code/code/nel/tools/3d/plugin_max/scripts/startup/nel_material.ms

2366 lines
79 KiB
Text

-- ********************
-- * Developper notes *
-- ********************
-- *
-- * - Increment major version when changing the parameters structure, comment your new attributes
-- * to tell they have been added since version x. Backup the old script file to keep old file format.
-- * - Increment minor version when changing the code or UI
-- * - Manage new field initialisation when changing the parameters structure in the update method
-- * - In your changes, keep in mind the discreet note:
-- * Parameter blocks that were per-instance cannot be made per-class and vice versa.
-- * Parameters cannot change type across redefinitions.
-- * Parameters cannot not move from one parameter block to another across redefinitions
-- *
-- ********************
-- *** Some constant
-- Blend mode
BlendOne = 1
BlendZero = 2
BlendSrcAlpha = 3
BlendInvSrcAlpha = 4
BlendSrcRGB = 5
BlendInvSrcRGB = 6
BlendDestAlpha = 7
BlendInvDestAlpha = 8
BlendDestRGB = 9
BlendInvDestRGB = 10
-- Stage operator
OptorReplace = 1
OptorModulate = 2
OptorAdd = 3
OptorAddSigned = 4
OptorBlend = 5
-- Stage source
SrcBlendTexture = 1
SrcBlendPrevious = 2
SrcBlendDiffuse = 3
SrcBlendConstant = 4
Src0Texture = 1
Src0Previous = 2
Src0Diffuse = 3
Src0Constant = 4
Src1Previous = 1
Src1Diffuse = 2
Src1Constant = 3
-- Stage source operand
OprdRGB = 1
OprdInvRGB = 2
OprdAlpha = 3
OprdInvAlpha = 4
-- Stage operand
OprandSrcRGB = 1
OprandInvSrcRGB = 2
OprandSrcAlpha = 3
OprandInvSrcAlpha = 4
-- Texture Shader
TextureShaderDisable = 1
-- Normal Shader
ShaderSingleTexture = 1
ShaderAddTwoTextures = 2
ShaderMulTwoTextures = 3
ShaderBlendTwoTextures = 4
ShaderBlendMask = 5
ShaderMixTwoTextures = 6
-- Shader Type
ShaderNormal = 1
ShaderBump = 2
ShaderUserColor = 3
ShaderLightmap = 4
ShaderSpecular = 5
ShaderWater = 6
ShaderPerPixelLighting = 7
ShaderPerPixelLightingNoSpec = 7
----------------------------------------------------------------------------------------------------------------
fn convertMaxBitmapToNelBitmap maxMap =
(
if classOf maxMap == NelBitmapTexture then
(
return maxMap -- no needs to change
)
if maxMap == undefined then
(
print "undefined map"
return undefined
)
print "converting bitmap"
nelMap = NelBitmapTexture()
base = nelMap.delegate
-- copy args
base.clipu = maxMap.clipu
base.clipv = maxMap.clipv
base.clipw = maxMap.clipw
base.cliph = maxMap.cliph
base.jitter = maxMap.jitter
base.useJitter = maxMap.useJitter
base.apply = maxMap.apply
base.cropPlace = maxMap.cropPlace
base.filtering = maxMap.filtering
base.monoOutput = maxMap.monoOutput
base.rgbOutput = maxMap.rgbOutput
base.alphaSource = maxMap.alphaSource
base.preMultAlpha = maxMap.preMultAlpha
base.bitmap = maxMap.bitmap
base.coords = maxMap.coords
base.output = maxMap.output
base.fileName = maxMap.fileName
base.startTime = maxMap.startTime
base.playBackRate = maxMap.playBackRate
base.endCondition = maxMap.endCondition
-- Duplicate the bitmap in the first bitmap slot
nelMap.bitmap1FileName = nelMap.bitmap.fileName
print "return nel map"
return nelMap
)
----------------------------------------------------------------------------------------------------------------
-- takes a material (max standard, max Multi/SubObject, nel), and transform each of its texture that are bitmap
-- to a NeL bitmap.
fn convertMaterialChangingBitmap destMat =
(
if (classOf destMat == NelMaterial) then -- is it a NelMaterial ?
(
print "converting nel material"
destMat.tTexture_1 = convertMaxBitmapToNelBitmap(destMat.tTexture_1)
destMat.tTexture_2 = convertMaxBitmapToNelBitmap(destMat.tTexture_2)
destMat.tTexture_3 = convertMaxBitmapToNelBitmap(destMat.tTexture_3)
destMat.tTexture_4 = convertMaxBitmapToNelBitmap(destMat.tTexture_4)
destMat.tTexture_5 = convertMaxBitmapToNelBitmap(destMat.tTexture_5)
destMat.tTexture_6 = convertMaxBitmapToNelBitmap(destMat.tTexture_6)
destMat.tTexture_7 = convertMaxBitmapToNelBitmap(destMat.tTexture_7)
destMat.tTexture_8 = convertMaxBitmapToNelBitmap(destMat.tTexture_8)
)
else if (classOf destMat == StandardMaterial) then
(
print "converting standard material"
for j = 1 to 12 do
(
destMat.maps[j] = convertMaxBitmapToNelBitmap(destMat.maps[j])
)
)
else if (classOf destMat == Multimaterial) then
(
-- performs this on each submaterial
for k = 1 to destMat.materialList.count do
(
if destMat.materialList[k] != undefined then
(
convertMaterialChangingBitmap destMat.materialList[k]
)
)
)
-- else no convertible material
)
----------------------------------------------------------------------------------------------------------------
-- This function helps to convert bitmap for an object from max Bitmap to nel BitmapTexture. This operate on all selected objects
fn convertMaxBitmapToNelBitmapForSelection =
(
for i = 1 to selection.count do
(
if (selection[i].material != undefined) then
(
convertMaterialChangingBitmap selection[i].material
)
)
)
----------------------------------------------------------------------------------------------------------------
-- a MacroScript That performs a call to convertMaxBitmapToNelBitmapForMesh
macroScript ConvertMaxBitmapToNelBitmapMacroScript category:"NEVRAX Tools" tooltip:"Convert all material of the selection so that they use Nel Bitmap instead of max ones"
(
convertMaxBitmapToNelBitmapForSelection()
)
----------------------------------------------------------------------------------------------------------------
-- Select a slot in a NeL bitmap
fn selectNelBitmap nelBitmap bitmapIndex =
(
if (classOf nelBitmap == NelBitmapTexture) then
(
print "selecting bitmap : " + bitmapIndex as string
local srcBitmapName
if bitmapIndex == 1 then ( srcBitmapName = nelBitmap.bitmap1FileName )
if bitmapIndex == 2 then ( srcBitmapName = nelBitmap.bitmap2FileName )
if bitmapIndex == 3 then ( srcBitmapName = nelBitmap.bitmap3FileName )
if bitmapIndex == 4 then ( srcBitmapName = nelBitmap.bitmap4FileName )
-- If not present takes the first bitmap
if srcBitmapName == "" then
(
srcBitmapName = nelBitmap.bitmap1FileName
)
if srcBitmapName == undefined then
(
srcBitmapName = ""
)
print "fileName = " + srcBitmapName
nelBitmap.bitmap.fileName = srcBitmapName
nelBitmap.currSelectedTextureSet = bitmapIndex
NelReloadTexture nelBitmap.bitmap
)
else
(
if nelBitmap != undefined then
(
print "selecting bitmap : not a NelBitmapTexture"
)
)
)
----------------------------------------------------------------------------------------------------------------
-- Select one bitmap in a nel MultiBitmap for the given material, and setup it as the current displayed bitmap
fn selectNelBitmapInMaterial destMat bitmapIndex =
(
-- we just takes the bitmap from the given bitmap or the bitmap from the slot 0 if it doesn't exist
if (classOf destMat == NelMaterial) then -- is it a NelMaterial ?
(
print "selecting textures in a NelMaterial"
selectNelBitmap destMat.tTexture_1 bitmapIndex
selectNelBitmap destMat.tTexture_2 bitmapIndex
selectNelBitmap destMat.tTexture_3 bitmapIndex
selectNelBitmap destMat.tTexture_4 bitmapIndex
selectNelBitmap destMat.tTexture_5 bitmapIndex
selectNelBitmap destMat.tTexture_6 bitmapIndex
selectNelBitmap destMat.tTexture_7 bitmapIndex
selectNelBitmap destMat.tTexture_8 bitmapIndex
)
else if (classOf destMat == StandardMaterial) then
(
print "selecting textures in a StandardMaterial"
for j = 1 to 12 do
(
selectNelBitmap destMat.maps[j] bitmapIndex
)
)
else if (classOf destMat == Multimaterial) then
(
print "selecting textures in a Multimaterial"
-- performs this on each submaterial
for k = 1 to destMat.materialList.count do
(
if destMat.materialList[k] != undefined then
(
selectNelBitmapInMaterial destMat.materialList[k] bitmapIndex
)
)
)
else
(
print "no convertible materials :" + (classOf destMat) as string
)
)
----------------------------------------------------------------------------------------------------------------
fn selectNelBitmapInSelection bitmapIndex =
(
for n = 1 to selection.count do
(
if selection[n].material != undefined then
(
selectNelBitmapInMaterial selection[n].material bitmapIndex
)
)
)
----------------------------------------------------------------------------------------------------------------
-- Macro scripts that performs the selection of a set of bitmaps
macroScript SelectNelBitmapSet1 category:"NEVRAX Tools" tooltip:"Select the first set of bitmap for the selected meshs"
(
selectNelBitmapInSelection 1
)
macroScript SelectNelBitmapSet2 category:"NEVRAX Tools" tooltip:"Select the second set of bitmap for the selected meshs"
(
selectNelBitmapInSelection 2
)
macroScript SelectNelBitmapSet3 category:"NEVRAX Tools" tooltip:"Select the third set of bitmap for the selected meshs"
(
selectNelBitmapInSelection 3
)
macroScript SelectNelBitmapSet4 category:"NEVRAX Tools" tooltip:"Select the fourth set of bitmap for the selected meshs"
(
selectNelBitmapInSelection 4
)
----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
-- Nel Material properties
plugin material NelMaterial
name:"NeL Material"
classID:#(0x64c75fec, 0x222b9eb9)
extends:standard
replaceUI:true
version:14.0
(
local loadShader
local globalUpdateUI
local updateTextureName
local updateToVersion4 = false
local updateToVersion14 = false
parameters nlbp rollout:nelBasicParameters
(
bTwoSided type:#boolean
cAmbient type:#color
cDiffuse type:#color
pOpacity type:#percent
cSpecular type:#color
pSpecularLevel type:#percent
pGlossiness type:#percent
cSelfIllumColor type:#color
pSelfIllumAmount type:#percent
bUseSelfIllumColor type:#boolean
)
parameters main rollout:NelParams
(
-- 3d part of the material
bLightMap type:#boolean default:false
bUnlighted type:#boolean default:false ui:cbUnlighted
bStainedGlassWindow type:#boolean default:false ui:cbStainedGlassWindow
bAlphaTest type:#boolean default:false ui:cbAlphaTest
bForceZWrite type:#boolean default:false ui:cbForceZWrite
bForceNoZWrite type:#boolean default:false ui:cbForceNoZWrite
bWater type:#boolean default:false
bWaterUseSceneEnvMapAbove type:#boolean default:false ui:cbWaterUseSceneEnvMapAbove
bWaterUseSceneEnvMapUnder type:#boolean default:false ui:cbWaterUseSceneEnvMapUnder
fBumpUScale type:#float default: 0.01 ui:cfBumpUScale
fBumpVScale type:#float default: 0.01 ui:cfBumpVScale
fBumpUSpeed type:#float default: 0.01 ui:cfBumpUSpeed
fBumpVSpeed type:#float default: 0.01 ui:cfBumpVSpeed
fDisplaceMapUScale type:#float default: 0.005 ui:cfDisplaceMapUScale
fDisplaceMapVScale type:#float default: 0.005 ui:cfDisplaceMapVScale
fDisplaceMapUSpeed type:#float default: 0.005 ui:cfDisplaceMapUSpeed
fDisplaceMapVSpeed type:#float default: 0.005 ui:cfDisplaceMapVSpeed
fWaterHeightFactor type:#float default: 1.0 ui:cfWaterHeightFactor
iWaterPoolID type:#integer default: 0 ui:ciWaterPoolID
-- new in version 7
bCalcWaterLightmap type:#boolean default:false ui:cbCalcWaterLightmap
-- new in version 10
bEnableWaterSplash type:#boolean default:true ui:cbEnableWaterSplash
-- New in version 3
bColorVertex type:#boolean default:false ui:cbColorVertex
bAlphaVertex type:#boolean default:false ui:cbAlphaVertex
iAlphaVertexChannel type:#integer default:0 ui:ciAlphaVertexChannel
-- New in version 4
bAlphaBlend type:#boolean default:false ui:cbAlphaBlend
iBlendSrcFunc type:#integer default:1
iBlendDestFunc type:#integer default:1
iShader type:#integer default:1
fZBias type:#float default:0 ui:cfZBias
iLightMapChannel type:#integer default:2 ui:ciLightMapChannel
iShaderType type:#integer default:1
bUserColor type:#boolean
bSpecular type:#boolean
bNormalShader type:#boolean
bPerPixelLightingShader type:#boolean
cUserColor type:#color default:[255,0,255] ui:cpUserColor
-- New in version 5
bExportTextureMatrix type:#boolean default:false ui:cbExportTextureMatrix
)
parameters textures rollout:NelTexture
(
bEnableSlot_1 type:#boolean default:false ui:cbEnableSlot_1
bEnableSlot_2 type:#boolean default:false ui:cbEnableSlot_2
bEnableSlot_3 type:#boolean default:false ui:cbEnableSlot_3
bEnableSlot_4 type:#boolean default:false ui:cbEnableSlot_4
bEnableSlot_5 type:#boolean default:false ui:cbEnableSlot_5
bEnableSlot_6 type:#boolean default:false ui:cbEnableSlot_6
bEnableSlot_7 type:#boolean default:false ui:cbEnableSlot_7
bEnableSlot_8 type:#boolean default:false ui:cbEnableSlot_8
bTexGen_1 type:#boolean default:false ui:cbTexGen_1
bTexGen_2 type:#boolean default:false ui:cbTexGen_2
bTexGen_3 type:#boolean default:false ui:cbTexGen_3
bTexGen_4 type:#boolean default:false ui:cbTexGen_4
bTexGen_5 type:#boolean default:false ui:cbTexGen_5
bTexGen_6 type:#boolean default:false ui:cbTexGen_6
bTexGen_7 type:#boolean default:false ui:cbTexGen_7
bTexGen_8 type:#boolean default:false ui:cbTexGen_8
tTexture_1 type:#texturemap ui:mbTexture_1
tTexture_2 type:#texturemap ui:mbTexture_2
tTexture_3 type:#texturemap ui:mbTexture_3
tTexture_4 type:#texturemap ui:mbTexture_4
tTexture_5 type:#texturemap ui:mbTexture_5
tTexture_6 type:#texturemap ui:mbTexture_6
tTexture_7 type:#texturemap ui:mbTexture_7
tTexture_8 type:#texturemap ui:mbTexture_8
)
parameters slot1 rollout:NelMultitextureSlot1
(
-- New in version 4
cConstant_1 type:#color default:[255,255,255] ui:cpConstant
iRgbOperation_1 type:#integer default:1
iRgbBlendSource_1 type:#integer default:1
iRgbArg0_1 type:#integer default:1
iRgbArg1_1 type:#integer default:1
iRgbArg2_1 type:#integer default:1
iRgbArg0Operand_1 type:#integer default:1
iRgbArg1Operand_1 type:#integer default:1
iRgbArg2Operand_1 type:#integer default:1
iAlphaOperation_1 type:#integer default:1
iAlphaBlendSource_1 type:#integer default:1
iAlphaArg0_1 type:#integer default:1
iAlphaArg1_1 type:#integer default:1
iAlphaArg2_1 type:#integer default:1
iAlphaArg0Operand_1 type:#integer default:3
iAlphaArg1Operand_1 type:#integer default:3
iAlphaArg2Operand_1 type:#integer default:3
iTextureShader_1 type:#integer default:1
iConstantAlpha_1 type:#integer default:255 ui:sdConstantAlpha
)
parameters slot2 rollout:NelMultitextureSlot2
(
-- New in version 4
cConstant_2 type:#color default:[255,255,255] ui:cpConstant
iRgbOperation_2 type:#integer default:1
iRgbBlendSource_2 type:#integer default:1
iRgbArg0_2 type:#integer default:1
iRgbArg1_2 type:#integer default:1
iRgbArg2_2 type:#integer default:1
iRgbArg0Operand_2 type:#integer default:1
iRgbArg1Operand_2 type:#integer default:1
iRgbArg2Operand_2 type:#integer default:1
iAlphaOperation_2 type:#integer default:1
iAlphaBlendSource_2 type:#integer default:1
iAlphaArg0_2 type:#integer default:1
iAlphaArg1_2 type:#integer default:1
iAlphaArg2_2 type:#integer default:1
iAlphaArg0Operand_2 type:#integer default:3
iAlphaArg1Operand_2 type:#integer default:3
iAlphaArg2Operand_2 type:#integer default:3
iTextureShader_2 type:#integer default:1
iConstantAlpha_2 type:#integer default:255 ui:sdConstantAlpha
)
parameters slot3 rollout:NelMultitextureSlot3
(
-- New in version 7
cConstant_3 type:#color default:[255,255,255] ui:cpConstant
iRgbOperation_3 type:#integer default:1
iRgbBlendSource_3 type:#integer default:1
iRgbArg0_3 type:#integer default:1
iRgbArg1_3 type:#integer default:1
iRgbArg2_3 type:#integer default:1
iRgbArg0Operand_3 type:#integer default:1
iRgbArg1Operand_3 type:#integer default:1
iRgbArg2Operand_3 type:#integer default:1
iAlphaOperation_3 type:#integer default:1
iAlphaBlendSource_3 type:#integer default:1
iAlphaArg0_3 type:#integer default:1
iAlphaArg1_3 type:#integer default:1
iAlphaArg2_3 type:#integer default:1
iAlphaArg0Operand_3 type:#integer default:3
iAlphaArg1Operand_3 type:#integer default:3
iAlphaArg2Operand_3 type:#integer default:3
iTextureShader_3 type:#integer default:1
iConstantAlpha_3 type:#integer default:255 ui:sdConstantAlpha
)
parameters slot4 rollout:NelMultitextureSlot4
(
-- New in version 7
cConstant_4 type:#color default:[255,255,255] ui:cpConstant
iRgbOperation_4 type:#integer default:1
iRgbBlendSource_4 type:#integer default:1
iRgbArg0_4 type:#integer default:1
iRgbArg1_4 type:#integer default:1
iRgbArg2_4 type:#integer default:1
iRgbArg0Operand_4 type:#integer default:1
iRgbArg1Operand_4 type:#integer default:1
iRgbArg2Operand_4 type:#integer default:1
iAlphaOperation_4 type:#integer default:1
iAlphaBlendSource_4 type:#integer default:1
iAlphaArg0_4 type:#integer default:1
iAlphaArg1_4 type:#integer default:1
iAlphaArg2_4 type:#integer default:1
iAlphaArg0Operand_4 type:#integer default:3
iAlphaArg1Operand_4 type:#integer default:3
iAlphaArg2Operand_4 type:#integer default:3
iTextureShader_4 type:#integer default:1
iConstantAlpha_4 type:#integer default:255 ui:sdConstantAlpha
)
parameters slot5
(
)
parameters slot6
(
)
rollout nelBasicParameters "NeL Basic Parameters" rolledUp:false
(
Label lblNlbpA "NeL Material" align:#center across:3
Label lblNlbpB "http://dev.ryzom.com/" align:#center
CheckBox cbTwoSided "2-Sided" checked:false align:#right
group "Standard Lighting"
(
-- Label lblNlbpslA "Diffuse is the color in light, ambient in the dark." align:#right
-- Label lblNlbpslB "Ambient and diffuse multiply with the textures and global sun." align:#right
ColorPicker cpAmbient "Ambient" color:[63,63,63] align:#left across:3
ColorPicker cpDiffuse "Diffuse" color:[127,127,127] align:#left
Spinner spOpacity "Opacity" range:[0,100,100] type:#integer scale:1 align:#left
)
group "Specular"
(
-- Label lblNlbpsA "Increase the specular level to see the specular color." align:#right
-- Label lblNlbpsB "Multiplies with sun. Glossiness changes the size of the specular." align:#right
ColorPicker cpSpecular "Specular" color:[255,255,255] align:#left across:3
Spinner spSpecularLevel "Level" range:[0,100,0] type:#integer scale:1 align:#left
Spinner spGlossiness "Glossiness"range:[0,80,10] type:#integer scale:1 align:#left
)
group "Self Illumination"
(
-- Label lblNlbpsiA "Set the self illumination by color or by amount." align:#right
ColorPicker cpSelfIllumColor "Self Illum"color:[0,0,0] align:#left across:3
Spinner spSelfIllumAmount "Self Illum" range:[0,100,0] type:#integer scale:1 align:#left
CheckBox cbUseSelfIllumColor "Use Color" checked:false align:#right
)
on cbTwoSided changed bval do
updateUI false
on cpAmbient changed cval do
updateUI false
on cpDiffuse changed cval do
updateUI false
on spOpacity changed pval do
updateUI false
on cpSpecular changed cval do
updateUI false
on spSpecularLevel changed pval do
updateUI false
on spGlossiness changed pval do
updateUI false
on cpSelfIllumColor changed cval do
updateUI false
on spSelfIllumAmount changed bval do
updateUI false
on cbUseSelfIllumColor changed bval do
updateUI false
Fn updateUI update =
(
if (version >= 14) then
(
if update == true then
(
cbTwoSided.checked = bTwoSided
cpAmbient.color = cAmbient
cpDiffuse.color = cDiffuse
spOpacity.value = pOpacity
cpSpecular.color = cSpecular
spSpecularLevel.value = pSpecularLevel
spGlossiness.value = pGlossiness
cpSelfIllumColor.color = cSelfIllumColor
spSelfIllumAmount.value = pSelfIllumAmount
cbUseSelfIllumColor.checked = bUseSelfIllumColor
spSelfIllumAmount.visible = not bUseSelfIllumColor
cpSelfIllumColor.visible = bUseSelfIllumColor
)
else
(
bTwoSided = cbTwoSided.checked
cAmbient = cpAmbient.color
cDiffuse = cpDiffuse.color
pOpacity = spOpacity.value
cSpecular = cpSpecular.color
pSpecularLevel = spSpecularLevel.value
pGlossiness = spGlossiness.value
cSelfIllumColor = cpSelfIllumColor.color
pSelfIllumAmount = spSelfIllumAmount.value
bUseSelfIllumColor = cbUseSelfIllumColor.checked
delegate.twoSided = bTwoSided
delegate.ambient = cAmbient
delegate.diffuse = cDiffuse
delegate.opacity = pOpacity
delegate.specular = cSpecular
delegate.specularLevel = pSpecularLevel
delegate.glossiness = pGlossiness
delegate.selfIllumColor = cSelfIllumColor
delegate.selfIllumAmount = pSelfIllumAmount
delegate.useSelfIllumColor = bUseSelfIllumColor
)
delegate.adTextureLock = false
delegate.adLock = false
delegate.dsLock = false
)
)
on nelBasicParameters open do
(
updateUI true
)
)
rollout NelParams "NeL Material" rolledUp:true
(
-- UI update timer
timer pWatch interval:450
local activeMaterial = undefined
dropdownlist dlShaderType "Shaders Type" items:#( "Normal (simple multitexture material)", "Not Implemented (do not use, bump material not implemented)",
"UserColor (display user color on texture inverse alpha)", "LightMap (material used for lightmapping)",
"Specular (material with specular reflection cubemap)", "Water (shiny water shader)",
"Per pixel lighting, require one texmap applied", "Per pixel lighting, no specular, require one texmap applied")
group "Light"
(
CheckBox cbUnlighted "Unlighted"
Label lLightMapChannel "Lightmap Texture Channel" align:#left across:2
Spinner ciLightMapChannel "" range:[0,99,0] type:#integer scale:1 align:#left width:50
CheckBox cbStainedGlassWindow "Lightmap stained glass window"
CheckBox cbColorVertex "Color Vertex"
)
group "Alpha"
(
CheckBox cbAlphaBlend "Alpha Blend"
Button btSetBlend "Setup Blend" align:#left across:3
Button btSetAdd "Setup Additive" align:#left
Button btSetAlphaAdd "Setup Alpha Additive" align:#left
dropdownlist dlBlendSrcFunc "Blend Source" items:#( "One", "Zero", "Source Alpha", "Inverse Source Alpha", "Source RGBA", "Inverse Source RGB", "Destination Alpha", "Inverse Destination Alpha", "Destination RGB", "Inverse Destination RGB" ) across:2
dropdownlist dlBlendDestFunc "Blend Destination" items:#( "One", "Zero", "Source Alpha", "Inverse Source Alpha", "Source RGBA", "Inverse Source RGB", "Destination Alpha", "Inverse Destination Alpha", "Destination RGB", "Inverse Destination RGB" )
CheckBox cbAlphaTest "Alpha Test"
CheckBox cbAlphaVertex "Alpha Vertex" across:2
Spinner ciAlphaVertexChannel "Alpha Vertex Channel" range:[0,99,0] type:#integer scale:1 align:#right
)
group "Z buffer"
(
Label cfZBiasLabel "ZBias :" align:#left across:2
Spinner cfZBias "" range:[-100,100,0] type:#float scale:0.001 align:#left width:70
CheckBox cbForceZWrite "Force ZWrite" across:2
CheckBox cbForceNoZWrite "Force No ZWrite"
)
group "Water"
(
Label lbWaterPoolID "Water pool ID" align:#left across:2
Spinner ciWaterPoolID "" range:[0,3,1] type:#integer align:#left width:70
Label lbWaterHeightFactor "Water height factor" align:#left across:2
Spinner cfWaterHeightFactor "" range:[0,1000,1] type:#integer align:#left width:70
CheckBox cbWaterUseSceneEnvMapAbove "Use scene envmap above water" across:2
CheckBox cbWaterUseSceneEnvMapUnder "under water" align:#right
Label cfBumpScaleLabel "BumpMap Scale" align:#left across:3
Spinner cfBumpUScale "U" range:[-10,10,0.01] type:#float scale:0.001 align:#right width:70
Spinner cfBumpVScale "V" range:[-10,10,0.01] type:#float scale:0.001 align:#right width:70
Label cfBumpSpeedLabel "BumpMap Speed" align:#left across:3
Spinner cfBumpUSpeed "U" range:[-10,10,0.01] type:#float scale:0.001 align:#right width:70
Spinner cfBumpVSpeed "V" range:[-10,10,0.01] type:#float scale:0.001 align:#right width:70
Label lbDisplaceMapScale "DisplaceMap Scale" align:#left across:3
Spinner cfDisplaceMapUScale "U" range:[-10,10,0.005] type:#float scale:0.001 align:#right width:70
Spinner cfDisplaceMapVScale "V" range:[-10,10,0.005] type:#float scale:0.001 align:#right width:70
Label lbDisplaceMapSpeed "DisplaceMap Speed" align:#left across:3
Spinner cfDisplaceMapUSpeed "U" range:[-10,10,0.01] type:#float scale:0.001 align:#right width:70
Spinner cfDisplaceMapVSpeed "V" range:[-10,10,0.01] type:#float scale:0.001 align:#right width:70
CheckBox cbCalcWaterLightmap "Compute water lightmap" across:2
CheckBox cbEnableWaterSplash "Enable water splash"
)
group "Extended"
(
dropdownlist dlVertexProgram "Vertex Program" items:#( "Disable" ) across:2
ColorPicker cpUserColor "User Color" color:[255,0,0] align:#right height:40
CheckBox cbExportTextureMatrix "Export texture matrix"
)
Fn updateUI update =
(
if (version >= 4) then
(
if update == true then
(
dlBlendSrcFunc.selection = iBlendSrcFunc
dlBlendDestFunc.selection = iBlendDestFunc
dlShaderType.selection = iShaderType
)
else
(
iBlendSrcFunc = dlBlendSrcFunc.selection
iBlendDestFunc = dlBlendDestFunc.selection
iShaderType = dlShaderType.selection
)
-- Setup boolean value
bNormalShader = false
bPerPixelLightingShader = false;
bUserColor = false
bLightmap = false
bSpecular = false
bWater = false
if iShaderType == ShaderNormal then
bNormalShader = true
else if iShaderType == ShaderPerPixelLighting or iShaderType == ShaderPerPixelLightingNoSpec then
bPerPixelLightingShader = true;
else if iShaderType == ShaderUserColor then
bUserColor = true
else if iShaderType == ShaderLightmap then
bLightmap = true
else if iShaderType == ShaderSpecular then
bSpecular = true
else if iShaderType == ShaderWater then
bWater = true
dlVertexProgram.enabled = (not bWater) and (not bLightmap)
cbUnlighted.enabled = (not bWater) and (not bLightmap)
lLightMapChannel.enabled = (not bWater) and bLightmap
ciLightMapChannel.enabled = (not bWater) and bLightmap
cbStainedGlassWindow.enabled = not bWater
-- Yoyo: allow alphaBlend when Lightmap is enabled, but Only std blend is possible, without alphaVertex etc...
cbAlphaBlend.enabled = (not bWater) and (not bAlphaTest)
btSetBlend.enabled = ((not bWater) and (not bLightmap)) and bAlphaBlend and (not bAlphaTest)
btSetAdd.enabled = ((not bWater) and (not bLightmap)) and bAlphaBlend and (not bAlphaTest)
btSetAlphaAdd.enabled = ((not bWater) and (not bLightmap)) and bAlphaBlend and (not bAlphaTest)
dlBlendSrcFunc.enabled = ((not bWater) and (not bLightmap)) and bAlphaBlend and (not bAlphaTest)
dlBlendDestFunc.enabled = ((not bWater) and (not bLightmap)) and bAlphaBlend and (not bAlphaTest)
cbAlphaTest.enabled = (not bWater) and (not bAlphaBlend)
-- Yoyo: allow ZWrite modif when lightmap is used
cbForceZWrite.enabled = (not bWater) and bAlphaBlend
cbForceNoZWrite.enabled = (not bWater) and (not bAlphaBlend)
cbAlphaVertex.enabled = (not bWater) and (not bLightmap) and (not bLightMap)
ciAlphaVertexChannel.enabled = (not bWater) and bAlphaVertex and (not bLightMap)
cbColorVertex.enabled = not bWater
cfBumpUScale.enabled = bWater and (not bLightMap)
cfBumpVScale.enabled = bWater and (not bLightMap)
cfBumpUSpeed.enabled = bWater and (not bLightMap)
cfBumpVSpeed.enabled = bWater and (not bLightMap)
cfDisplaceMapUScale.enabled = bWater and (not bLightMap)
cfDisplaceMapVScale.enabled = bWater and (not bLightMap)
cfDisplaceMapUSpeed.enabled = bWater and (not bLightMap)
cfDisplaceMapVSpeed.enabled = bWater and (not bLightMap)
ciWaterPoolID.enabled = bWater and (not bLightMap)
cfWaterHeightFactor.enabled = bWater and (not bLightMap)
if (bWater == true) then
(
cbUnlighted.checked = false
cbStainedGlassWindow.checked = false
cbAlphaTest.checked = false
cbForceZWrite.checked = false
cbForceNoZWrite.checked = false
)
)
)
on NelParams reload do
(
)
on NelParams open do
(
updateUI true
)
on NelParams close do
(
)
-- Update ui
on dlShaderType selected newState do
(
globalUpdateUI false
)
on cbUnlighted changed bNewState do
(
updateUI false
)
on cbAlphaBlend changed bNewState do
(
if bAlphaBlend == true then
bAlphaTest = false
updateUI false
)
on cbAlphaTest changed bNewState do
(
if bAlphaTest == true then
bAlphaBlend = false
updateUI false
)
on cbAlphaVertex changed bNewState do
(
updateUI false
)
on cbAlphaVertex changed bNewState do
(
updateUI false
)
on btSetBlend pressed do
(
dlBlendSrcFunc.selection = 3
dlBlendDestFunc.selection = 4
updateUI false
)
on btSetAdd pressed do
(
dlBlendSrcFunc.selection = 1
dlBlendDestFunc.selection = 1
updateUI false
)
on btSetAlphaAdd pressed do
(
dlBlendSrcFunc.selection = 3
dlBlendDestFunc.selection = 1
updateUI false
)
on pWatch tick do
(
if (activeMaterial != this) then
(
activeMaterial = this
globalUpdateUI true
)
)
)
rollout NelTexture "NeL Textures" rolledUp:true
(
group "Textures"
(
Label lblNttA "Texture format must be TGA or DDS for ingame usage." align:#right
Label lblNttBl "Enabled" align:#left across:4
Label lblNttBcA "" align:#center
Label lblNttBcB "Texture " align:#center
Label lblNttBr "EnvMap" align:#right
CheckBox cbEnableSlot_1 "Texture 1...................." width:110 align:#left across:3
MapButton mbTexture_1 "" toolTips:"Select the texture 1" width:160 align:#left
CheckBox cbTexGen_1 "" align:#right
CheckBox cbEnableSlot_2 "Texture 2...................." width:110 align:#left across:3
MapButton mbTexture_2 "" toolTips:"Select the texture 2" width:160 align:#left
CheckBox cbTexGen_2 "" align:#right
CheckBox cbEnableSlot_3 "Texture 3...................." width:110 align:#left across:3
MapButton mbTexture_3 "" toolTips:"Select the texture 3" width:160 align:#left
CheckBox cbTexGen_3 "" align:#right
CheckBox cbEnableSlot_4 "Texture 4...................." width:110 align:#left across:3
MapButton mbTexture_4 "" toolTips:"Select the texture 4" width:160 align:#left
CheckBox cbTexGen_4 "" align:#right
CheckBox cbEnableSlot_5 "Texture 5...................." width:110 align:#left across:3
MapButton mbTexture_5 "" toolTips:"Select the texture 5" width:160 align:#left
CheckBox cbTexGen_5 "" align:#right
CheckBox cbEnableSlot_6 "Texture 6...................." width:110 align:#left across:3
MapButton mbTexture_6 "" toolTips:"Select the texture 6" width:160 align:#left
CheckBox cbTexGen_6 "" align:#right
CheckBox cbEnableSlot_7 "Texture 7...................." width:110 align:#left across:3
MapButton mbTexture_7 "" toolTips:"Select the texture 7" width:160 align:#left
CheckBox cbTexGen_7 "" align:#right
CheckBox cbEnableSlot_8 "Texture 8...................." width:110 align:#left across:3
MapButton mbTexture_8 "" toolTips:"Select the texture 8" width:160 align:#left
CheckBox cbTexGen_8 "" align:#right
)
group "Setup Stage"
(
Label lblNtssA "Automatic configuration of the texture slots with simple material." align:#right
dropdownlist dlShader "" items:#( "Single Texture (RGBA1) (A1)", "Addition Two Textures (RGB1+RGB2) (A2)", "Multiply Two Textures (RGB1*RGB2) (A2)", "Blend Two Textures (RGB1*(1-A1)+RGB2*A1) (A2)", "Blend Texture (RGB1)(A2)", "Mix Two Textures (RGB1*0.5+RGB2*0.5) (A1*0.5+A2*0.5)" )
Button btLoadShader "Setup Texture Slots" align:#left
)
fn updateUI update =
(
if (version >= 4) then
(
cbEnableSlot_1.enabled = true
cbEnableSlot_2.enabled = (not bLightmap) and (not bPerPixelLightingShader)
cbEnableSlot_3.enabled = (not bLightmap) and (not bSpecular) and (not bUserColor) and (not bPerPixelLightingShader)
cbEnableSlot_4.enabled = (not bLightmap) and (not bSpecular) and (not bUserColor) and (not bPerPixelLightingShader)
cbEnableSlot_5.enabled = (not bLightmap) and (not bSpecular) and (not bUserColor) and (not bNormalShader) and (not bPerPixelLightingShader)
cbEnableSlot_6.enabled = (not bLightmap) and (not bSpecular) and (not bUserColor) and (not bNormalShader) and (not bPerPixelLightingShader)
cbEnableSlot_7.enabled = (not bLightmap) and (not bSpecular) and (not bUserColor) and (not bNormalShader) and (not bPerPixelLightingShader)
cbEnableSlot_8.enabled = (not bWater) and (not bLightmap) and (not bSpecular) and (not bUserColor) and (not bNormalShader) and (not bPerPixelLightingShader)
mbTexture_1.enabled = bEnableSlot_1
mbTexture_2.enabled = bEnableSlot_2 and (not bLightmap) and (not bUserColor) and (not bPerPixelLightingShader)
mbTexture_3.enabled = bEnableSlot_3 and (not bLightmap) and (not bSpecular) and (not bUserColor) and (not bPerPixelLightingShader)
mbTexture_4.enabled = bEnableSlot_4 and (not bLightmap) and (not bSpecular) and (not bUserColor) and (not bPerPixelLightingShader)
mbTexture_5.enabled = bEnableSlot_5 and (not bLightmap) and (not bSpecular) and (not bUserColor) and (not bNormalShader) and (not bPerPixelLightingShader)
mbTexture_6.enabled = bEnableSlot_6 and (not bLightmap) and (not bSpecular) and (not bUserColor) and (not bNormalShader) and (not bPerPixelLightingShader)
mbTexture_7.enabled = bEnableSlot_7 and (not bLightmap) and (not bSpecular) and (not bUserColor) and (not bNormalShader) and (not bPerPixelLightingShader)
mbTexture_8.enabled = bEnableSlot_8 and (not bWater) and (not bLightmap) and (not bSpecular) and (not bUserColor) and (not bNormalShader) and (not bPerPixelLightingShader)
cbTexGen_1.enabled = bNormalShader and bEnableSlot_1
cbTexGen_2.enabled = bNormalShader and bEnableSlot_2 and (not bLightmap) and (not bUserColor) and (not bPerPixelLightingShader)
cbTexGen_3.enabled = bNormalShader and bEnableSlot_3 and (not bLightmap) and (not bSpecular) and (not bUserColor) and (not bPerPixelLightingShader)
cbTexGen_4.enabled = bNormalShader and bEnableSlot_4 and (not bLightmap) and (not bSpecular) and (not bUserColor) and (not bPerPixelLightingShader)
cbTexGen_5.enabled = bNormalShader and bEnableSlot_5 and (not bLightmap) and (not bSpecular) and (not bUserColor) and (not bNormalShader) and (not bPerPixelLightingShader)
cbTexGen_6.enabled = bNormalShader and bEnableSlot_6 and (not bLightmap) and (not bSpecular) and (not bUserColor) and (not bNormalShader) and (not bPerPixelLightingShader)
cbTexGen_7.enabled = bNormalShader and bEnableSlot_7 and (not bLightmap) and (not bSpecular) and (not bUserColor) and (not bNormalShader) and (not bPerPixelLightingShader)
cbTexGen_8.enabled = bNormalShader and bEnableSlot_8 and (not bLightmap) and (not bSpecular) and (not bUserColor) and (not bNormalShader) and (not bPerPixelLightingShader)
btLoadShader.enabled = bNormalShader
dlShader.enabled = bNormalShader
if bWater == true then
(
cbEnableSlot_1.text = "EnvDay......................."
cbEnableSlot_2.text = "EnvNight (opt)..............."
cbEnableSlot_3.text = "EnvDayUnder (opt)............"
cbEnableSlot_4.text = "EnvNightUnder (opt).........."
cbEnableSlot_5.text = "Bump........................."
cbEnableSlot_6.text = "Displace....................."
cbEnableSlot_7.text = "ColorAlpha (opt)............."
cbEnableSlot_8.text = "Unused......................."
)
else
(
if bLightmap == true then
(
cbEnableSlot_1.text = "Diffuse......................"
cbEnableSlot_2.text = "Unused......................."
cbEnableSlot_3.text = "Unused......................."
cbEnableSlot_4.text = "Unused......................."
cbEnableSlot_5.text = "Unused......................."
cbEnableSlot_6.text = "Unused......................."
cbEnableSlot_7.text = "Unused......................."
cbEnableSlot_8.text = "Unused......................."
)
else
(
if bUserColor == true then
(
cbEnableSlot_1.text = "Diffuse......................"
cbEnableSlot_2.text = "UsercolorMask................"
cbEnableSlot_3.text = "Unused......................."
cbEnableSlot_4.text = "Unused......................."
cbEnableSlot_5.text = "Unused......................."
cbEnableSlot_6.text = "Unused......................."
cbEnableSlot_7.text = "Unused......................."
cbEnableSlot_8.text = "Unused......................."
)
else
(
if bSpecular == true then
(
cbEnableSlot_1.text = "Diffuse......................"
cbEnableSlot_2.text = "SpecularMap.................."
cbEnableSlot_3.text = "Unused......................."
cbEnableSlot_4.text = "Unused......................."
cbEnableSlot_5.text = "Unused......................."
cbEnableSlot_6.text = "Unused......................."
cbEnableSlot_7.text = "Unused......................."
cbEnableSlot_8.text = "Unused......................."
)
else
(
cbEnableSlot_1.text = "Texture 1...................."
cbEnableSlot_2.text = "Texture 2...................."
cbEnableSlot_3.text = "Texture 3...................."
cbEnableSlot_4.text = "Texture 4...................."
cbEnableSlot_5.text = "Texture 5...................."
cbEnableSlot_6.text = "Texture 6...................."
cbEnableSlot_7.text = "Texture 7...................."
cbEnableSlot_8.text = "Texture 8...................."
)
)
)
)
if (update == true) then
(
dlShader.selection = iShader
)
else
(
iShader = dlShader.selection
)
-- Update texture name
updateTextureName ()
)
)
on NelTexture open do
(
updateUI false
)
on NelTexture close do
(
)
on cbEnableSlot_1 changed newState do
(
globalUpdateUI false
)
on cbEnableSlot_2 changed newState do
(
globalUpdateUI false
)
on cbEnableSlot_3 changed newState do
(
globalUpdateUI false
)
on cbEnableSlot_4 changed newState do
(
globalUpdateUI false
)
on cbEnableSlot_5 changed newState do
(
globalUpdateUI false
)
on cbEnableSlot_6 changed newState do
(
globalUpdateUI false
)
on cbEnableSlot_7 changed newState do
(
globalUpdateUI false
)
on cbEnableSlot_8 changed newState do
(
globalUpdateUI false
)
on dlShader selected newState do
(
updateUI false
)
on btLoadShader pressed do
(
loadShader dlShader.selection
)
)
rollout NelMultitextureSlot1 "NeL Slot 1" rolledUp:true
(
group "RGB"
(
dropdownlist dlRgbOperation "Operation" items:#( "Arg0", "Arg0*Arg1", "Arg0+Arg1", "Arg0+Arg1-0.5", "Alpha Blend", "Arg0*Arg1+Arg2" ) across:2
dropdownlist dlRgbBlendSource "Blend Source" items:#( "Texture", "Previous", "Diffuse", "Constant" )
dropdownlist dlRgbArg0 "Arg0" items:#( "Texture", "Previous", "Diffuse", "Constant" ) across:6
dropdownlist dlRgbArg0Operand "Oper0" items:#( "RGB", "Inv RGB", "Alpha", "Inv Alpha" )
dropdownlist dlRgbArg1 "Arg1" items:#( "Previous", "Diffuse", "Constant", "Texture" )
dropdownlist dlRgbArg1Operand "Oper1 Operand" items:#( "RGB", "Inv RGB", "Alpha", "Inv Alpha" )
dropdownlist dlRgbArg2 "Arg2" items:#( "Previous", "Diffuse", "Constant", "Texture" )
dropdownlist dlRgbArg2Operand "Oper2" items:#( "RGB", "Inv RGB", "Alpha", "Inv Alpha" )
)
group "Alpha"
(
dropdownlist dlAlphaOperation "Operation" items:#( "Arg0", "Arg0*Arg1", "Arg0+Arg1", "Arg0+Arg1-0.5", "Alpha Blend", "Arg0*Arg1+Arg2" ) across:2
dropdownlist dlAlphaBlendSource "Blend Source" items:#( "Texture", "Previous", "Diffuse", "Constant" )
dropdownlist dlAlphaArg0 "Arg0" items:#( "Texture", "Previous", "Diffuse", "Constant", "Texture" ) across:6
dropdownlist dlAlphaArg0Operand "Oper0" items:#( "RGB", "Inv RGB", "Alpha", "Inv Alpha" )
dropdownlist dlAlphaArg1 "Arg1" items:#( "Previous", "Diffuse", "Constant", "Texture" )
dropdownlist dlAlphaArg1Operand "Oper1" items:#( "RGB", "Inv RGB", "Alpha", "Inv Alpha" )
dropdownlist dlAlphaArg2 "Arg2" items:#( "Previous", "Diffuse", "Constant", "Texture" )
dropdownlist dlAlphaArg2Operand "Oper2" items:#( "RGB", "Inv RGB", "Alpha", "Inv Alpha" )
)
group "Extended"
(
dropdownlist dlTextureShader "Texture Shader" items:#( "Disable", "TextureOff", "FetchTexture", "PassThrough", "CullFragment", "OffsetTexture", "OffsetTextureScale", "DependentARTexture", "DependentGBTexture", "DP3", "DP3Texture2D", "DP3CubeMap", "DP3ReflectCubeMap", "DP3ConstEyeReflectCubeMap", "DP3DiffuseCubeMap", "DP3DepthReplace" ) width:100 across:2
ColorPicker cpConstant "Constant Color" align:#right height:40
Label ldConstantAlpha "Constant Alpha" align:#left across:2
Spinner sdConstantAlpha "" range:[0,255,255] type:#integer scale:1 align:#left width:50
)
fn updateUI update =
(
if (version >= 4) then
(
-- update droplist
if update == true then
(
dlRgbOperation.selection = iRgbOperation_1
dlRgbBlendSource.selection = iRgbBlendSource_1
dlRgbArg0.selection = iRgbArg0_1
dlRgbArg1.selection = iRgbArg1_1
dlRgbArg2.selection = iRgbArg2_1
dlRgbArg0Operand.selection = iRgbArg0Operand_1
dlRgbArg1Operand.selection = iRgbArg1Operand_1
dlRgbArg2Operand.selection = iRgbArg2Operand_1
dlAlphaOperation.selection = iAlphaOperation_1
dlAlphaBlendSource.selection = iAlphaBlendSource_1
dlAlphaArg0.selection = iAlphaArg0_1
dlAlphaArg1.selection = iAlphaArg1_1
dlAlphaArg2.selection = iAlphaArg2_1
dlAlphaArg0Operand.selection = iAlphaArg0Operand_1
dlAlphaArg1Operand.selection = iAlphaArg1Operand_1
dlAlphaArg2Operand.selection = iAlphaArg2Operand_1
dlTextureShader.selection = iTextureShader_1
)
else
(
iRgbOperation_1 = dlRgbOperation.selection
iRgbBlendSource_1 = dlRgbBlendSource.selection
iRgbArg0_1 = dlRgbArg0.selection
iRgbArg1_1 = dlRgbArg1.selection
iRgbArg2_1 = dlRgbArg2.selection
iRgbArg0Operand_1 = dlRgbArg0Operand.selection
iRgbArg1Operand_1 = dlRgbArg1Operand.selection
iRgbArg2Operand_1 = dlRgbArg2Operand.selection
iAlphaOperation_1 = dlAlphaOperation.selection
iAlphaBlendSource_1 = dlAlphaBlendSource.selection
iAlphaArg0_1 = dlAlphaArg0.selection
iAlphaArg1_1 = dlAlphaArg1.selection
iAlphaArg2_1 = dlAlphaArg2.selection
iAlphaArg0Operand_1 = dlAlphaArg0Operand.selection
iAlphaArg1Operand_1 = dlAlphaArg1Operand.selection
iAlphaArg2Operand_1 = dlAlphaArg2Operand.selection
iTextureShader_1 = dlTextureShader.selection
)
cpConstant.enabled = bEnableSlot_1 and bNormalShader
dlRgbOperation.enabled = bEnableSlot_1 and bNormalShader
dlRgbBlendSource.enabled = (bEnableSlot_1 == true) and (iRgbOperation_1 == 5) and bNormalShader
dlRgbArg0.enabled = bEnableSlot_1 and bNormalShader
dlRgbArg1.enabled = bEnableSlot_1 and bNormalShader
dlRgbArg2.enabled = bEnableSlot_1 and bNormalShader and (iRgbOperation_1 == 6)
dlRgbArg0Operand.enabled = bEnableSlot_1 and bNormalShader
dlRgbArg1Operand.enabled = bEnableSlot_1 and bNormalShader
dlRgbArg2Operand.enabled = dlRgbArg2.enabled
dlAlphaOperation.enabled = bEnableSlot_1 and bNormalShader
dlAlphaBlendSource.enabled = (bEnableSlot_1 == true) and (iAlphaOperation_1 == 5) and bNormalShader
dlAlphaArg0.enabled = bEnableSlot_1 and bNormalShader
dlAlphaArg1.enabled = bEnableSlot_1 and bNormalShader
dlAlphaArg2.enabled = bEnableSlot_1 and bNormalShader and (iAlphaOperation_1 == 6)
dlAlphaArg0Operand.enabled = bEnableSlot_1 and bNormalShader
dlAlphaArg1Operand.enabled = bEnableSlot_1 and bNormalShader
dlAlphaArg2Operand.enabled = dlAlphaArg2.enabled
dlTextureShader.enabled = bEnableSlot_1 and bNormalShader
sdConstantAlpha.enabled = bEnableSlot_1 and bNormalShader
)
)
on NelMultitextureSlot1 open do
(
updateUI true
)
on dlRgbOperation selected newState do
(
updateUI false
)
on dlAlphaOperation selected newState do
(
updateUI false
)
on dlRgbArg0Operand selected newState do
(
updateUI false
)
on dlRgbArg1Operand selected newState do
(
updateUI false
)
on dlRgbArg2Operand selected newState do
(
updateUI false
)
on dlAlphaArg0Operand selected newState do
(
updateUI false
)
on dlAlphaArg1Operand selected newState do
(
updateUI false
)
on dlAlphaArg2Operand selected newState do
(
updateUI false
)
on dlMappingCoordinates selected newState do
(
updateUI false
)
on dlTextureShader selected newState do
(
updateUI false
)
on dlRgbBlendSource selected newState do
(
updateUI false
)
on dlRgbArg0 selected newState do
(
updateUI false
)
on dlRgbArg1 selected newState do
(
updateUI false
)
on dlRgbArg2 selected newState do
(
updateUI false
)
on dlAlphaBlendSource selected newState do
(
updateUI false
)
on dlAlphaArg0 selected newState do
(
updateUI false
)
on dlAlphaArg1 selected newState do
(
updateUI false
)
on dlAlphaArg2 selected newState do
(
updateUI false
)
)
rollout NelMultitextureSlot2 "NeL Slot 2" rolledUp:true
(
group "RGB"
(
dropdownlist dlRgbOperation "Operation" items:#( "Arg0", "Arg0*Arg1", "Arg0+Arg1", "Arg0+Arg1-0.5", "Alpha Blend", "Arg0*Arg1+Arg2" ) across:2
dropdownlist dlRgbBlendSource "Blend Source" items:#( "Texture", "Previous", "Diffuse", "Constant" )
dropdownlist dlRgbArg0 "Arg0" items:#( "Texture", "Previous", "Diffuse", "Constant", "Texture" ) across:6
dropdownlist dlRgbArg0Operand "Oper0" items:#( "RGB", "Inv RGB", "Alpha", "Inv Alpha" )
dropdownlist dlRgbArg1 "Arg1" items:#( "Previous", "Diffuse", "Constant", "Texture" )
dropdownlist dlRgbArg1Operand "Oper1" items:#( "RGB", "Inv RGB", "Alpha", "Inv Alpha" )
dropdownlist dlRgbArg2 "Arg2" items:#( "Previous", "Diffuse", "Constant", "Texture" )
dropdownlist dlRgbArg2Operand "Oper2" items:#( "RGB", "Inv RGB", "Alpha", "Inv Alpha" )
)
group "Alpha"
(
dropdownlist dlAlphaOperation "Operation" items:#( "Arg0", "Arg0*Arg1", "Arg0+Arg1", "Arg0+Arg1-0.5", "Alpha Blend", "Arg0*Arg1+Arg2" ) across:2
dropdownlist dlAlphaBlendSource "Blend Source" items:#( "Texture", "Previous", "Diffuse", "Constant" )
dropdownlist dlAlphaArg0 "Arg0" items:#( "Texture", "Previous", "Diffuse", "Constant" ) across:6
dropdownlist dlAlphaArg0Operand "Oper0" items:#( "RGB", "Inv RGB", "Alpha", "Inv Alpha" )
dropdownlist dlAlphaArg1 "Arg1" items:#( "Previous", "Diffuse", "Constant", "Texture" )
dropdownlist dlAlphaArg1Operand "Oper1" items:#( "RGB", "Inv RGB", "Alpha", "Inv Alpha" )
dropdownlist dlAlphaArg2 "Arg2" items:#( "Previous", "Diffuse", "Constant", "Texture" )
dropdownlist dlAlphaArg2Operand "Oper2" items:#( "RGB", "Inv RGB", "Alpha", "Inv Alpha" )
)
group "Extended"
(
dropdownlist dlTextureShader "Texture Shader" items:#( "Disable", "TextureOff", "FetchTexture", "PassThrough", "CullFragment", "OffsetTexture", "OffsetTextureScale", "DependentARTexture", "DependentGBTexture", "DP3", "DP3Texture2D", "DP3CubeMap", "DP3ReflectCubeMap", "DP3ConstEyeReflectCubeMap", "DP3DiffuseCubeMap", "DP3DepthReplace" ) width:100 across:2
ColorPicker cpConstant "Constant Color" align:#right height:40
Label ldConstantAlpha "Constant Alpha" align:#left across:2
Spinner sdConstantAlpha "" range:[0,255,255] type:#integer scale:1 align:#left width:50
)
fn updateUI update =
(
if (version >= 4) then
(
-- update droplist
if update == true then
(
dlRgbOperation.selection = iRgbOperation_2
dlRgbBlendSource.selection = iRgbBlendSource_2
dlRgbArg0.selection = iRgbArg0_2
dlRgbArg1.selection = iRgbArg1_2
dlRgbArg2.selection = iRgbArg2_2
dlRgbArg0Operand.selection = iRgbArg0Operand_2
dlRgbArg1Operand.selection = iRgbArg1Operand_2
dlRgbArg2Operand.selection = iRgbArg2Operand_2
dlAlphaOperation.selection = iAlphaOperation_2
dlAlphaBlendSource.selection = iAlphaBlendSource_2
dlAlphaArg0.selection = iAlphaArg0_2
dlAlphaArg1.selection = iAlphaArg1_2
dlAlphaArg2.selection = iAlphaArg2_2
dlAlphaArg0Operand.selection = iAlphaArg0Operand_2
dlAlphaArg1Operand.selection = iAlphaArg1Operand_2
dlAlphaArg2Operand.selection = iAlphaArg2Operand_2
dlTextureShader.selection = iTextureShader_2
)
else
(
iRgbOperation_2 = dlRgbOperation.selection
iRgbBlendSource_2 = dlRgbBlendSource.selection
iRgbArg0_2 = dlRgbArg0.selection
iRgbArg1_2 = dlRgbArg1.selection
iRgbArg2_2 = dlRgbArg2.selection
iRgbArg0Operand_2 = dlRgbArg0Operand.selection
iRgbArg1Operand_2 = dlRgbArg1Operand.selection
iRgbArg2Operand_2 = dlRgbArg2Operand.selection
iAlphaOperation_2 = dlAlphaOperation.selection
iAlphaBlendSource_2 = dlAlphaBlendSource.selection
iAlphaArg0_2 = dlAlphaArg0.selection
iAlphaArg1_2 = dlAlphaArg1.selection
iAlphaArg2_2 = dlAlphaArg2.selection
iAlphaArg0Operand_2 = dlAlphaArg0Operand.selection
iAlphaArg1Operand_2 = dlAlphaArg1Operand.selection
iAlphaArg2Operand_2 = dlAlphaArg2Operand.selection
iTextureShader_2 = dlTextureShader.selection
)
cpConstant.enabled = bEnableSlot_2 and bNormalShader
dlRgbOperation.enabled = bEnableSlot_2 and bNormalShader
dlRgbBlendSource.enabled = (bEnableSlot_2 == true) and (iRgbOperation_2 == 5) and bNormalShader
dlRgbArg0.enabled = bEnableSlot_2 and bNormalShader
dlRgbArg1.enabled = bEnableSlot_2 and bNormalShader
dlRgbArg2.enabled = bEnableSlot_2 and bNormalShader and (iRgbOperation_2 == 6)
dlRgbArg0Operand.enabled = bEnableSlot_2 and bNormalShader
dlRgbArg1Operand.enabled = bEnableSlot_2 and bNormalShader
dlRgbArg2Operand.enabled = dlRgbArg2.enabled
dlAlphaOperation.enabled = bEnableSlot_2 and bNormalShader
dlAlphaBlendSource.enabled = (bEnableSlot_2 == true) and (iAlphaOperation_2 == 5) and bNormalShader
dlAlphaArg0.enabled = bEnableSlot_2 and bNormalShader
dlAlphaArg1.enabled = bEnableSlot_2 and bNormalShader
dlAlphaArg2.enabled = bEnableSlot_2 and bNormalShader and (iAlphaOperation_2 == 6)
dlAlphaArg0Operand.enabled = bEnableSlot_2 and bNormalShader
dlAlphaArg1Operand.enabled = bEnableSlot_2 and bNormalShader
dlAlphaArg2Operand.enabled = dlAlphaArg2.enabled
dlTextureShader.enabled = bEnableSlot_2 and bNormalShader
sdConstantAlpha.enabled = bEnableSlot_2 and bNormalShader
)
)
on NelMultitextureSlot2 open do
(
updateUI true
)
on dlRgbOperation selected newState do
(
updateUI false
)
on dlAlphaOperation selected newState do
(
updateUI false
)
on dlRgbArg0Operand selected newState do
(
updateUI false
)
on dlRgbArg1Operand selected newState do
(
updateUI false
)
on dlRgbArg2Operand selected newState do
(
updateUI false
)
on dlAlphaArg0Operand selected newState do
(
updateUI false
)
on dlAlphaArg1Operand selected newState do
(
updateUI false
)
on dlAlphaArg2Operand selected newState do
(
updateUI false
)
on dlMappingCoordinates selected newState do
(
updateUI false
)
on dlTextureShader selected newState do
(
updateUI false
)
on dlRgbBlendSource selected newState do
(
updateUI false
)
on dlRgbArg0 selected newState do
(
updateUI false
)
on dlRgbArg1 selected newState do
(
updateUI false
)
on dlRgbArg2 selected newState do
(
updateUI false
)
on dlAlphaBlendSource selected newState do
(
updateUI false
)
on dlAlphaArg0 selected newState do
(
updateUI false
)
on dlAlphaArg1 selected newState do
(
updateUI false
)
on dlAlphaArg2 selected newState do
(
updateUI false
)
)
rollout NelMultitextureSlot3 "NeL Slot 3" rolledUp:true
(
group "RGB"
(
dropdownlist dlRgbOperation "Operation" items:#( "Arg0", "Arg0*Arg1", "Arg0+Arg1", "Arg0+Arg1-0.5", "Alpha Blend", "Arg0*Arg1+Arg2" ) across:2
dropdownlist dlRgbBlendSource "Blend Source" items:#( "Texture", "Previous", "Diffuse", "Constant" )
dropdownlist dlRgbArg0 "Arg0" items:#( "Texture", "Previous", "Diffuse", "Constant" ) across:6
dropdownlist dlRgbArg0Operand "Oper0" items:#( "RGB", "Inv RGB", "Alpha", "Inv Alpha" )
dropdownlist dlRgbArg1 "Arg1" items:#( "Previous", "Diffuse", "Constant", "Texture" )
dropdownlist dlRgbArg1Operand "Oper1" items:#( "RGB", "Inv RGB", "Alpha", "Inv Alpha" )
dropdownlist dlRgbArg2 "Arg2" items:#( "Previous", "Diffuse", "Constant", "Texture" )
dropdownlist dlRgbArg2Operand "Oper2" items:#( "RGB", "Inv RGB", "Alpha", "Inv Alpha" )
)
group "Alpha"
(
dropdownlist dlAlphaOperation "Operation" items:#( "Arg0", "Arg0*Arg1", "Arg0+Arg1", "Arg0+Arg1-0.5", "Alpha Blend", "Arg0*Arg1+Arg2" ) across:2
dropdownlist dlAlphaBlendSource "Blend Source" items:#( "Texture", "Previous", "Diffuse", "Constant" )
dropdownlist dlAlphaArg0 "Arg0" items:#( "Texture", "Previous", "Diffuse", "Constant", "Texture" ) across:6
dropdownlist dlAlphaArg0Operand "Oper0" items:#( "RGB", "Inv RGB", "Alpha", "Inv Alpha" )
dropdownlist dlAlphaArg1 "Arg1" items:#( "Previous", "Diffuse", "Constant", "Texture" )
dropdownlist dlAlphaArg1Operand "Oper1" items:#( "RGB", "Inv RGB", "Alpha", "Inv Alpha" )
dropdownlist dlAlphaArg2 "Arg2" items:#( "Previous", "Diffuse", "Constant", "Texture" )
dropdownlist dlAlphaArg2Operand "Oper2" items:#( "RGB", "Inv RGB", "Alpha", "Inv Alpha" )
)
group "Extended"
(
dropdownlist dlTextureShader "Texture Shader" items:#( "Disable", "TextureOff", "FetchTexture", "PassThrough", "CullFragment", "OffsetTexture", "OffsetTextureScale", "DependentARTexture", "DependentGBTexture", "DP3", "DP3Texture2D", "DP3CubeMap", "DP3ReflectCubeMap", "DP3ConstEyeReflectCubeMap", "DP3DiffuseCubeMap", "DP3DepthReplace" ) width:100 across:2
ColorPicker cpConstant "Constant Color" align:#right height:40
Label ldConstantAlpha "Constant Alpha" align:#left across:2
Spinner sdConstantAlpha "" range:[0,255,255] type:#integer scale:1 align:#left width:50
)
fn updateUI update =
(
if (version >= 4) then
(
-- update droplist
if update == true then
(
dlRgbOperation.selection = iRgbOperation_3
dlRgbBlendSource.selection = iRgbBlendSource_3
dlRgbArg0.selection = iRgbArg0_3
dlRgbArg1.selection = iRgbArg1_3
dlRgbArg2.selection = iRgbArg2_3
dlRgbArg0Operand.selection = iRgbArg0Operand_3
dlRgbArg1Operand.selection = iRgbArg1Operand_3
dlRgbArg2Operand.selection = iRgbArg2Operand_3
dlAlphaOperation.selection = iAlphaOperation_3
dlAlphaBlendSource.selection = iAlphaBlendSource_3
dlAlphaArg0.selection = iAlphaArg0_3
dlAlphaArg1.selection = iAlphaArg1_3
dlAlphaArg2.selection = iAlphaArg2_3
dlAlphaArg0Operand.selection = iAlphaArg0Operand_3
dlAlphaArg1Operand.selection = iAlphaArg1Operand_3
dlAlphaArg2Operand.selection = iAlphaArg2Operand_3
dlTextureShader.selection = iTextureShader_3
)
else
(
iRgbOperation_3 = dlRgbOperation.selection
iRgbBlendSource_3 = dlRgbBlendSource.selection
iRgbArg0_3 = dlRgbArg0.selection
iRgbArg1_3 = dlRgbArg1.selection
iRgbArg2_3 = dlRgbArg2.selection
iRgbArg0Operand_3 = dlRgbArg0Operand.selection
iRgbArg1Operand_3 = dlRgbArg1Operand.selection
iRgbArg2Operand_3 = dlRgbArg2Operand.selection
iAlphaOperation_3 = dlAlphaOperation.selection
iAlphaBlendSource_3 = dlAlphaBlendSource.selection
iAlphaArg0_3 = dlAlphaArg0.selection
iAlphaArg1_3 = dlAlphaArg1.selection
iAlphaArg2_3 = dlAlphaArg2.selection
iAlphaArg0Operand_3 = dlAlphaArg0Operand.selection
iAlphaArg1Operand_3 = dlAlphaArg1Operand.selection
iAlphaArg2Operand_3 = dlAlphaArg2Operand.selection
iTextureShader_3 = dlTextureShader.selection
)
cpConstant.enabled = bEnableSlot_3 and bNormalShader
dlRgbOperation.enabled = bEnableSlot_3 and bNormalShader
dlRgbBlendSource.enabled = (bEnableSlot_3 == true) and (iRgbOperation_3 == 5) and bNormalShader
dlRgbArg0.enabled = bEnableSlot_3 and bNormalShader
dlRgbArg1.enabled = bEnableSlot_3 and bNormalShader
dlRgbArg2.enabled = bEnableSlot_3 and bNormalShader and (iRgbOperation_3 == 6)
dlRgbArg0Operand.enabled = bEnableSlot_3 and bNormalShader
dlRgbArg1Operand.enabled = bEnableSlot_3 and bNormalShader
dlRgbArg2Operand.enabled = dlRgbArg2.enabled
dlAlphaOperation.enabled = bEnableSlot_3 and bNormalShader
dlAlphaBlendSource.enabled = (bEnableSlot_3 == true) and (iAlphaOperation_3 == 5) and bNormalShader
dlAlphaArg0.enabled = bEnableSlot_3 and bNormalShader
dlAlphaArg1.enabled = bEnableSlot_3 and bNormalShader
dlAlphaArg2.enabled = bEnableSlot_3 and bNormalShader and (iAlphaOperation_3 == 6)
dlAlphaArg0Operand.enabled = bEnableSlot_3 and bNormalShader
dlAlphaArg1Operand.enabled = bEnableSlot_3 and bNormalShader
dlAlphaArg2Operand.enabled = dlAlphaArg2.enabled
dlTextureShader.enabled = bEnableSlot_3 and bNormalShader
sdConstantAlpha.enabled = bEnableSlot_3 and bNormalShader
)
)
on NelMultitextureSlot3 open do
(
updateUI true
)
on dlRgbOperation selected newState do
(
updateUI false
)
on dlAlphaOperation selected newState do
(
updateUI false
)
on dlRgbArg0Operand selected newState do
(
updateUI false
)
on dlRgbArg1Operand selected newState do
(
updateUI false
)
on dlRgbArg2Operand selected newState do
(
updateUI false
)
on dlAlphaArg0Operand selected newState do
(
updateUI false
)
on dlAlphaArg1Operand selected newState do
(
updateUI false
)
on dlAlphaArg2Operand selected newState do
(
updateUI false
)
on dlMappingCoordinates selected newState do
(
updateUI false
)
on dlTextureShader selected newState do
(
updateUI false
)
on dlRgbBlendSource selected newState do
(
updateUI false
)
on dlRgbArg0 selected newState do
(
updateUI false
)
on dlRgbArg1 selected newState do
(
updateUI false
)
on dlRgbArg2 selected newState do
(
updateUI false
)
on dlAlphaBlendSource selected newState do
(
updateUI false
)
on dlAlphaArg0 selected newState do
(
updateUI false
)
on dlAlphaArg1 selected newState do
(
updateUI false
)
on dlAlphaArg2 selected newState do
(
updateUI false
)
)
rollout NelMultitextureSlot4 "NeL Slot 4" rolledUp:true
(
group "RGB"
(
dropdownlist dlRgbOperation "Operation" items:#( "Arg0", "Arg0*Arg1", "Arg0+Arg1", "Arg0+Arg1-0.5", "Alpha Blend", "Arg0*Arg1+Arg2" ) across:2
dropdownlist dlRgbBlendSource "Blend Source" items:#( "Texture", "Previous", "Diffuse", "Constant" )
dropdownlist dlRgbArg0 "Arg0" items:#( "Texture", "Previous", "Diffuse", "Constant", "Texture" ) across:6
dropdownlist dlRgbArg0Operand "Oper0" items:#( "RGB", "Inv RGB", "Alpha", "Inv Alpha" )
dropdownlist dlRgbArg1 "Arg1" items:#( "Previous", "Diffuse", "Constant", "Texture" )
dropdownlist dlRgbArg1Operand "Oper1" items:#( "RGB", "Inv RGB", "Alpha", "Inv Alpha" )
dropdownlist dlRgbArg2 "Arg2" items:#( "Previous", "Diffuse", "Constant", "Texture" )
dropdownlist dlRgbArg2Operand "Oper2" items:#( "RGB", "Inv RGB", "Alpha", "Inv Alpha" )
)
group "Alpha"
(
dropdownlist dlAlphaOperation "Operation" items:#( "Arg0", "Arg0*Arg1", "Arg0+Arg1", "Arg0+Arg1-0.5", "Alpha Blend", "Arg0*Arg1+Arg2" ) across:2
dropdownlist dlAlphaBlendSource "Blend Source" items:#( "Texture", "Previous", "Diffuse", "Constant" )
dropdownlist dlAlphaArg0 "Arg0" items:#( "Texture", "Previous", "Diffuse", "Constant", "Texture" ) across:6
dropdownlist dlAlphaArg0Operand "Oper0" items:#( "RGB", "Inv RGB", "Alpha", "Inv Alpha" )
dropdownlist dlAlphaArg1 "Arg1" items:#( "Previous", "Diffuse", "Constant", "Texture" )
dropdownlist dlAlphaArg1Operand "Oper1" items:#( "RGB", "Inv RGB", "Alpha", "Inv Alpha" )
dropdownlist dlAlphaArg2 "Arg2" items:#( "Previous", "Diffuse", "Constant", "Texture" )
dropdownlist dlAlphaArg2Operand "Oper2" items:#( "RGB", "Inv RGB", "Alpha", "Inv Alpha" )
)
group "Extended"
(
dropdownlist dlTextureShader "Texture Shader" items:#( "Disable", "TextureOff", "FetchTexture", "PassThrough", "CullFragment", "OffsetTexture", "OffsetTextureScale", "DependentARTexture", "DependentGBTexture", "DP3", "DP3Texture2D", "DP3CubeMap", "DP3ReflectCubeMap", "DP3ConstEyeReflectCubeMap", "DP3DiffuseCubeMap", "DP3DepthReplace" ) width:100 across:2
ColorPicker cpConstant "Constant Color" align:#right height:40
Label ldConstantAlpha "Constant Alpha" align:#left across:2
Spinner sdConstantAlpha "" range:[0,255,255] type:#integer scale:1 align:#left width:50
)
fn updateUI update =
(
if (version >= 4) then
(
-- update droplist
if update == true then
(
dlRgbOperation.selection = iRgbOperation_4
dlRgbBlendSource.selection = iRgbBlendSource_4
dlRgbArg0.selection = iRgbArg0_4
dlRgbArg1.selection = iRgbArg1_4
dlRgbArg2.selection = iRgbArg1_4
dlRgbArg0Operand.selection = iRgbArg0Operand_4
dlRgbArg1Operand.selection = iRgbArg1Operand_4
dlRgbArg2Operand.selection = iRgbArg1Operand_4
dlAlphaOperation.selection = iAlphaOperation_4
dlAlphaBlendSource.selection = iAlphaBlendSource_4
dlAlphaArg0.selection = iAlphaArg0_4
dlAlphaArg1.selection = iAlphaArg1_4
dlAlphaArg2.selection = iAlphaArg1_4
dlAlphaArg0Operand.selection = iAlphaArg0Operand_4
dlAlphaArg1Operand.selection = iAlphaArg1Operand_4
dlAlphaArg2Operand.selection = iAlphaArg1Operand_4
dlTextureShader.selection = iTextureShader_4
)
else
(
iRgbOperation_4 = dlRgbOperation.selection
iRgbBlendSource_4 = dlRgbBlendSource.selection
iRgbArg0_4 = dlRgbArg0.selection
iRgbArg1_4 = dlRgbArg1.selection
iRgbArg2_4 = dlRgbArg2.selection
iRgbArg0Operand_4 = dlRgbArg0Operand.selection
iRgbArg1Operand_4 = dlRgbArg1Operand.selection
iRgbArg2Operand_4 = dlRgbArg2Operand.selection
iAlphaOperation_4 = dlAlphaOperation.selection
iAlphaBlendSource_4 = dlAlphaBlendSource.selection
iAlphaArg0_4 = dlAlphaArg0.selection
iAlphaArg1_4 = dlAlphaArg1.selection
iAlphaArg2_4 = dlAlphaArg2.selection
iAlphaArg0Operand_4 = dlAlphaArg0Operand.selection
iAlphaArg1Operand_4 = dlAlphaArg1Operand.selection
iAlphaArg2Operand_4 = dlAlphaArg2Operand.selection
iTextureShader_4 = dlTextureShader.selection
)
cpConstant.enabled = bEnableSlot_4 and bNormalShader
dlRgbOperation.enabled = bEnableSlot_4 and bNormalShader
dlRgbBlendSource.enabled = (bEnableSlot_4 == true) and (iRgbOperation_4 == 5) and bNormalShader
dlRgbArg0.enabled = bEnableSlot_4 and bNormalShader
dlRgbArg1.enabled = bEnableSlot_4 and bNormalShader
dlRgbArg2.enabled = bEnableSlot_4 and bNormalShader and (iRgbOperation_4 == 6)
dlRgbArg0Operand.enabled = bEnableSlot_4 and bNormalShader
dlRgbArg1Operand.enabled = bEnableSlot_4 and bNormalShader
dlRgbArg2Operand.enabled = dlRgbArg2.enabled
dlAlphaOperation.enabled = bEnableSlot_4 and bNormalShader
dlAlphaBlendSource.enabled = (bEnableSlot_4 == true) and (iAlphaOperation_4 == 5) and bNormalShader
dlAlphaArg0.enabled = bEnableSlot_4 and bNormalShader
dlAlphaArg1.enabled = bEnableSlot_4 and bNormalShader
dlAlphaArg2.enabled = bEnableSlot_4 and bNormalShader and (iAlphaOperation_4 == 6)
dlAlphaArg0Operand.enabled = bEnableSlot_4 and bNormalShader
dlAlphaArg1Operand.enabled = bEnableSlot_4 and bNormalShader
dlAlphaArg2Operand.enabled = dlAlphaArg2.enabled
dlTextureShader.enabled = bEnableSlot_4 and bNormalShader
sdConstantAlpha.enabled = bEnableSlot_4 and bNormalShader
)
)
on NelMultitextureSlot4 open do
(
updateUI true
)
on dlRgbOperation selected newState do
(
updateUI false
)
on dlAlphaOperation selected newState do
(
updateUI false
)
on dlRgbArg0Operand selected newState do
(
updateUI false
)
on dlRgbArg1Operand selected newState do
(
updateUI false
)
on dlRgbArg2Operand selected newState do
(
updateUI false
)
on dlAlphaArg0Operand selected newState do
(
updateUI false
)
on dlAlphaArg1Operand selected newState do
(
updateUI false
)
on dlAlphaArg2Operand selected newState do
(
updateUI false
)
on dlMappingCoordinates selected newState do
(
updateUI false
)
on dlTextureShader selected newState do
(
updateUI false
)
on dlRgbBlendSource selected newState do
(
updateUI false
)
on dlRgbArg0 selected newState do
(
updateUI false
)
on dlRgbArg1 selected newState do
(
updateUI false
)
on dlRgbArg2 selected newState do
(
updateUI false
)
on dlAlphaBlendSource selected newState do
(
updateUI false
)
on dlAlphaArg0 selected newState do
(
updateUI false
)
on dlAlphaArg1 selected newState do
(
updateUI false
)
on dlAlphaArg2 selected newState do
(
updateUI false
)
)
fn loadShader shader =
(
-- Disable all slot
bEnableSlot_1 = false
bEnableSlot_2 = false
bEnableSlot_3 = false
bEnableSlot_4 = false
bEnableSlot_5 = false
bEnableSlot_6 = false
bEnableSlot_7 = false
bEnableSlot_8 = false
if shader == ShaderSingleTexture then
(
-- Single texture
bEnableSlot_1 = true
iRgbOperation_1 = OptorModulate
iRgbArg0_1 = Src0Texture
iRgbArg1_1 = Src1Diffuse
iRgbArg0Operand_1 = OprdRGB
iRgbArg1Operand_1 = OprdRGB
iAlphaOperation_1 = OptorModulate
iAlphaArg0_1 = Src0Texture
iAlphaArg1_1 = Src1Diffuse
iAlphaArg0Operand_1 = OprdAlpha
iAlphaArg1Operand_1 = OprdAlpha
iTextureShader_1 = TextureShaderDisable
)
else if shader == ShaderAddTwoTextures then
(
-- Two texture texture
bEnableSlot_1 = true
iRgbOperation_1 = OptorModulate
iRgbArg0_1 = Src0Texture
iRgbArg1_1 = Src1Diffuse
iRgbArg0Operand_1 = OprdRGB
iRgbArg1Operand_1 = OprdRGB
iAlphaOperation_1 = OptorModulate
iAlphaArg0_1 = Src0Texture
iAlphaArg1_1 = Src1Diffuse
iAlphaArg0Operand_1 = OprdAlpha
iAlphaArg1Operand_1 = OprdAlpha
iTextureShader_1 = TextureShaderDisable
bEnableSlot_2 = true
iRgbOperation_2 = OptorAdd
iRgbArg0_2 = Src0Texture
iRgbArg1_2 = Src1Previous
iRgbArg0Operand_2 = OprdRGB
iRgbArg1Operand_2 = OprdRGB
iAlphaOperation_2 = OptorModulate
iAlphaArg0_2 = Src0Texture
iAlphaArg1_2 = Src1Diffuse
iAlphaArg0Operand_2 = OprdAlpha
iAlphaArg1Operand_2 = OprdAlpha
iTextureShader_2 = TextureShaderDisable
)
else if shader == ShaderMulTwoTextures then
(
-- Two texture texture
bEnableSlot_1 = true
iRgbOperation_1 = OptorModulate
iRgbArg0_1 = Src0Texture
iRgbArg1_1 = Src1Diffuse
iRgbArg0Operand_1 = OprdRGB
iRgbArg1Operand_1 = OprdRGB
iAlphaOperation_1 = OptorModulate
iAlphaArg0_1 = Src0Texture
iAlphaArg1_1 = Src1Diffuse
iAlphaArg0Operand_1 = OprdAlpha
iAlphaArg1Operand_1 = OprdAlpha
iTextureShader_1 = TextureShaderDisable
bEnableSlot_2 = true
iRgbOperation_2 = OptorModulate
iRgbArg0_2 = Src0Texture
iRgbArg1_2 = Src1Previous
iRgbArg0Operand_2 = OprdRGB
iRgbArg1Operand_2 = OprdRGB
iAlphaOperation_2 = OptorModulate
iAlphaArg0_2 = Src0Texture
iAlphaArg1_2 = Src1Diffuse
iAlphaArg0Operand_2 = OprdAlpha
iAlphaArg1Operand_2 = OprdAlpha
iTextureShader_2 = TextureShaderDisable
)
else if shader == ShaderBlendTwoTextures then
(
-- Two texture texture
bEnableSlot_1 = true
iRgbOperation_1 = OptorModulate
iRgbArg0_1 = Src0Texture
iRgbArg1_1 = Src1Diffuse
iRgbArg0Operand_1 = OprdRGB
iRgbArg1Operand_1 = OprdRGB
iAlphaOperation_1 = OptorModulate
iAlphaArg0_1 = Src0Texture
iAlphaArg1_1 = Src1Diffuse
iAlphaArg0Operand_1 = OprdAlpha
iAlphaArg1Operand_1 = OprdAlpha
iTextureShader_1 = TextureShaderDisable
bEnableSlot_2 = true
iRgbOperation_2 = OptorBlend
iRgbBlendSource_2 = SrcBlendPrevious
iRgbArg0_2 = Src0Texture
iRgbArg1_2 = Src1Previous
iRgbArg0Operand_2 = OprdRGB
iRgbArg1Operand_2 = OprdRGB
iAlphaOperation_2 = OptorReplace
iAlphaArg0_2 = Src0Texture
iAlphaArg1_2 = Src1Diffuse
iAlphaArg0Operand_2 = OprdAlpha
iAlphaArg1Operand_2 = OprdAlpha
iTextureShader_2 = TextureShaderDisable
)
else if shader == ShaderBlendMask then
(
-- Two texture texture
bEnableSlot_1 = true
iRgbOperation_1 = OptorModulate
iRgbArg0_1 = Src0Texture
iRgbArg1_1 = Src1Diffuse
iRgbArg0Operand_1 = OprdRGB
iRgbArg1Operand_1 = OprdRGB
iAlphaOperation_1 = OptorReplace
iAlphaArg0_1 = Src0Texture
iAlphaArg0Operand_1 = OprdAlpha
iTextureShader_1 = TextureShaderDisable
bEnableSlot_2 = true
iRgbOperation_2 = OptorReplace
iRgbArg0_2 = Src0Previous
iRgbArg0Operand_2 = OprdRGB
iAlphaOperation_2 = OptorModulate
iAlphaArg0_2 = Src0Texture
iAlphaArg1_2 = Src1Diffuse
iAlphaArg0Operand_2 = OprdAlpha
iAlphaArg1Operand_2 = OprdAlpha
iTextureShader_2 = TextureShaderDisable
)
else if shader == ShaderMixTwoTextures then
(
-- Two texture texture
bEnableSlot_1 = true
iRgbOperation_1 = OptorModulate
iRgbArg0_1 = Src0Texture
iRgbArg1_1 = Src1Diffuse
iRgbArg0Operand_1 = OprdRGB
iRgbArg1Operand_1 = OprdRGB
iAlphaOperation_1 = OptorModulate
iAlphaArg0_1 = Src0Texture
iAlphaArg0_2 = Src1Diffuse
iAlphaArg0Operand_1 = OprdAlpha
iAlphaArg1Operand_1 = OprdAlpha
iTextureShader_1 = TextureShaderDisable
bEnableSlot_2 = true
iRgbOperation_2 = OptorBlend
iRgbBlendSource_2 = SrcBlendConstant
iRgbArg0_2 = Src0Texture
iRgbArg1_2 = Src1Previous
iRgbArg0Operand_2 = OprdRGB
iAlphaOperation_2 = OptorBlend
iAlphaBlendSource_2 = SrcBlendConstant
iAlphaArg0_2 = Src0Texture
iAlphaArg1_2 = Src1Previous
iAlphaArg0Operand_2 = OprdAlpha
iAlphaArg1Operand_2 = OprdAlpha
iTextureShader_2 = TextureShaderDisable
iConstantAlpha_2 = 127
)
-- Update the user interface
globalUpdateUI true
)
on load do
(
-- Trap Patch
if version >= 4 and version < 14 then
(
if (delegate.DiffuseMap != undefined) and (tTexture_1 == undefined) then
(
tTexture_1 = delegate.DiffuseMap
)
)
-- Update to version 4 ?
if updateToVersion4 == true then
(
-- Water
if bWater == true then
(
-- Shader Type
iShaderType = ShaderWater
tTexture_1 = delegate.ReflectionMap
tTexture_2 = delegate.RefractionMap
tTexture_3 = delegate.OpacityMap
tTexture_4 = delegate.FilterMap
tTexture_5 = delegate.BumpMap
tTexture_6 = delegate.DisplacementMap
tTexture_7 = delegate.DiffuseMap
bEnableSlot_1 = delegate.ReflectionMapEnable
bEnableSlot_2 = delegate.RefractionMapEnable
bEnableSlot_3 = delegate.OpacityMapEnable
bEnableSlot_4 = delegate.FilterMapEnable
bEnableSlot_5 = delegate.BumpMapEnable
bEnableSlot_6 = delegate.DisplacementMapEnable
bEnableSlot_7 = delegate.DiffuseMapEnable
)
else
(
-- Simple texture mode
tTexture_1 = delegate.DiffuseMap
bEnableSlot_1 = delegate.DiffuseMapEnable
-- Lightmap ?
if bLightmap == true then
(
-- Shader Type
iShaderType = ShaderLightmap
)
else
(
if ((delegate.SpecularMapEnable == true) and (delegate.SpecularMap != undefined)) then
(
-- Shader specular
iShaderType = ShaderSpecular
-- Specular map
tTexture_2 = delegate.SpecularMap
bEnableSlot_2 = true
)
else
(
-- Shader Type
iShaderType = ShaderNormal
loadShader ShaderSingleTexture
)
-- Alpha blend ?
bAlphaBlend = (bAlphaTest == false) and ((delegate.opacity < 100) or (delegate.OpacityMap != undefined) or bAlphaVertex)
-- Alpha operator
if (delegate.opacityType == 0) then
(
-- Blend
iBlendSrcFunc = BlendSrcAlpha
iBlendDestFunc = BlendInvSrcAlpha
)
else if (delegate.opacityType == 2) then
(
-- Additive
iBlendSrcFunc = BlendOne
iBlendDestFunc = BlendOne
)
)
)
)
updateToVersion4 = false
if updateToVersion14 == true then
(
bTwoSided = delegate.twoSided
cAmbient = delegate.ambient
cDiffuse = delegate.diffuse
pOpacity = delegate.opacity
cSpecular = delegate.specular
pSpecularLevel = delegate.specularLevel
pGlossiness = delegate.glossiness
cSelfIllumColor = delegate.selfIllumColor
pSelfIllumAmount = delegate.selfIllumAmount
bUseSelfIllumColor = delegate.useSelfIllumColor
)
updateToVersion14 = false
)
on create do
(
-- Single shader
loadShader ShaderSingleTexture
)
on update do
(
-- Initialise V3 fields.
if (version < 3) and (version >= 1) then
(
-- No color vertex
bColorVertex = false
if bLightMap == true then
bColorVertex = true
if bUnlighted == true then
bColorVertex = true
-- No alpha vertex
bAlphaVertex = false
iAlphaVertexChannel = 0
)
-- Initialise V4 fields.
if (version < 4) and (version >= 1) then
(
updateToVersion4 = true
)
if (version < 14) and (version >= 1) then
(
updateToVersion14 = true
)
)
fn globalUpdateUI update =
(
nelBasicParameters.updateUI update
NelParams.updateUI update
NelTexture.updateUI update
NelMultitextureSlot1.updateUI update
NelMultitextureSlot2.updateUI update
NelMultitextureSlot3.updateUI update
NelMultitextureSlot4.updateUI update
)
fn updateTextureName =
(
-- Set the name
if (tTexture_1 != undefined) then
(
if (classof tTexture_1) == Bitmaptexture then
(
NelTexture.mbTexture_1.text = (tTexture_1.name+" ("+(filenameFromPath (tTexture_1.filename))+")")
)
else
(
NelTexture.mbTexture_1.text = (tTexture_1.name+" ("+((classof tTexture_1) as string)+")")
)
)
else
(
NelTexture.mbTexture_1.text = "None"
)
if (tTexture_2 != undefined) then
(
if (classof tTexture_2) == Bitmaptexture then
(
NelTexture.mbTexture_2.text = (tTexture_2.name+" ("+(filenameFromPath (tTexture_2.filename))+")")
)
else
(
NelTexture.mbTexture_2.text = (tTexture_2.name+" ("+((classof tTexture_2) as string)+")")
)
)
else
(
if (iShaderType == ShaderUserColor) and (tTexture_1 != undefined) and ((classof tTexture_1) == Bitmaptexture) then
(
NelTexture.mbTexture_2.text = (getFilenameFile (filenameFromPath (tTexture_1.filename))) + "_usercolor" + (getFilenameType (filenameFromPath (tTexture_1.filename)))
)
else
(
NelTexture.mbTexture_2.text = "None"
)
)
if (tTexture_3 != undefined) then
(
if (classof tTexture_3) == Bitmaptexture then
(
NelTexture.mbTexture_3.text = (tTexture_3.name+" ("+(filenameFromPath (tTexture_3.filename))+")")
)
else
(
NelTexture.mbTexture_3.text = (tTexture_3.name+" ("+((classof tTexture_3) as string)+")")
)
)
else
(
NelTexture.mbTexture_3.text = "None"
)
if (tTexture_4 != undefined) then
(
if (classof tTexture_4) == Bitmaptexture then
(
NelTexture.mbTexture_4.text = (tTexture_4.name+" ("+(filenameFromPath (tTexture_4.filename))+")")
)
else
(
NelTexture.mbTexture_4.text = (tTexture_4.name+" ("+((classof tTexture_4) as string)+")")
)
)
else
(
NelTexture.mbTexture_4.text = "None"
)
if (tTexture_5 != undefined) then
(
if (classof tTexture_5) == Bitmaptexture then
(
NelTexture.mbTexture_5.text = (tTexture_5.name+" ("+(filenameFromPath (tTexture_5.filename))+")")
)
else
(
NelTexture.mbTexture_5.text = (tTexture_5.name+" ("+((classof tTexture_5) as string)+")")
)
)
else
(
NelTexture.mbTexture_5.text = "None"
)
if (tTexture_6 != undefined) then
(
if (classof tTexture_6) == Bitmaptexture then
(
NelTexture.mbTexture_6.text = (tTexture_6.name+" ("+(filenameFromPath (tTexture_6.filename))+")")
)
else
(
NelTexture.mbTexture_6.text = (tTexture_6.name+" ("+((classof tTexture_6) as string)+")")
)
)
else
(
NelTexture.mbTexture_6.text = "None"
)
if (tTexture_7 != undefined) then
(
if (classof tTexture_7) == Bitmaptexture then
(
NelTexture.mbTexture_7.text = (tTexture_7.name+" ("+(filenameFromPath (tTexture_7.filename))+")")
)
else
(
NelTexture.mbTexture_7.text = (tTexture_7.name+" ("+((classof tTexture_7) as string)+")")
)
)
else
(
NelTexture.mbTexture_7.text = "None"
)
if (tTexture_8 != undefined) then
(
if (classof tTexture_8) == Bitmaptexture then
(
NelTexture.mbTexture_8.text = (tTexture_8.name+" ("+(filenameFromPath (tTexture_8.filename))+")")
)
else
(
NelTexture.mbTexture_8.text = (tTexture_8.name+" ("+((classof tTexture_8) as string)+")")
)
)
else
(
NelTexture.mbTexture_8.text = "None"
)
)
)