altmeister
04-04-2005, 09:48 AM
I try to extend the DX9 Material.
The Idea ist to get an UI with Buttons and Fields for customizing a shader.
Works so far (Refraction etc. works fine with delegate ...), but i got Problems with delegating the Bitmaps.
try
(
plugin Material YDDX9
name:"ydShader"
classID:#(0x7f24579e, 0x5caf6eb9)
extends:DirectX_9_Shader
replaceUI:true
version:1
(
parameters main rollout:params (
FXFile type:#string default:"C:\Material\Material.fx" ui:FXFile
ShaderID type:#integer ui:shadID
g_DiffuseTexture type:#BitMap
g_NormalTexture type:#BitMap
g_SpecularPower type:#float default:9.0 ui:g_SpecularPower
g_DisplacementFactor type:#float default:0.005 ui:g_DisplacementFactor
g_RefractionIndex type:#float default:0.15 ui:g_RefractionIndex
AlphaBlend type:#integer default:0 ui:AlphaBlend
AlphaTest type:#integer default:0 ui:AlphaTest
AlphaTestRef type:#integer default:127 ui:AlphaTestRef
g_SpecularLUTexture type:#BitMap
on ShaderID set val do (
try (
delegate.ShaderID = val
Y_Log_Info ("DX9 Extend: parameter: delegate ShaderID")
) catch (
Y_Log_Error ("DX9 Extend: parameter: delegate ShaderID " + getCurrentException())
)
)
on FXFile set val do (
try (
delegate.effectfile = val
Y_Log_Info ("DX9 Extend: parameter: delegate fxfile")
) catch (
Y_Log_Error ("DX9 Extend: parameter: delegate fxfile " + getCurrentException())
)
)
on g_SpecularPower set val do (
try (
delegate.g_SpecularPower = val
Y_Log_Info ("DX9 Extend: parameter: delegate SpecularPower")
) catch (
Y_Log_Error ("DX9 Extend: parameter: delegate SpecularPower " + getCurrentException())
)
)
on g_DisplacementFactor set val do (
try (
delegate.g_DisplacementFactor = val
Y_Log_Info ("DX9 Extend: parameter: delegate DisplacementFactor")
) catch (
Y_Log_Error ("DX9 Extend: parameter: delegate DisplacementFactor " + getCurrentException())
)
)
on g_RefractionIndex set val do (
try (
delegate.g_RefractionIndex = val
Y_Log_Info ("DX9 Extend: parameter: delegate RefractionIndex")
) catch (
Y_Log_Error ("DX9 Extend: parameter: delegate RefractionIndex " + getCurrentException())
)
)
on AlphaBlend set val do (
try (
delegate.AlphaBlend = val
Y_Log_Info ("DX9 Extend: parameter: delegate AlphaBlend")
) catch (
Y_Log_Error ("DX9 Extend: parameter: delegate AlphaBlend " + getCurrentException())
)
)
on AlphaTest set val do (
try (
delegate.AlphaTest = val
Y_Log_Info ("DX9 Extend: parameter: delegate AlphaTest")
) catch (
Y_Log_Error ("DX9 Extend: parameter: delegate AlphaTest " + getCurrentException())
)
)
on AlphaTestRef set val do (
try (
delegate.AlphaTestRef = val
Y_Log_Info ("DX9 Extend: parameter: delegate AlphaTestRef")
) catch (
Y_Log_Error ("DX9 Extend: parameter: delegate AlphaTestRef " + getCurrentException())
)
)
/*
on g_DiffuseTexture set val do (
try (
delegate.g_DiffuseTexture = val
Y_Log_Info ("DX9 Extend: parameter: delegate diffuse")
) catch (
Y_Log_Error ("DX9 Extend: parameter: delegate diffuse " + getCurrentException())
)
)
on g_NormalTexture set val do (
try (
delegate.g_NormalTexture = val
Y_Log_Info ("DX9 Extend: parameter: delegate normal")
) catch (
Y_Log_Error ("DX9 Extend: parameter: delegate normal " + getCurrentException())
)
)
*/
)
rollout params "YD Parameters" (
label shadIDl "Shader ID" pos:[10,10] width:140 height:20
spinner shadID "" pos:[260,10] width:60 height:20 type:#integer
editText FXFile "" pos:[150,30] width:170 height:20
button setFXFile "FX File" pos:[10,30] width:90 height:27 toolTip:"Choose the FX File for current Shader"
button setDiffuse "Set Diffuse" pos:[10,60] width:90 height:27 toolTip:"Choose the Diffuse Map for current Shader"
imgTag DiffMap "" pos:[10,100] width:128 height:128
editText DiffName "" pos:[10,240] width:120 height:20
button showDiff "Show" pos:[10,270] width:100 height:20
button setNormal "Set Normal" pos:[230,60] width:90 height:27 toolTip:"Choose the Normal Map for current Shader"
imgTag NormMap "" pos:[190,100] width:128 height:128
editText NormName "" pos:[190,240] width:120 height:20
button showNorm "Show" pos:[190,270] width:100 height:20
slider g_SpecularPower "Specular" pos:[10,300] width:300 height:20 type:#float
slider g_DisplacementFactor "Displacement" pos:[10,350] width:300 height:20 type:#float
slider g_RefractionIndex "Refraction" pos:[10,400] width:300 height:20 type:#float
slider AlphaBlend "Alpha Blend" pos:[10,450] width:300 height:20 type:#integer
slider AlphaTest "Alpha Key" pos:[10,500] width:300 height:20 type:#integer
slider AlphaTestRef "Alpha Key Ref" pos:[10,550] width:300 height:20 type:#integer
button reloadFX "Reload FX" pos:[10,600] width:170 height:30 toolTip:"Reload the current Shader"
-- on open set technique to 0 (Shader 1.1)
on params open do (
shadID.value = delegate.ShaderID
sRootFolder = GetDir #maxroot
oSpecLUTex = BitMapTexture()
oSpecLUTex.filename = sRootFolder + "maps/difspeclut.dds"
delegate.g_SpecularLUTexture = oSpecLUTex.bitmap
delegate.technique = 0
print delegate.technique
)
--spinner picker buttons
on setFXFile pressed do (
try (
FXFile.text = getOpenFileName()
) catch (
Y_Log_Error ("DX9 Extend: setting FXFile " + getCurrentException())
)
)
on setDiffuse pressed do (
try (
DiffTex = selectBitmap()
if DiffTex != undefined then (
DiffMap.bitmap = DiffTex
DiffName.text = DiffTex.filename
delegate.g_DiffuseTexture = DiffTex
Y_Log_Info ("DX9 Extend: set the diffuse texture: " + DiffTex.filename)
)
) catch (
Y_Log_Error ("DX9 Extend: set the diffuse texture: " + getCurrentException())
)
)
on showDiff pressed do (
try (
delegate.g_DiffuseTexture.viewImage()
--DiffTex.viewImage()
) catch (
Y_Log_Error ("DX9 Extend: show the diffuse texture: " + getCurrentException())
)
)
on setNormal pressed do (
try (
NormTex = selectBitmap()
if NormTex != undefined then (
NormMap.bitmap = NormTex
NormName.Text = NormTex.filename
Y_Log_Info ("DX9 Extend: set the diffuse texture: " + NormTex.filename)
)
) catch (
Y_Log_Error ("DX9 Extend: set the normal texture: " + getCurrentException())
)
)
on showNorm pressed do (
try (
NormTex.viewImage()
) catch (
Y_Log_Error ("DX9 Extend: show the normal texture: " + getCurrentException())
)
)
on reloadFX pressed do (
try (
delegate.reloadeffect()
Y_Log_Info ("DX9 Extend: Reload Effect ")
)
catch (
Y_Log_Error ("DX9 Extend: Reload Effect: " + getCurrentException())
)
)
) --end rollout
) --end plugin
)
catch (
Y_Log_Error ("DX9 Extend: " + getCurrentException())
)
Somebody with experience in delegating bitmaps in an extending PlugIn ???
The Idea ist to get an UI with Buttons and Fields for customizing a shader.
Works so far (Refraction etc. works fine with delegate ...), but i got Problems with delegating the Bitmaps.
try
(
plugin Material YDDX9
name:"ydShader"
classID:#(0x7f24579e, 0x5caf6eb9)
extends:DirectX_9_Shader
replaceUI:true
version:1
(
parameters main rollout:params (
FXFile type:#string default:"C:\Material\Material.fx" ui:FXFile
ShaderID type:#integer ui:shadID
g_DiffuseTexture type:#BitMap
g_NormalTexture type:#BitMap
g_SpecularPower type:#float default:9.0 ui:g_SpecularPower
g_DisplacementFactor type:#float default:0.005 ui:g_DisplacementFactor
g_RefractionIndex type:#float default:0.15 ui:g_RefractionIndex
AlphaBlend type:#integer default:0 ui:AlphaBlend
AlphaTest type:#integer default:0 ui:AlphaTest
AlphaTestRef type:#integer default:127 ui:AlphaTestRef
g_SpecularLUTexture type:#BitMap
on ShaderID set val do (
try (
delegate.ShaderID = val
Y_Log_Info ("DX9 Extend: parameter: delegate ShaderID")
) catch (
Y_Log_Error ("DX9 Extend: parameter: delegate ShaderID " + getCurrentException())
)
)
on FXFile set val do (
try (
delegate.effectfile = val
Y_Log_Info ("DX9 Extend: parameter: delegate fxfile")
) catch (
Y_Log_Error ("DX9 Extend: parameter: delegate fxfile " + getCurrentException())
)
)
on g_SpecularPower set val do (
try (
delegate.g_SpecularPower = val
Y_Log_Info ("DX9 Extend: parameter: delegate SpecularPower")
) catch (
Y_Log_Error ("DX9 Extend: parameter: delegate SpecularPower " + getCurrentException())
)
)
on g_DisplacementFactor set val do (
try (
delegate.g_DisplacementFactor = val
Y_Log_Info ("DX9 Extend: parameter: delegate DisplacementFactor")
) catch (
Y_Log_Error ("DX9 Extend: parameter: delegate DisplacementFactor " + getCurrentException())
)
)
on g_RefractionIndex set val do (
try (
delegate.g_RefractionIndex = val
Y_Log_Info ("DX9 Extend: parameter: delegate RefractionIndex")
) catch (
Y_Log_Error ("DX9 Extend: parameter: delegate RefractionIndex " + getCurrentException())
)
)
on AlphaBlend set val do (
try (
delegate.AlphaBlend = val
Y_Log_Info ("DX9 Extend: parameter: delegate AlphaBlend")
) catch (
Y_Log_Error ("DX9 Extend: parameter: delegate AlphaBlend " + getCurrentException())
)
)
on AlphaTest set val do (
try (
delegate.AlphaTest = val
Y_Log_Info ("DX9 Extend: parameter: delegate AlphaTest")
) catch (
Y_Log_Error ("DX9 Extend: parameter: delegate AlphaTest " + getCurrentException())
)
)
on AlphaTestRef set val do (
try (
delegate.AlphaTestRef = val
Y_Log_Info ("DX9 Extend: parameter: delegate AlphaTestRef")
) catch (
Y_Log_Error ("DX9 Extend: parameter: delegate AlphaTestRef " + getCurrentException())
)
)
/*
on g_DiffuseTexture set val do (
try (
delegate.g_DiffuseTexture = val
Y_Log_Info ("DX9 Extend: parameter: delegate diffuse")
) catch (
Y_Log_Error ("DX9 Extend: parameter: delegate diffuse " + getCurrentException())
)
)
on g_NormalTexture set val do (
try (
delegate.g_NormalTexture = val
Y_Log_Info ("DX9 Extend: parameter: delegate normal")
) catch (
Y_Log_Error ("DX9 Extend: parameter: delegate normal " + getCurrentException())
)
)
*/
)
rollout params "YD Parameters" (
label shadIDl "Shader ID" pos:[10,10] width:140 height:20
spinner shadID "" pos:[260,10] width:60 height:20 type:#integer
editText FXFile "" pos:[150,30] width:170 height:20
button setFXFile "FX File" pos:[10,30] width:90 height:27 toolTip:"Choose the FX File for current Shader"
button setDiffuse "Set Diffuse" pos:[10,60] width:90 height:27 toolTip:"Choose the Diffuse Map for current Shader"
imgTag DiffMap "" pos:[10,100] width:128 height:128
editText DiffName "" pos:[10,240] width:120 height:20
button showDiff "Show" pos:[10,270] width:100 height:20
button setNormal "Set Normal" pos:[230,60] width:90 height:27 toolTip:"Choose the Normal Map for current Shader"
imgTag NormMap "" pos:[190,100] width:128 height:128
editText NormName "" pos:[190,240] width:120 height:20
button showNorm "Show" pos:[190,270] width:100 height:20
slider g_SpecularPower "Specular" pos:[10,300] width:300 height:20 type:#float
slider g_DisplacementFactor "Displacement" pos:[10,350] width:300 height:20 type:#float
slider g_RefractionIndex "Refraction" pos:[10,400] width:300 height:20 type:#float
slider AlphaBlend "Alpha Blend" pos:[10,450] width:300 height:20 type:#integer
slider AlphaTest "Alpha Key" pos:[10,500] width:300 height:20 type:#integer
slider AlphaTestRef "Alpha Key Ref" pos:[10,550] width:300 height:20 type:#integer
button reloadFX "Reload FX" pos:[10,600] width:170 height:30 toolTip:"Reload the current Shader"
-- on open set technique to 0 (Shader 1.1)
on params open do (
shadID.value = delegate.ShaderID
sRootFolder = GetDir #maxroot
oSpecLUTex = BitMapTexture()
oSpecLUTex.filename = sRootFolder + "maps/difspeclut.dds"
delegate.g_SpecularLUTexture = oSpecLUTex.bitmap
delegate.technique = 0
print delegate.technique
)
--spinner picker buttons
on setFXFile pressed do (
try (
FXFile.text = getOpenFileName()
) catch (
Y_Log_Error ("DX9 Extend: setting FXFile " + getCurrentException())
)
)
on setDiffuse pressed do (
try (
DiffTex = selectBitmap()
if DiffTex != undefined then (
DiffMap.bitmap = DiffTex
DiffName.text = DiffTex.filename
delegate.g_DiffuseTexture = DiffTex
Y_Log_Info ("DX9 Extend: set the diffuse texture: " + DiffTex.filename)
)
) catch (
Y_Log_Error ("DX9 Extend: set the diffuse texture: " + getCurrentException())
)
)
on showDiff pressed do (
try (
delegate.g_DiffuseTexture.viewImage()
--DiffTex.viewImage()
) catch (
Y_Log_Error ("DX9 Extend: show the diffuse texture: " + getCurrentException())
)
)
on setNormal pressed do (
try (
NormTex = selectBitmap()
if NormTex != undefined then (
NormMap.bitmap = NormTex
NormName.Text = NormTex.filename
Y_Log_Info ("DX9 Extend: set the diffuse texture: " + NormTex.filename)
)
) catch (
Y_Log_Error ("DX9 Extend: set the normal texture: " + getCurrentException())
)
)
on showNorm pressed do (
try (
NormTex.viewImage()
) catch (
Y_Log_Error ("DX9 Extend: show the normal texture: " + getCurrentException())
)
)
on reloadFX pressed do (
try (
delegate.reloadeffect()
Y_Log_Info ("DX9 Extend: Reload Effect ")
)
catch (
Y_Log_Error ("DX9 Extend: Reload Effect: " + getCurrentException())
)
)
) --end rollout
) --end plugin
)
catch (
Y_Log_Error ("DX9 Extend: " + getCurrentException())
)
Somebody with experience in delegating bitmaps in an extending PlugIn ???
