Max Render Element Shader auf XSI übertragen

Wie schreibt man ein Phenomenon, bzw. einen Shader?

Max Render Element Shader auf XSI übertragen

Postby jb_alvarado on Fri May 15, 2009 12:20 pm

Hallo Leute,
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
User avatar
jb_alvarado
Moderator
 
Posts: 2021
Joined: Sun Nov 12, 2006 20:16 pm
Location: Dornbirn

Return to Writing Shader and Phenomena®

Who is online

Users browsing this forum: No registered users and 1 guest

cron