/* ----------------------------------------------------------------------------- This source file is part of OpenSpace3D For the latest info, see http://www.openspace3d.com Copyright (c) 2012 I-maginer This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA, or go to http://www.gnu.org/copyleft/lesser.txt ----------------------------------------------------------------------------- */ var SRENDER_SETTING_HELP_URL = "http://www.openspace3d.com/documentation/fr/rendersetting.html";; typeof winRenderingSetup = EdWindow;; var bPreDebugHDRstate = 0;; fun renderingInitScene(xmlfilestr, envstr, viewstr)= let V3DgetDefaultViewport viewstr -> defaultviewportstr in let defaultviewportstr.V3D_viewport -> viewport in let XMLgetShortFloatToString ((itof iDefaultAmbiantRColor) /. 255.0) -> ar in let XMLgetShortFloatToString ((itof iDefaultAmbiantGColor) /. 255.0) -> ag in let XMLgetShortFloatToString ((itof iDefaultAmbiantBColor) /. 255.0) -> ab in let XMLaddMark xmlfilestr "colourAmbient" envstr ["r" ar]::["g" ag]::["b" ab]::nil nil -> ambcolorstr in let XMLgetShortFloatToString ((itof iDefaultBackGroundRColor) /. 255.0) -> br in let XMLgetShortFloatToString ((itof iDefaultBackGroundGColor) /. 255.0) -> bg in let XMLgetShortFloatToString ((itof iDefaultBackGroundBColor) /. 255.0) -> bb in let XMLaddMark xmlfilestr "colourBackground" envstr ["r" br]::["g" bg]::["b" bb]::nil nil -> backcolorstr in let SO3ViewportGetSSAOTechnique viewport -> ssaotechnique in let SO3ViewportGetSSAOFilter viewport -> ssaofilter in let XMLaddMark xmlfilestr "SSAO" envstr ["technique" (itoa ssaotechnique)]::["filter" (itoa ssaofilter)]::["enable" XMLgetBoolString 0]::nil nil -> ssaostr in let SO3ViewportGetSSAOTechniqueParameters viewport ssaotechnique -> ssaoparams in let sizelist ssaoparams -> size in let 0 -> i in while (i < size) do ( let nth_list ssaoparams i -> [name [_ minv maxv val]] in ( XMLaddMark xmlfilestr name ssaostr ["value" (XMLgetShortFloatToString val)]::nil nil; ); set i = i + 1; ); // Define the default names for the visibility layers. let XMLaddMark xmlfilestr "layers" envstr nil nil -> layersstr in let 0 -> i in while (i < 32) do ( let if i == 0 then "Invisible in selection buffer" else if i == 1 then "Water" else if i == 2 then "Mini-Map" else if i < 10 then strcat "Reserved " (itoa (i + 1)) else strcat "User " (itoa (i + 1)) -> layerName in XMLaddMark xmlfilestr "layer" layersstr ["id" (itoa i)]::["name" layerName]::["enable" XMLgetBoolString 1]::nil nil; set i = i + 1; ); XMLaddMark xmlfilestr "HDR" envstr ["enable" XMLgetBoolString 0]::["blurAmount" XMLgetShortFloatToString 0.2]::["effectAmount" XMLgetShortFloatToString 0.4]::["gamma" XMLgetShortFloatToString 1.0]::nil nil; 0;; fun renderingLoadEnv(envstr, targetenvironmentstr, viewstr)= let V3DgetDefaultSession viewstr -> sessionstr in let V3DgetDefaultViewport viewstr -> defaultviewportstr in let defaultviewportstr.V3D_viewport -> viewport in let XMLgetMarkByValueFromMarkSons envstr "colourAmbient" -> ambientstr in let make_rgba (ftoi ((atof XMLgetParam ambientstr "r") *. 255.0)) (ftoi ((atof XMLgetParam ambientstr "g") *. 255.0)) (ftoi ((atof XMLgetParam ambientstr "b") *. 255.0)) 255 -> ambientcolor in let XMLgetMarkByValueFromMarkSons envstr "colourBackground" -> backstr in let make_rgba (ftoi ((atof XMLgetParam backstr "r") *. 255.0)) (ftoi ((atof XMLgetParam backstr "g") *. 255.0)) (ftoi ((atof XMLgetParam backstr "b") *. 255.0)) 255 -> backcolor in let XMLgetMarkByValueFromMarkSons envstr "SSAO" -> ssaostr in let atoi XMLgetParam ssaostr "technique" -> ssaotechnique in let atoi XMLgetParam ssaostr "filter" -> ssaofilter in let XMLgetBoolParam ssaostr "enable" -> ssaoenable in let XMLgetMarkByValueFromMarkSons envstr "HDR" -> hdrstr in let XMLgetBoolParam hdrstr "enable" -> hdrenable in let atof XMLgetParam hdrstr "blurAmount" -> blurAmount in let if (blurAmount == nil) then 0.2 else blurAmount -> blurAmount in let atof XMLgetParam hdrstr "effectAmount" -> effectAmount in let if (effectAmount == nil) then 0.4 else effectAmount -> effectAmount in let atof XMLgetParam hdrstr "gamma" -> gamma in let if (gamma == nil) then 1.0 else gamma -> gamma in ( //AMBIENT COLOR let XMLgetMarkByValueFromMarkSons targetenvironmentstr "colourAmbient" -> targetambstr in ( XMLsetParam targetambstr "r" (XMLgetParam ambientstr "r"); XMLsetParam targetambstr "g" (XMLgetParam ambientstr "g"); XMLsetParam targetambstr "b" (XMLgetParam ambientstr "b"); ); //BACKGROUND COLOR let XMLgetMarkByValueFromMarkSons targetenvironmentstr "colourBackground" -> targetbgstr in ( XMLsetParam targetbgstr "r" (XMLgetParam backstr "r"); XMLsetParam targetbgstr "g" (XMLgetParam backstr "g"); XMLsetParam targetbgstr "b" (XMLgetParam backstr "b"); ); V3DsetViewportColor defaultviewportstr backcolor; V3DsetAmbientLight sessionstr ambientcolor; //SSAO if ssaostr == nil then nil else let XMLgetMarkByValueFromMarkSons targetenvironmentstr "SSAO" -> ssaotargetstr in ( //remove previous params if any set ssaotargetstr.XMLsons = nil; XMLsetParam ssaotargetstr "technique" itoa ssaotechnique; XMLsetParam ssaotargetstr "filter" itoa ssaofilter; XMLsetParam ssaotargetstr "enable" (XMLgetBoolString ssaoenable); SO3ViewportSetSSAOTechnique viewport ssaotechnique; SO3ViewportSetSSAOFilter viewport ssaofilter; if (bShowWireMode) then ( set bLastSsaoMode = ssaoenable; ) else ( SO3ViewportSetSSAOEnabled viewport ssaoenable; 0; ); let sizelist ssaostr.XMLsons -> size in let 0 -> i in while (i < size) do ( let nth_list ssaostr.XMLsons i -> ssaoparam in ( let atof XMLgetParam ssaoparam "value" -> value in ( SO3ViewportSetSSAOTechniqueParameterValue viewport ssaotechnique ssaoparam.XMLvalue value; XMLaddMark xmlEditSceneFile ssaoparam.XMLvalue ssaotargetstr ["value" (XMLgetShortFloatToString value)]::nil nil; ); ); set i = i + 1; ); ); //HDR if hdrstr == nil then nil else let XMLgetMarkByValueFromMarkSons targetenvironmentstr "HDR" -> hdrtargetstr in ( XMLsetParam hdrtargetstr "enable" (XMLgetBoolString hdrenable); XMLsetParam hdrtargetstr "blurAmount" (XMLgetShortFloatToString blurAmount); XMLsetParam hdrtargetstr "effectAmount" (XMLgetShortFloatToString effectAmount); XMLsetParam hdrtargetstr "gamma" (XMLgetShortFloatToString gamma); SO3ViewportSetHDRBlurAmount viewport blurAmount; SO3ViewportSetHDREffectAmount viewport effectAmount; SO3ViewportSetHDRGamma viewport gamma; if (bShowWireMode) then ( set bLastHdrMode = hdrenable; ) else ( SO3ViewportSetHDREnabled viewport hdrenable; 0; ); ); // Define the names for the visibility layers. let XMLgetMarkByValueFromMarkSons envstr "layers" -> layersstr in if layersstr == nil then nil else let XMLgetMarkByValueFromMarkSons targetenvironmentstr "layers" -> layerstargetstr in { //remove previous layers if any set layerstargetstr.XMLsons = nil; // Copy main viewport layers params let sizelist layersstr.XMLsons -> size in let 0 -> i in while (i < size) do ( let nth_list layersstr.XMLsons i -> layerstr in let XMLgetParam layerstr "id" -> layerid in let XMLgetParam layerstr "name" -> layerName in let XMLgetParam layerstr "enable" -> layerenable in XMLaddMark xmlEditSceneFile "layer" layerstargetstr ["id" layerid]::["name" layerName]::["enable" layerenable]::nil nil; set i = i + 1; ); }; ); 0;; fun renderingRefreshSceneGraph(envstr, viewstr)= let V3DgetDefaultSession viewstr -> sessionstr in let V3DgetDefaultViewport viewstr -> defaultviewportstr in let defaultviewportstr.V3D_viewport -> viewport in let XMLgetMarkByValueFromMarkSons envstr "colourAmbient" -> ambientstr in let make_rgba (ftoi ((atof XMLgetParam ambientstr "r") *. 255.0)) (ftoi ((atof XMLgetParam ambientstr "g") *. 255.0)) (ftoi ((atof XMLgetParam ambientstr "b") *. 255.0)) 255 -> ambientcolor in let XMLgetMarkByValueFromMarkSons envstr "colourBackground" -> backstr in let make_rgba (ftoi ((atof XMLgetParam backstr "r") *. 255.0)) (ftoi ((atof XMLgetParam backstr "g") *. 255.0)) (ftoi ((atof XMLgetParam backstr "b") *. 255.0)) 255 -> backcolor in let XMLgetMarkByValueFromMarkSons envstr "SSAO" -> ssaostr in let atoi XMLgetParam ssaostr "technique" -> ssaotechnique in let atoi XMLgetParam ssaostr "filter" -> ssaofilter in let XMLgetBoolParam ssaostr "enable" -> ssaoenable in let XMLgetMarkByValueFromMarkSons envstr "HDR" -> hdrstr in let XMLgetBoolParam hdrstr "enable" -> hdrenable in let atof XMLgetParam hdrstr "blurAmount" -> blurAmount in let atof XMLgetParam hdrstr "effectAmount" -> effectAmount in let atof XMLgetParam hdrstr "gamma" -> gamma in ( V3DsetViewportColor defaultviewportstr backcolor; V3DsetAmbientLight sessionstr ambientcolor; if ssaostr == nil then nil else ( SO3ViewportSetSSAOTechnique viewport ssaotechnique; SO3ViewportSetSSAOFilter viewport ssaofilter; let sizelist ssaostr.XMLsons -> size in let 0 -> i in while (i < size) do ( let nth_list ssaostr.XMLsons i -> ssaoparam in ( let atof XMLgetParam ssaoparam "value" -> value in ( SO3ViewportSetSSAOTechniqueParameterValue viewport ssaotechnique ssaoparam.XMLvalue value; ); ); set i = i + 1; ); if (bShowWireMode) then ( set bLastSsaoMode = ssaoenable; ) else ( SO3ViewportSetSSAOEnabled viewport ssaoenable; 0; ); ); if (bShowWireMode) then ( set bLastHdrMode = hdrenable; ) else ( SO3ViewportSetHDREnabled viewport hdrenable; SO3ViewportSetHDRBlurAmount viewport blurAmount; SO3ViewportSetHDREffectAmount viewport effectAmount; SO3ViewportSetHDRGamma viewport gamma; 0; ); // Visibility layers of main viewport SO3ViewportSetVisibilityMask viewport 0xFFFFFFFF; ); 0;; fun renderingPlaySceneGraph(envstr, viewportstr)= let 0 -> mask in let XMLgetMarkByValueFromMarkSons envstr "layers" -> layersstr in { let sizelist layersstr.XMLsons -> size in let 0 -> i in while (i < size) do ( let nth_list layersstr.XMLsons i -> layerstr in let atoi XMLgetParam layerstr "id" -> layerid in let XMLgetBoolParam layerstr "enable" -> layerenable in set mask = mask | (layerenable << layerid); set i = i + 1; ); SO3ViewportSetVisibilityMask viewportstr.V3D_viewport mask; }; 0;; fun renderingDestroySetting(viewstr)= dsEdWindow winRenderingSetup; set winRenderingSetup = nil; let V3DgetDefaultViewport viewstr -> viewportstr in if !(SO3ViewportGetSSAODebugMode viewportstr.V3D_viewport) then nil else ( SO3ViewportSetSSAODebugMode viewportstr.V3D_viewport 0; SO3ViewportSetHDREnabled viewportstr.V3D_viewport bPreDebugHDRstate; ); 0;; fun renderingResetScene(sessionstr, viewportstr)= // reset to default values let viewportstr.V3D_viewport -> viewport in ( set bLastSsaoMode = 0; set bLastHdrMode = 0; SO3ViewportSetHDREnabled viewport 0; SO3ViewportSetHDRBlurAmount viewport 0.2; SO3ViewportSetHDREffectAmount viewport 0.4; SO3ViewportSetHDRGamma viewport 1.0; SO3ViewportSetSSAOEnabled viewport 0; SO3ViewportSetSSAOTechnique viewport SO3_SSAO_TECHNIQUE_CRYTEK; SO3ViewportSetSSAOFilter viewport SO3_SSAO_FILTER_NONE; SO3ViewportSetSSAOTechniqueParameters viewport SO3_SSAO_TECHNIQUE_CRYTEK ["cDefaultAccessibility" 0.5]::["cEdgeHighlight" 0.05]:: ["cOffsetScale" 0.2]::["cSampleInScreenspace" 0.0]:: ["cSampleLengthScreenSpace" 0.06]::["cSampleLengthWorldSpace" 0.15]::nil; // set the Ambient light color V3DsetAmbientLight sessionstr make_rgba iDefaultAmbiantRColor iDefaultAmbiantGColor iDefaultAmbiantBColor 255; // set the default background color V3DsetViewportColor viewportstr make_rgba iDefaultBackGroundRColor iDefaultBackGroundGColor iDefaultBackGroundBColor 255; ); 0;; fun cbTbBtnRenderSettingHelp(tbstr, check, btn, mask)= _openbrowserhttp SRENDER_SETTING_HELP_URL; 0;; /** cbDestroyRenderingSetupWin [EdWindow] I * callback on destroy rendering setting window * * private * * return 0 **/ fun cbDestroyRenderingSetupWin(winstr, viewport)= set winRenderingSetup = nil; if !(SO3ViewportGetSSAODebugMode viewport) then nil else ( SO3ViewportSetHDREnabled viewport bPreDebugHDRstate; SO3ViewportSetSSAODebugMode viewport 0; ); 0;; fun cbRenderingHDRenable(ctrl, value, p)= let p -> [viewstr val type scenemark] in let V3DgetDefaultViewport viewstr -> defaultviewportstr in let defaultviewportstr.V3D_viewport -> viewport in let XMLgetMarkByValueFromMarkSons scenemark "environment" -> envmark in let XMLgetMarkByValueFromMarkSons envmark "HDR" -> hdrmark in ( XMLsetParam hdrmark "enable" (XMLgetBoolString value); if (bShowWireMode || SO3ViewportGetSSAODebugMode viewport) then ( set bLastHdrMode = value; set bPreDebugHDRstate = value; ) else ( SO3ViewportSetHDREnabled viewport value; 0; ); ); 0;; fun cbRenderingHDRBlur(ctrl, value, p)= let p -> [viewstr val type scenemark] in let V3DgetDefaultViewport viewstr -> defaultviewportstr in let defaultviewportstr.V3D_viewport -> viewport in let XMLgetMarkByValueFromMarkSons scenemark "environment" -> envmark in let XMLgetMarkByValueFromMarkSons envmark "HDR" -> hdrmark in ( XMLsetParam hdrmark "blurAmount" (XMLgetShortFloatToString value); SO3ViewportSetHDRBlurAmount viewport value; ); 0;; fun cbRenderingHDREffect(ctrl, value, p)= let p -> [viewstr val type scenemark] in let V3DgetDefaultViewport viewstr -> defaultviewportstr in let defaultviewportstr.V3D_viewport -> viewport in let XMLgetMarkByValueFromMarkSons scenemark "environment" -> envmark in let XMLgetMarkByValueFromMarkSons envmark "HDR" -> hdrmark in ( XMLsetParam hdrmark "effectAmount" (XMLgetShortFloatToString value); SO3ViewportSetHDREffectAmount viewport value; ); 0;; fun cbRenderingHDRGamma(ctrl, value, p)= let p -> [viewstr val type scenemark] in let V3DgetDefaultViewport viewstr -> defaultviewportstr in let defaultviewportstr.V3D_viewport -> viewport in let XMLgetMarkByValueFromMarkSons scenemark "environment" -> envmark in let XMLgetMarkByValueFromMarkSons envmark "HDR" -> hdrmark in ( XMLsetParam hdrmark "gamma" (XMLgetShortFloatToString value); SO3ViewportSetHDRGamma viewport value; ); 0;; fun cbRenderingSSAOOnly(ctrl, value, viewport)= if (value) then ( set bPreDebugHDRstate = SO3ViewportGetHDREnabled viewport; SO3ViewportSetHDREnabled viewport 0; SO3ViewportSetSSAODebugMode viewport 4 ) else ( SO3ViewportSetHDREnabled viewport bPreDebugHDRstate; SO3ViewportSetSSAODebugMode viewport 0; ); 0;; fun cbRenderingSSAOenable(ctrl, value, p)= let p -> [viewstr val type scenemark] in let V3DgetDefaultViewport viewstr -> defaultviewportstr in let defaultviewportstr.V3D_viewport -> viewport in let XMLgetMarkByValueFromMarkSons scenemark "environment" -> envmark in let XMLgetMarkByValueFromMarkSons envmark "SSAO" -> ssaomark in ( XMLsetParam ssaomark "enable" (XMLgetBoolString value); if (bShowWireMode) then ( set bLastSsaoMode = value; ) else ( SO3ViewportSetSSAOEnabled viewport value; 0; ); ); 0;; fun cbRenderingSSAOParamChange(ctrl, value, p)= let p -> [technique paramName [viewstr val type scenemark]] in let V3DgetDefaultViewport viewstr -> defaultviewportstr in let defaultviewportstr.V3D_viewport -> viewport in let XMLgetMarkByValueFromMarkSons scenemark "environment" -> envmark in let XMLgetMarkByValueFromMarkSons envmark "SSAO" -> ssaomark in let XMLgetMarkByValueFromMarkSons ssaomark paramName -> parammark in ( XMLsetParam parammark "value" (XMLgetShortFloatToString value); SO3ViewportSetSSAOTechniqueParameterValue viewport technique paramName value; ); 0;; fun cbRenderingSSAOParamChangeCheck(ctrl, value, p)= let p -> [technique paramName [viewstr val type scenemark]] in let V3DgetDefaultViewport viewstr -> defaultviewportstr in let defaultviewportstr.V3D_viewport -> viewport in let XMLgetMarkByValueFromMarkSons scenemark "environment" -> envmark in let XMLgetMarkByValueFromMarkSons envmark "SSAO" -> ssaomark in let XMLgetMarkByValueFromMarkSons ssaomark paramName -> parammark in ( XMLsetParam parammark "value" (itoa value); SO3ViewportSetSSAOTechniqueParameterValue viewport technique paramName (itof value); ); 0;; fun fillRenderingSSAOTechniqueParameter(ctrltechnique, winfrmparameters, winstrparameters, p)= // Remove every control contained by winstrparameters dsEdWindowCtrlList winstrparameters.EDW_lControl; // Get parameters for this technique let getSelectedEdCtrlSelectPos ctrltechnique -> technique in let p -> [viewstr val type scenemark] in let V3DgetDefaultViewport viewstr -> defaultviewportstr in let defaultviewportstr.V3D_viewport -> viewport in let SO3ViewportGetSSAOTechniqueParameters viewport technique -> paramlist in let 10 -> ypos in let sizelist paramlist -> size in let 0 -> i in ( setEdWindowSize winfrmparameters 380 (25 * size + 30); setEdWindowSize winstrparameters 380 (25 * size + 20); while i < size do ( let nth_list paramlist i -> [paramName [paramDisplayName paramMinValue paramMaxValue paramValue]] in if (!strcmpi "cSampleInScreenspace" paramName) then ( let crEdCtrlCheck winstrparameters 10 ypos 360 20 (loc paramName) nil -> ctrlcheck in ( setEdCtrlCheckState ctrlcheck (ftoi paramValue); setEdCtrlCheckCbState ctrlcheck mkfun3 @cbRenderingSSAOParamChangeCheck [technique paramName p]; set ypos = ypos + 25; ); ) else ( let crEdCtrlLabel winstrparameters 10 (ypos + 2) 200 20 strcat (loc paramName) " :" nil -> labelParameter in let crEdCtrlFloat winstrparameters 220 ypos 140 20 paramValue paramMinValue paramMaxValue 0.0001 4 nil nil -> ctrlparam in ( setEdCtrlFloatCbChange ctrlparam mkfun3 @cbRenderingSSAOParamChange [technique paramName p]; set ypos = ypos + 25; ); ); set i = i + 1; ); ); 0;; fun cbRenderingSSAOTechnique(ctrlstr, pos, elem, p)= let p -> [[viewstr val type scenemark] winfrmparameters winstrparameters] in let V3DgetDefaultViewport viewstr -> defaultviewportstr in let defaultviewportstr.V3D_viewport -> viewport in let XMLgetMarkByValueFromMarkSons scenemark "environment" -> envmark in let XMLgetMarkByValueFromMarkSons envmark "SSAO" -> ssaomark in ( XMLsetParam ssaomark "technique" itoa pos; SO3ViewportSetSSAOTechnique viewport pos; //remove prevous params if any set ssaomark.XMLsons = nil; let SO3ViewportGetSSAOTechniqueParameters viewport pos -> ssaoparams in let sizelist ssaoparams -> size in let 0 -> i in while (i < size) do ( let nth_list ssaoparams i -> [name [_ minv maxv val]] in ( XMLaddMark xmlEditSceneFile name ssaomark ["value" (XMLgetShortFloatToString val)]::nil nil; ); set i = i + 1; ); fillRenderingSSAOTechniqueParameter ctrlstr winfrmparameters winstrparameters [viewstr val type scenemark]; ); 0;; fun cbRenderingSSAOFilter(ctrlstr, pos, elem, p)= let p -> [viewstr val type scenemark] in let V3DgetDefaultViewport viewstr -> defaultviewportstr in let defaultviewportstr.V3D_viewport -> viewport in let XMLgetMarkByValueFromMarkSons scenemark "environment" -> envmark in let XMLgetMarkByValueFromMarkSons envmark "SSAO" -> ssaomark in ( XMLsetParam ssaomark "filter" itoa pos; SO3ViewportSetSSAOFilter viewport pos; ); 0;; fun cbRenderingBackgroundColorSelected(ctrlstr, color, p)= if color == nil then nil else let p -> [viewstr val type scenemark] in let V3DgetDefaultSession viewstr -> sessionstr in let G2Dgetrgb color -> [r g b] in let ftoa ((itof r) /. 255.0) -> fr in let ftoa ((itof g) /. 255.0) -> fg in let ftoa ((itof b) /. 255.0) -> fb in let XMLgetMarkByValueFromMarkSons scenemark "environment" -> envmark in let XMLgetMarkByValueFromMarkSons envmark "colourBackground" -> colormark in ( XMLsetParam colormark "r" fr; XMLsetParam colormark "g" fg; XMLsetParam colormark "b" fb; V3DsetViewportColor (V3DgetDefaultViewport viewstr) G2Drgb2rgba color 255; ); 0;; fun cbRenderingAmbiantColorSelected(ctrlstr, color, p)= if color == nil then nil else let p -> [viewstr val type scenemark] in let V3DgetDefaultSession viewstr -> sessionstr in let G2Dgetrgb color -> [r g b] in let ftoa ((itof r) /. 255.0) -> fr in let ftoa ((itof g) /. 255.0) -> fg in let ftoa ((itof b) /. 255.0) -> fb in let XMLgetMarkByValueFromMarkSons scenemark "environment" -> envmark in let XMLgetMarkByValueFromMarkSons envmark "colourAmbient" -> colormark in ( XMLsetParam colormark "r" fr; XMLsetParam colormark "g" fg; XMLsetParam colormark "b" fb; V3DsetAmbientLight sessionstr G2Drgb2rgba color 0; ); 0;; fun cbRenderingLayerEnable(ctrl, value, p)= let p -> [[viewstr val type scenemark] layerindex] in let XMLgetMarkByValueFromMarkSons scenemark "environment" -> envmark in let XMLgetMarkByValueFromMarkSons envmark "layers" -> layersmark in let XMLgetMarkByParamValueFromMarkSons layersmark "id" (itoa layerindex) -> layermark in XMLsetParam layermark "enable" (XMLgetBoolString value); 0;; fun cbRenderingLayerNameChange(ctrl, value, p)= let p -> [[viewstr val type scenemark] layerindex] in let XMLgetMarkByValueFromMarkSons scenemark "environment" -> envmark in let XMLgetMarkByValueFromMarkSons envmark "layers" -> layersmark in let XMLgetMarkByParamValueFromMarkSons layersmark "id" (itoa layerindex) -> layermark in XMLsetParam layermark "name" value; 0;; fun cbTreeMenuSetRenderingSetup(mnuitem, p)= if winRenderingSetup == nil then nil else ( dsEdWindow winRenderingSetup; set winRenderingSetup = nil; ); let p -> [viewstr val type markstr] in let [400 590] -> [iw ih] in let _GETWorkingAreaSize -> [sw sh] in let _GETscreenPos -> [mx my] in let [(if ((mx + iw) > sw) then (sw - iw) else mx) (if ((my + ih) > sh) then (sh - ih) else my)] -> [x y] in let V3DgetDefaultSession viewstr -> sessionstr in let V3DgetDefaultViewport viewstr -> defaultviewportstr in let defaultviewportstr.V3D_viewport -> viewport in let G2Drgba2rgb (V3DgetAmbientLight sessionstr) -> ambcolor in let G2Drgba2rgb (V3DgetViewportColor defaultviewportstr) -> bgcolor in let SO3ViewportGetSSAOTechnique viewport -> ssaotechnique in let SO3ViewportGetSSAOFilter viewport -> ssaofilter in let XMLgetMarkByValueFromMarkSons markstr "environment" -> envmark in let XMLgetMarkByValueFromMarkSons envmark "SSAO" -> ssaomark in let XMLgetBoolParam ssaomark "enable" -> ssaoenable in let XMLgetMarkByValueFromMarkSons envmark "HDR" -> hdrmark in let XMLgetBoolParam hdrmark "enable" -> hdrenable in let atof XMLgetParam hdrmark "blurAmount" -> blurAmount in let atof XMLgetParam hdrmark "effectAmount" -> effectAmount in let atof XMLgetParam hdrmark "gamma" -> gamma in let 10 -> ypos in let setEdWindowIcon (crEdWindow _channel mainInterf.MINT_winMain x y iw ih WN_NOSCOL|WN_MENU|WN_SIZEBOX nil nil (loc "OS3D_0338")) sWinDlgIcon -> mwinstr in let crEdWindowToolBar mwinstr 0 0 iw 28 5 1 EdDefaultTheme.EDT_iToolBarColor ETB_HORIZONTAL -> tbstrhelp in let _LDalphaBitmap _channel _checkpack strcat APPBASEDIR "os3deditor/res/tb_help.png" -> apng in let crEdToolBarButton tbstrhelp apng ETB_ALIGN_RIGHT (loc "OS3D_0186") @cbTbBtnRenderSettingHelp -> tbhelp in let crEdScrollWindow _channel mwinstr 0 28 iw (ih - 28) WN_CHILDINSIDE|WN_VSCROLL EDWIN_RESIZE_MW|EDWIN_RESIZE_MH EDWIN_GROUP nil -> ewinstr in let crEdFrameWindow _channel ewinstr 0 0 (iw-20) 80 EDWIN_RESIZE_MW nil (loc "OS3D_0358") (loc "OS3D_0250") -> winfrm in let crEdWindow _channel winfrm 0 18 (iw-20) 60 WN_CHILDINSIDE|WN_NOBORDER EDWIN_RESIZE_MW nil nil -> winstr in let crEdCtrlLabel winstr 10 ((set ypos = 10) + 2) 160 20 (loc "OS3D_0075") nil -> labelbcolor in let crEdCtrlColorButton winstr 180 ypos 100 20 bgcolor 0 nil nil -> ctrlbgcolor in let crEdCtrlLabel winstr 10 ((set ypos = ypos + 25) + 2) 160 20 (loc "OS3D_0043") nil -> labelacolor in let crEdCtrlColorButton winstr 180 ypos 100 20 ambcolor 0 nil nil -> ctrlambcolor in let crEdFrameWindow _channel ewinstr 0 0 (iw-20) 130 EDWIN_RESIZE_MW nil (loc "OS3D_0185") (loc "OS3D_0250") -> winfrm in let crEdWindow _channel winfrm 0 18 (iw-20) 110 WN_CHILDINSIDE|WN_NOBORDER EDWIN_RESIZE_MW nil nil -> winstr in let crEdCtrlCheck winstr 10 (set ypos = 10) (iw - 20) 20 (loc "OS3D_0135") nil -> ctrlhdrenable in let crEdCtrlLabel winstr 10 ((set ypos = ypos + 25) + 2) 200 20 (loc "OS3D_0076") nil -> labelblur in let crEdCtrlFloat winstr 220 ypos 140 20 blurAmount 0.0 1.0 0.01 4 nil nil -> ctrlhdrblur in let crEdCtrlLabel winstr 10 ((set ypos = ypos + 25) + 2) 200 20 (loc "OS3D_0132") nil -> labeleffect in let crEdCtrlFloat winstr 220 ypos 140 20 effectAmount 0.0 1.0 0.01 4 nil nil -> ctrlhdreffect in let crEdCtrlLabel winstr 10 ((set ypos = ypos + 25) + 2) 200 20 (loc "OS3D_0173") nil -> labelgamma in let crEdCtrlFloat winstr 220 ypos 140 20 gamma 0.0 10.0 0.01 4 nil nil -> ctrlhdrgamma in let crEdFrameWindow _channel ewinstr 0 0 (iw-20) 130 EDWIN_RESIZE_MW nil (loc "OS3D_0348") (loc "OS3D_0250") -> winfrm in let crEdWindow _channel winfrm 0 18 (iw-20) 110 WN_CHILDINSIDE|WN_NOBORDER EDWIN_RESIZE_MW nil nil -> winstr in let crEdCtrlLabel winstr 10 ((set ypos = 10) + 2) 160 20 (strcat (loc "OS3D_0349") " ") nil -> labelTechnique in let crEdCtrlSelect winstr 180 ypos (iw - 210) 140 nil -> ctrltechnique in let crEdCtrlLabel winstr 10 ((set ypos = ypos + 25) + 2) 160 20 (strcat (loc "OS3D_0162") " ") nil -> labelFilter in let crEdCtrlSelect winstr 180 ypos (iw - 210) 140 nil -> ctrlfilter in let crEdCtrlCheck winstr 10 (set ypos = ypos + 25) (iw - 20) 20 (loc "OS3D_0136") nil -> ctrlssaoenable in let crEdCtrlCheck winstr 10 (set ypos = ypos + 25) (iw - 20) 20 (loc "OS3D_0392") nil -> ctrlssaoonly in let crEdFrameWindow _channel ewinstr 0 0 (iw-20) 30 EDWIN_RESIZE_MW nil (loc "OS3D_0347") (loc "OS3D_0250") -> winfrmparameters in let crEdWindow _channel winfrmparameters 0 18 (iw-20) 20 WN_CHILDINSIDE|WN_NOBORDER EDWIN_RESIZE_MW nil nil -> winstrparameters in let crEdFrameWindowEx _channel ewinstr 0 0 (iw-20) (25 * 32 + 35) EDWIN_RESIZE_MW nil (loc "OS3D_0218") (loc "OS3D_0250") 1 -> winfrm in let crEdWindow _channel winfrm 0 18 (iw-20) (25 * 32 + 15) WN_CHILDINSIDE|WN_NOBORDER EDWIN_RESIZE_MW nil nil -> winstr in ( set ypos = 10; let XMLgetMarkByValueFromMarkSons envmark "layers" -> layersmark in let XMLgetMarksByValueFromMarkSons layersmark "layer" -> layerlistmark in let 0 -> i in let sizelist layerlistmark -> size in while (i < size) do ( let XMLgetParam (nth_list layerlistmark i) "name" -> layername in let XMLgetBoolParam (nth_list layerlistmark i) "enable" -> layerenable in let crEdCtrlCheck winstr 10 ypos 20 20 "" nil -> ctrllayerenable in let crEdCtrlTextLine winstr 35 (ypos + 2) (iw - 20 - 55) 20 layername nil nil -> ctrllayername in ( setEdCtrlCheckState ctrllayerenable layerenable; setEdCtrlCheckCbState ctrllayerenable mkfun3 @cbRenderingLayerEnable [p i]; if (i < 10) then setEdCtrlTextLineEnable ctrllayername 0 else setEdCtrlTextLineCbChange ctrllayername mkfun3 @cbRenderingLayerNameChange [p i]; set ypos = ypos + 25; ); set i = i + 1; ); setEdWindowMinimumSize mwinstr iw 90; setEdWindowMaximumSize mwinstr iw nil; set winRenderingSetup = mwinstr; setEdCtrlColorButtonCb ctrlbgcolor mkfun3 @cbRenderingBackgroundColorSelected p; setEdCtrlColorButtonCb ctrlambcolor mkfun3 @cbRenderingAmbiantColorSelected p; setEdCtrlCheckState ctrlhdrenable hdrenable; setEdCtrlCheckCbState ctrlhdrenable mkfun3 @cbRenderingHDRenable p; setEdCtrlFloatCbChange ctrlhdrblur mkfun3 @cbRenderingHDRBlur p; setEdCtrlFloatCbChange ctrlhdreffect mkfun3 @cbRenderingHDREffect p; setEdCtrlFloatCbChange ctrlhdrgamma mkfun3 @cbRenderingHDRGamma p; setEdCtrlCheckState ctrlssaoenable ssaoenable; setEdCtrlCheckCbState ctrlssaoenable mkfun3 @cbRenderingSSAOenable p; setEdCtrlCheckCbState ctrlssaoonly mkfun3 @cbRenderingSSAOOnly viewport; fillEdCtrlSelect ctrltechnique "Crytek"::"Hemispheric"::"CreaseShading"::nil; selectEdCtrlSelectByPos ctrltechnique ssaotechnique; fillRenderingSSAOTechniqueParameter ctrltechnique winfrmparameters winstrparameters p; fillEdCtrlSelect ctrlfilter "None"::"Box"::"SmartBox"::nil; selectEdCtrlSelectByPos ctrlfilter ssaofilter; setEdCtrlSelectCb ctrltechnique mkfun4 @cbRenderingSSAOTechnique [p winfrmparameters winstrparameters]; setEdCtrlSelectCb ctrlfilter mkfun4 @cbRenderingSSAOFilter p; setEdwindowCbDestroy winRenderingSetup mkfun2 @cbDestroyRenderingSetupWin viewport; setEdToolBarVisible tbstrhelp 1; paintEdToolBar tbstrhelp; 0; ); 0;;