ich versuche seit Tage die Max shader die für die Renderelemente zuständig sind auf XSI zu übertragen. Leider ohne Erfolg. Ich habe mal eine MI-Szene vorbereitet und entschlackt, so dass ihr den Vorgang vielleicht besser nachvollziehen könnt:
- Code: Select all
# /////////////////////////////////////////////////////////////////////////////
#
# generated by mental ray echo
# raylib version 3.6.51.7, date 15 May 2008
# compiled on: nt-x64-vc8sp1
#
# /////////////////////////////////////////////////////////////////////////////
link
[...]
declare data
"max_SceneData" (
[...]
)
version 6
end declare
data "Global|Data" "max_SceneData" (
[...]
options "SceneOptions|SceneOptions"
"contrast all buffers" on
"finalgather mode" "automatic"
"finalgather points" 50
"globillum merge" 0.000000
shadow on
trace on
scanline on
[...]
end options
declare shader
color "max_DefaultLight" (
[...]
)
version 1
apply light
end declare
shader "DefaultLight0|Shader" "max_DefaultLight" (
[...])
light "DefaultLight0|Light" = "DefaultLight0|Shader"
[...]
end light
instance "DefaultLight0|Instance"
[...]
end instance
declare data
"max_NodeData" (
color "WireColor",
integer "NodeID",
integer "NodeRenderID",
array light "illuminators",
array light "shadowmakers",
boolean "useGlobalLights",
array integer "materialRequirements",
integer "lightIncludeExcludeID"
)
version 2
end declare
data "Plane01|Data" "max_NodeData" (
"WireColor" 0.337255 0.337255 0.337255 1,
"NodeID" 0,
"NodeRenderID" 0,
"useGlobalLights" on,
"materialRequirements" [
8388617 ],
"lightIncludeExcludeID" 0)
[GEOMETRIE]
declare shader
color "max_mia_material_renderelements" (
shader "mia_material",
integer "GBufferID"
)
version 1
end declare
declare shader
color "mia_material" (
[...]
)
version 14
apply material, shadow, photon
end declare
shader "mrArchMaterial_Shader|Shader" "mia_material" (
[...]
shader "max_mia_material_renderelements|Shader" "max_mia_material_renderelements" (
"mia_material" "mrArchMaterial_Shader|Shader",
"GBufferID" 0)
material "01 - Default|Mtl"
= "max_mia_material_renderelements|Shader"
photon = "mrArchMaterial_Shader|Shader"
end material
instance "Plane01|Instance(Mesh00)"
[...]
data "Plane01|Data"
()
end instance
declare shader
color "max_Environment" (
boolean "UseAlpha",
color "Color",
color texture "Map",
array light "skylights",
shader "Sky"
)
version 1
apply environment
end declare
shader "Environment|Shader" "max_Environment" (
"UseAlpha" off,
"Color" 0 0 0 1)
declare shader
color "max_base_GBuffer_lens" (
boolean "MtlID",
boolean "NodeID",
boolean "NodeRenderID",
boolean "RealColor",
boolean "UV",
boolean "Velocity"
)
version 1
apply lens
end declare
declare shader
color "max_RenderElementHandler" (
array shader "renderElementShaders",
array boolean "renderElementCurrentlyActive",
array integer "renderElementFBIndices",
array boolean "renderElementIsUnshadowed",
array boolean "renderElementAtmosphereApplied",
array integer "renderElementFBTypes",
array boolean "renderElementRevertsToBeautyPass"
)
version 1
apply lens
end declare
declare shader
color "max_mrRenderElement" (
integer "mode",
scalar "multiplier",
color "arbitrary",
string "label"
)
version 2
end declare
shader "mr A&D Output: Diffuse Direct IlluminationRenderElement" "max_mrRenderElement" (
"mode" 1,
"multiplier" 1,
"arbitrary" 0 0 0 1,
"label" "")
shader "mr A&D Output: ReflectionsRenderElement" "max_mrRenderElement" (
"mode" 7,
"multiplier" 1,
"arbitrary" 0 0 0 1,
"label" "")
declare shader
color "max_StdRenderElements" (
[...]
version 7
end declare
shader "ShadowRenderElement" "max_StdRenderElements" (
"mode" 12,
[...]
shader "GBuffer_Lens|Shader" "max_base_GBuffer_lens" (
"MtlID" off,
"NodeID" off,
"NodeRenderID" off,
"RealColor" off,
"UV" off,
"Velocity" off)
shader "RenderElement_Lens|Shader" "max_RenderElementHandler" (
"renderElementShaders" [
"mr A&D Output: Diffuse Direct IlluminationRenderElement",
"mr A&D Output: ReflectionsRenderElement",
"ShadowRenderElement" ],
"renderElementCurrentlyActive" [
on,
on,
on ],
"renderElementFBIndices" [
8,
9,
10 ],
"renderElementIsUnshadowed" [
on,
on,
off ],
"renderElementAtmosphereApplied" [
on,
on,
off ],
"renderElementFBTypes" [
1,
1,
1 ],
"renderElementRevertsToBeautyPass" [
off,
off,
off ])
camera "Viewport|Viewport"
framebuffer "mi_buffer_002" datatype "rgba_16" filtering true filename "..." filetype "tga" primary true
framebuffer "fb8" datatype "rgba_16" filtering true user true filename "..." filetype "tga" primary true
framebuffer "fb9" datatype "rgba_16" filtering true user true filename "..." filetype "tga" primary true
framebuffer "fb10" datatype "rgba_16" filtering true user true filename "..." filetype "tga" primary true
environment = "Environment|Shader"
lens = "GBuffer_Lens|Shader"= "RenderElement_Lens|Shader"
[...]
end camera
instance "Viewport|Instance"
"Viewport|Viewport"
visible on
transform
0.70710677 0.35355335 -0.61237246 0
-0.70710677 0.35355335 -0.61237246 0
0 0.86602545 0.49999997 0
-0 -4.5776367e-005 -249.99998 1
()
end instance
instgroup "SceneRoot|Group"
"DefaultLight0|Instance"
"Plane01|Instance(Mesh00)"
"Viewport|Instance"
end instgroup
render "SceneRoot|Group" "Viewport|Instance" "SceneOptions|SceneOptions"
So wie ich das sehe gibts 3 wichtige shader, die dafür zuständig sind.
- max_RenderElementHandler (lens shader)
- max_mrRenderElement (kein apply Typ)
- max_mia_material_renderelements (kein deklarierter apply Typ, aber hier wäre das Arch&Design Material drin, daher müsste wohl der appy Typ material sein.)
Das Geometrie Material schaut am Ende so aus:
- Code: Select all
declare shader
color "max_mia_material_renderelements" (
shader "mia_material",
integer "GBufferID"
)
version 1
end declare
declare shader
color "mia_material" (
[...]
)
version 14
apply material, shadow, photon
end declare
shader "mrArchMaterial_Shader|Shader" "mia_material" (
[...]
shader "max_mia_material_renderelements|Shader" "max_mia_material_renderelements" (
"mia_material" "mrArchMaterial_Shader|Shader",
"GBufferID" 0)
material "01 - Default|Mtl"
= "max_mia_material_renderelements|Shader"
photon = "mrArchMaterial_Shader|Shader"
end material
Welchen shader ich überhaupt nicht verstehe ist "max_mrRenderElement". Schlussendlich ist er im lens shader max_RenderElementHandler gestöpselt und verweise auf die mia_material Buffers. Im shader selbst werden diese Buffer aber irgendwie nicht abgefragt. Dar Label Parameter bleibt leer... In der shader GUI Deklaration steht auch lediglich "refferenceTarget" drin.
Ein Render Element wird hiermit so angegeben:
- Code: Select all
shader "mr A&D Output: ReflectionsRenderElement" "max_mrRenderElement" (
"mode" 7,
"multiplier" 1,
"arbitrary" 0 0 0 1,
"label" "")
Apply Typ gibt es wie gesagt nicht...
Im Lens shader selbst wird der shader dann in einem Arry aufgelistet:
- Code: Select all
shader "RenderElement_Lens|Shader" "max_RenderElementHandler" (
"renderElementShaders" [
"mr A&D Output: Diffuse Direct IlluminationRenderElement",
"mr A&D Output: ReflectionsRenderElement",
"ShadowRenderElement" ],
Weiter werden dann noch weitere Buffer Parameter übergeben:
- Code: Select all
"renderElementCurrentlyActive" [
on,
on,
on ],
"renderElementFBIndices" [
8,
9,
10 ],
"renderElementIsUnshadowed" [
on,
on,
off ],
"renderElementAtmosphereApplied" [
on,
on,
off ],
"renderElementFBTypes" [
1,
1,
1 ],
"renderElementRevertsToBeautyPass" [
off,
off,
off ])
Für mich wäre eigentlich nur "renderElementIsUnshadowed" interessant, aber um daran zu kommen, brauche ich halt leider alle shader und alle Parameter...
Habt ihr vielleicht eine Idee, wie man das Lösen kann?
Zudem habe ich noch ein Problem: In XSI gibts es wohl nur einen Array Light.... Ich bräuchte hierfür aber array shader, array boolean und array integer. Kann man hier irgendwie tricksen?
Grüße
Jonathan
