Friday, July 11, 2008

MOSAIC feature ramblings - part 4

Part 4 - The MOSAIC Utilities tab and shader fragments:


The "MOSAIC Utilities" tab is a collection of useful utilities for managing tasks that would be difficult to do by hand. This includes things like copying MOSAIC settings from object to object, batch managing of Blender text files, batch managing of render passes and scenes, and the creation and management of shader fragments. Before describing these utilities however I need to discuss a little about two things, shader fragments and render passes.

From the previous blog we've learned that shaders are simply text files that are compiled and used by the renderer, but in order for the renderer to use them it must be told how. In RIB files this simply involves calling the name of the shader with parameters that control different aspects of the shader, this is really no different then selecting a material in Blender (shader) and then adjusting its controls (shader parameters). Shader fragments in MOSAIC are nothing but RIB shader calls put in a Blender text file with a special extension in the name (see MOSAIC Settings "Fragment Filters" to see what they are). These files can be made by hand in Blender's text editor but as we'll see later it's far easier to use the "Generate Shader Fragment" utility instead ;)

Render passes is simply a technique of re-rendering a scene with different settings or setups to generate data to be used by the final "beauty" pass render (which is different then Blender's render layers). This poses a few problems with the exporter because there are many potential techniques that require some level of hand tweaking outside of automation. To get around this problem MOSAIC is using linked object scenes as render passes. Linked object scenes in Blender are simply copies of a scene with all object linked to the original, this way changes made in one scene affect the other. MOSAIC manages these scenes in the "Project Setup" tab which I will discuss in the next blog.

What I want understood for now is that render passes are scenes with special entries in the "Project Setup" tab, also note that unless you're doing advanced custom work most basic render passes can be generated for you by MOSAIC :)

OK, now onto the utilities, I'll list them like previous blogs but will expound on several more than usual.

Update Built-in Shaders/Frags:
MOSAIC automatically generates several built-in shader sources and fragments for the default shading system. This system allows MOSAIC to work "out-of-the-box" with Blender's material, light, and world settings. You can see these shaders and fragments by browsing Blender's text editor after starting MOSAIC. These files must always exist (since they are the defaults) and are automatically created if they don't exist or were deleted, however they are left alone if they already exist or are modified.


This works great unless you're opening an old project with old built-in shaders or accidentally damage them. Instead of having to select and delete the old ones by hand in the text editor (a real pain if you also already have a ton of custom shaders and fragments) you can simply click this to update all built-in shaders and fragments automatically.

Copy Properties:
This simple utility allows you to copy the MOSAIC settings from the active object to all other selected objects of the same type. So for instance if you select everything in the scene but the active object is a light then its settings are copied to all other lights in the selection but no geometry, etc.

Note : If you didn't already know, Blender allows multiple selections of objects but there is always one "active" selection that is usually visually a little lighter.

Clear Properties:
This utility does the opposite of the previous, it removes MOSAIC settings from all objects in the selection. It also doesn't care what the active object is, but just simply uses all objects in the selection. One special feature of this utility is if nothing is selected then it will remove all settings from everything in the entire project (including scenes), this is a great way to quickly reset an entire project.

Reload Texts:
Blender's text editor allows you to create text files but also allows you to load them from the file system. This is the common method you would use for loading shader source files to be used and distributed in your blend project. When texts are loaded in Blender it maintains a path to were the original file is. This utility uses that information in all text files in Blender's text editor to reload them from the originals (if they still exist). This is really handy if you've loaded shader sources generated by a shader utility (such as SLER or ShaderMan.next) that you are still editing externally. The process would go: tweak shader in the external editor, preview it, like it, click "Reload Texts" in MOSAIC, render our preview in Blender, continue over again, etc.

Save Texts:
This is the opposite of the previous utility. Instead of loading all Blender text files from their originals, it saves all Blender text files TO their originals (if they exits). This would be for the opposite process of editing and rendering text files in Blender but using them in an external utility.

Generate User AutoPass:
I'll cover render passes and autopasses in more detail in the next blog, but for now I'll just say this lets you build custom passes that you need MOSAIC to partially maintain for you. This utility will not only generate the scene with appropriate extensions, it will also add a render pass entry in the "Project Setup" tab for you.

Remove Pass:
In certain animation projects it's possible to have a pass with a lot of render pass entries. This can become a pain if you want to remove a scene and have to find and remove all the render pass entries. This utility will automatically remove a scene as well as all render passes entries that use it.

Cleanup Passes:
This utility aids in removing "orphaned" passes, this may happen if you change the name of an object or light and remove the old entries in the passes list but forget to remove the scene. This will remove any autopass scenes that do not have any entries in the render pass list effectively cleaning unused scenes in the project.

Generate Shader Fragment:
This utility is the corner stone to managing shaders in MOSAIC. Its job is to find shaders in your setup and turn them into shader fragments that you can then edit and attach to your project through MOSAIC. When you click this your will see a list of available shaders to generate a fragment from, this list is generated from two sources:

  • Lists all .sl shader source files it finds in the Blender text editor.

  • Lists all compiled shader files it finds in all enabled shader libraries (discussed in previous blog).


You can also select "MANUALLY ENTER" at the top of the list to type the name of a shader that you know is already available on the console from global system variables (most render packages have the standards setup by default).

Note : By enabling and disabling shader libraries, you can limit this list to just the group you want, however be sure to re-enable those libraries or their shader won't work. Once you select a shader MOSAIC will call the package's shader info binary to get a list of its parameters to generate a shader fragment from. If there's a problem you should check the console to see what caused the problem.

Shader Parameters:
This utility allows you select available shader fragments for editing and preview. To use this utility simply click the drop down menu and select a shader fragment to edit (notice that built-in shaders are always available). Once selected the parameters for the shader will show below the menu, you can also use the row of buttons to right of the selection as follows:

  • "R" allows you to reload the shader fragment (if you are editing it by hand in Blender's text editor).

  • "C" will create a new shader fragment from the current (the new fragment will be automatically selected when you finish).

  • "X" will delete the current shader fragment.

  • "P" will generate and render a special preview of the current shader selection and settings. Before previewing a dialog box will popup giving you a chance to tweak the preview scene.


Below these you will see a series of controls allowing you to select the type of shader, its name and its notes. Notes allow you to place notes in the fragment that can be seen throughout the rest of MOSAIC's interface anywhere that shaders are selected, this makes it easier to quickly remember how a shader works for the artists. Every row after that are the shaders parameters. Each row has the following controls:

  • "Use" allows you to disable this parameter from the fragment, this can be handy if you have an old renderer that doesn't like the syntax of this line (such as BMRT).

  • "TW" stands for "Token Wizard" and allows you to select from a list of available MOSAIC tokens based on shader type and parameter type. Tokens allow you to "hook" a Blender GUI control into this parameter. Each token name begins with a prefix that describes where it is in Blender's interface such as "World" or "Mat" and tries to use the exact name that Blender uses for that control. Depending on the token selected you can also set the texture channel and adjust Blender's control range into other ranges (such as adjusting a 0.0-0.1 range to 0-10 range). You can also just select "Shader Default" at the top of the TW menu and the wizard will return the value the shader author intended for default (a great way to safely reset a parameter).

    Note : The token discussion can get very lengthy so I'll cut it off here but I will elaborate eventually when I re-write the Wiki ;)

  • The parameters class.

  • The parameters type.

  • The parameters array allows you to specify an array of settings such as [2].

  • The parameters name.

  • The parameters value. This is where any generated tokens will go, your also welcome to hand type or adjust any tokens here as well as type just straight values.

    Note : This is just a text field so you'll need to type the value "exactly" as its needed in RIB including adding [] brackets, this is so any parameter syntax is possible.


Well that's it for the settings tab, as usual it was a lot longer then I figured but hopefully informative. For the next post I'll discuss using the "Project Setup" tab and render passes ;)

Thanks for reading, WHiTeRaBBiT

Thursday, July 10, 2008

MOSAIC feature ramblings - part 3

Part 3 - The MOSAIC Settings tab and shader libraries:


The "MOSAIC Settings" tab gives you a wide range of settings for defining exactly what and how MOSAIC exports. It allows you precise control over which RenderMan binaries are called and with which parameters, which RiSpec elements are exported in the RIBs, which default display codes are used, which file extensions are recognized, where projects are exported, it even allows you to change the prefixes used to recognize code fragments internally. Everything set in this tab is saved to the Blender registry so they are retained for all new projects.

To help make setting up MOSAIC for the most common RenderMan systems easy, there's also a preset menu at the top of the tab that automatically fills-in all controls based on your selection.

Before beginning the outline of the controls I also want to describe shaders and shader libraries. RenderMan shaders are simply text files written in a C like programming language that describe light, surface, displacement, volume and image shading to the renderer. Before a renderer can use these source files they have to be compiled into something the renderer understands.

To use shaders in your project you'll either need to load shader source files into Blender's text editor (MOSAIC will automatically see and compile these files) or put the shader sources and/or pre-compiled shaders in a folder and add a shader library to point to it the "Add Shader Library" at the bottom of this tab allows you to do this and will do a couple of things:

  • It will add that path to the "searchpath" Option in the exported RIB files making all compiled shaders in that path accessible to all RIBs.

  • It will automatically list any compiled shaders in that path in the "Generate Shader Fragment" utility.


To create a library just click the "Add Shader Library" button and then navigate your file system to the path that contains your shaders. When done MOSAIC will add each library to the bottom of the tab. Once you create a shader library you will notice several things from the interface:

  • You can enable and disable each library, allowing you to limit which shaders are available to the "Generate Shader Fragment" utility (if you group your shaders in folders by type then this can be used to limit selections to certain shader types).

  • You can compile all shader sources in this path. This is extremely helpful when dealing with large numbers of shader sources. A great way to get started using this quickly is to add libraries for each folder in the "shaders" folder that comes with MOSAIC and compile each one and you'll have a whole slew a new shaders to play with :)

  • The last control lets you delete each shader library entry.

    Note : This only deletes MOSAIC's reference to the shaders,
    not the shaders or paths themselves.


Now that we have an idea about what this tab does let's outline what each control does.

Renderer Presets:
This allows you to select which renderer you want to automatically setup.

Renderer Binary:
This allows you to specify how you want the renderer to be called.

Note : You can use the <RIB> token to tell MOSAIC to insert the RIB file call in-between custom parameters otherwise the RIB file is appended to the end.

Shader Compiler:
This allows you to specify how you want shaders to be compiled.

Note : You can use the <SHADER> token to tell MOSAIC to insert the shader file call in-between custom parameters otherwise the shader file is appended to the end.

Texture Optimizer:
This allows you to specify how you want textures to be optimized.

Note : You can use the <TEXIN> and <TEXOUT> tokens to tell MOSAIC to insert the texture file calls in-between custom parameters otherwise the input and output files are appended to the end.

LatEnv Optimizer:
This is the same as above but allows you to specify special optimizing commands for optimizing latitude/longitude maps.

Shader Info:
This allows you to specify how shader info is called. This calls a special binary that comes with most RenderMan system that will display verbose shader parameters on the console when passed a compiled shader. MOSAIC's "Generate Shader Fragment" uses this utility to generate shader fragments automatically.

Note : The fragment utility only understands BMRT style info output, the default for most info utilities but some require special parameters to produce this kind of output.

Shader Extension:
Which extension does this renderer use for compiled shaders?

RIB File Extension:
Which extension does this renderer use for RIB files (usually always .rib)?

Texture Extension:
Which extension does this renderer use for optimized maps (usually always .tx)?

Fragment Filters:
This allows you to change which prefix MOSAIC uses to identify text fragments with. You can use this to change each of the 8 fragment types individually (if maybe an existing prefix interferes with your naming conventions). In practice you should probably never mess with these unless in an emergency.

File Display:
This allows you to specify the default file display code used for creating new scenes.

Note : You can use the <###> token for inserting frame numbers in file names and also add a '#' to the beginning of the code to disable this in the scene's display list.

Frame Display:
This allows you to specify the default framebuffer display code used for creating new scenes.

Note : You can use the <###> token for inserting frame numbers in file names and also add a '#' to the beginning of the code to disable this in the scene's display list.

Depth Display:
This allows you to specify the depth file display code used for creating new shadow maps.

Note : You can use the <###> token for inserting frame numbers in file names and also add a '#' to the beginning of the code to tell MOSAIC this renderer does not support shadow maps.

Append Display:
This allows you to specify the appended depth file display code used for creating new occlusion maps.

Note : You can use the <###> token for inserting frame numbers in file names and also add a '#' to the beginning of the code to tell MOSAIC this renderer does not support occlusion maps.

Deep Display:
This allows you to specify the deep depth file display code used for creating new deep shadow maps.

Note : You can use the <###> token for inserting frame numbers in file names and also add a '#' to the beginning of the code to tell MOSAIC this renderer does not support deep shadow maps.


Exporter Switches:
This will popup a dialog box full of toggles that control the exporter states for export of all RIB structures and features. This can allow you to almost completely disable all internal RIB structures making it possible to get MOSAIC to work with even "loosely" compliant renderers.

Embed Above Settings In Project:
This very handy feature lets you embed all the above settings directly into the current blend file instead of in the local Blender registry. This makes it possible to distribute your MOSAIC settings along with the blend file. Once enabled any changes made to the above settings will only effect the embedded registry and will not effect the Blender registry. Once un-toggled, the embedded registry is destroyed and the Blender registry is used restored.

Export Directory:
This is the directory that all MOSAIC projects will be exported into, default is "/tmp" just like Blender's export directory.

Add Shader Library:
This will add multiple shader library paths to aid in shader management (see above description for more details).

Well that's it for this rambling, next post will focus on the "Project Setup" tab as well as discuss how render passes work in MOSAIC.

Thanks for reading, WHiTeRaBBiT

Wednesday, July 09, 2008

MOSAIC feature ramblings - part 2

Part 2 - The MOSAIC Actions tab and export process:


The "MOSAIC Actions" tab is the first tab in the interface (expanded by default) and is designed for quick access to the most common export related actions. It consists of several action buttons as well as a series of toggles for quick control of the export process. These toggles are meant to speed up exporting by controlling what gets exported as well as aid in building RIB packages for external use. As such the toggle states are only temporary and are not saved in registry nor do they control internal exporter states (those can be controlled in the MOSAIC Settings tab).

Now that I've defined what this tab is for let's talk a little about how MOSAIC exports. RenderMan compliant renderers read text files that use the .rib extension that contain RiSpec descriptions of the scene, objects, lights, meshes, materials, etc. The exporter creates these RIB files by cycling through everything in the project (datablocks) and translating them into text according to their MOSAIC settings (datablock properties), using defaults if there are no settings. This works very well in that the exporter doesn't need to maintain the entire scene in memory separately but instead just reads it from Blender.

These text files are exported in the folder specified by the export directory button in the MOSAIC Settings tab and the project folder specified in the Project Setup tab. The default export directory is "/tmp/" (like Blender) and the default project folder is "Mosaic", so the files will be exported to "/tmp/Mosaic". If the folder does not exist it will be created, also note that all projects will export to the export directory but each project can have a different project folder so its possible to export and render multiple projects at the same time (if you give them different project folders). The exporter will then create several folders in the project folder:

  • Project Folder - contains main RIBs, renders and batch/shell scripts

  • Archives - contains all RIB archives

  • Cache - contains temporary export data such as depth files and shader info

  • Maps - contains textures, optimized maps, and generated maps

  • Shaders - contains shader source and compiled shaders

The Archives folder also contains the following folders which are self explanatory:

  • Cameras

  • Geometry

  • Lights

  • Materials

  • Objects

  • Scenes

RIB files have a feature called read archive that allows one RIB to call another RIB, by default the project is setup to use read archive (which is why the project is broken down into several folders). The basic RIB flow is: the project starts as a main RIB in the project folder which calls a scene RIB in the Archives/Scenes folder which in turn calls RIBs from the other folders as needed. MOSAIC attempts to use instancing through this mechanism to minimize the number of necessary RIBs as much as possible. It's possible to use other archiving methods by selecting "Read Archive", "Delayed Archive", "Instance Object" and "Inline Code" where available (see the RiSpec for differences between these). The "Inline Code" selection is used to tell MOSAIC to "inline" the code in the next connecting RIB in the chain, for instance if the entire project is set to "inline" then everything will be exported into the main RIB. These archiving methods can be mixed however you like :)

Now that we know the basics of where and how the project is exported to RIB let's outline how the action controls effect the export process.

(R)ender Current Frame/Passes:
This will render the current frame as well as any render passes using the current frame.

Render (A)nimation/Passes:
This will render an animation using all frame ranges to all passes or Blender's Sta to End if no passes exist.

(P)review Selected Object/s:
This handy feature will only render the current selections from the same perspective as your last used Blender 3D view window using all scenes, lights and any data already created for scene (such as shadow maps, occlusion maps, photon maps, brick maps, etc). This is great for zooming in or looking behind an object for tweaking independently.

Purge Export Project Folder:
This will completely remove the project folder and everything in it effectively "cleaning" it. This is handy for preparing a RIB package (where you don't want anything unnecessary in it), or purging any potentially unused RIB files (from changing object names etc). This is also helpful because sometimes the exporter will get confused when old unused RIB files begin to clutter the project folder.

Note : MS Windows likes to lock folders for no apparent reason, so if you get an error it usually means that everything in the project folder is removed but the project folder itself wasn't (which is fine).

Render RIB Files:
Call the renderer to render the RIB files after export.

Generate RIB Files:
Generate the RIB files to render, this is handy if you already have the RIB files or you're tweaking them by hand and just want to render them.

Export Render Passes:
Whether or not to include the render passes during export. This is handy if you've already exported the passes in an animation but only want to export the current scene.

Update Auto Passes:
If on, MOSAIC will automatically rebuild auto pass scenes using their filters before exporting, this insures that changes to the beauty scene will be updated in auto map scenes. It's sometimes handy to turn this off if you don't want the content of an auto map to update.

Export SL:
Lets you controls whether .sl and .h shader files in Blender's text editor are exported.

Compile SL:
Do you want to compile any shader sources exported ? This is handy when you just want the sources for a clean RIB package or have already compiled the shader and don't want to do it every time.

Export Maps:
Do you want to export any images in Blender's image editor ? Which images are exported and how they are optimized can be controlled form the Project Setup tab.

Optimize Maps:
Do you want to optimize the exported images ? This is handy when you just want the sources for a clean RIB package or have already optimized the images and don't want to do it every time.

Only Select:
This feature tells the exporter to only generate RIB for the selected objects. This is primarily meant to exclude complex objects that have already been exported that may be very slow to export. No matter what's selected the underlying scene RIBs as well as lights and material RIBs are always exported.

gzip RIBs:
This simply compresses the text RIB files with GZip. Many RenderMan renderers automatically support GZip compressed file input, this can greatly reduce project file size which is very important for large projects rendered over a farm.

Generate Log:
This will generate stdout and stderr output logs called OUTPUTLOG.TXT and ERRORLOG.TXT for the renderer, shader compiler and texture optimizer. These logs will be placed in the project folder for the renderer, Shaders folder for compiler, and Maps folder for the optimizer. This is of course handy for debugging problems from the command line or sending error logs to developers.

Batch Scripts:
This is mainly intended to aid in distributing RIB packages. Depending on which kind of scene you're exporting you can end up with a lot of main RIBs and it becomes impossible to know which ones to render in what order for the passes. This generates a Windows .bat batch script and a Unix .sh shell script that can automatically render the RIBs in the right order.

(H)elp:
Starts Blender's script help browser (just has a few MOSAIC web sites for online references).

(Q)uit:
I think you can guess this one ;)

One last note, a very handy benefit of using RenderMan for your projects is RIB's universality and the availability of tools and information. This allows you to package your scenes for distribution for many purposes, such as sending a test project for a bug report or analysis, or packaging a scene to be sent to a render farm, or testing a scene under a wide variety of renderers and features, or even sending a project for help on what you're doing wrong. If you send the blend file only then only a Blender user can communicate with you, but if you send RIB packages then many people can communicate with you (including Blender users). To create a fresh RIB package for universal distribution the process would be:

  • Be sure that any shaders the project needs are either available to where you're sending the RIB package or include their sources in Blender so they'll be exported.

  • Click "Purge Export Project Folder" to completely clear any existing data

  • Make sure to ENable "Generate RIB Files", "Export Render Passes", "Update Auto Passes", "Export SL", "Export Maps", "Generate Log" and "Batch Scripts".

  • Make sure to DISable "Render RIB Files", "Compile SL", "Optimize Map".

Once exported compress the project folder and distribute the archive anywhere you need.

Phew, this was a long one... next post will be about the settings tab and how MOSAIC deals with render presets, export toggles and shader libraries.

Thanks for reading,
WHiTeRaBBiT

Tuesday, July 08, 2008

MOSAIC feature ramblings - part 1

Greetings RenderMan enthusiasts,


After a great deal of work I've decided it's time to start documenting some of the features that have been added to MOSAIC since the first download package was released 9 months ago. At this point there's a bunch of new features that aren't mentioned in the Wiki and I still have a way to go before I can update it... so in the mean time I thought it would be good to write a series of blogs that are loosely structured explanations instead.

These will just be ramblings of anything I feel is helpful or I'm concerned will be forgotten, which will hopefully help me document and structure my thoughts for re-writing the Wiki later on. I'm not sure how many posts I will do but I plan on beginning with not so obvious features in Blender then covering MOSAIC tab by tab, and finally pulling it together to show some basic techniques.

Let me also say that some of the things I will mention involving direct integration in Blender are likely to change as I'm currently rewriting the built-in shaders to directly access most of Blender's important settings "out-of-the-box"... so let's get started :)

Part 1 - Overview of MOSAIC and obscure features:



I want to start off talking about several features that MOSAIC uses in Blender that some of you may or may not know are there! First let's cover some boring ground now to make it clearer later on, Datablocks. Blender stores the elements of a project internally into what are called datablocks. These datablocks are organized in a hierarchy according to the structure within the project itself:

  • Scenes

  • Objects

  • Meshes

  • Materials

  • Textures

  • Images

One very simple way to see this structure is to browse a project with Blender's outliner. This is important because all settings in MOSAIC's GUI are stored in them, this is key because the structure of MOSAIC's data is aligned to the datablocks in Blender which loosely represents the RIB scene's structure.



OK, enough tech rambling, if I didn't confuse you too much let's talk about what all this means to you.

Blender has a very interesting feature in the "file" menu called "append or link".

This allows you to either append (insert into your project) or link (constantly use from another project) datablocks from other blend files. This is of key importance because it allows building large libraries of content separately and then pull them together later.

One good example of using this is building a model that uses displacement baking.

To do this you would need a high res sculpted model and a low res SDS model that the high res is baked to at world origin. You couldn't rig and use the object without destroying the setup necessary to remake it (which means you wouldn't be able to tweak it later).

Instead you could setup a blend file for the baking and then link in the finished model, materials and textures to another project for rigging and animating, any changes you made to the baking project would automatically show up in other linked projects.

This will also work cleanly in MOSAIC because all properties related to RenderMan and MOSAIC are linked to the datablocks directly, so for instance all MOSAIC material tab settings would link with materials from other projects, etc.

Note : If you're techy and curious you can run a script in Blender's help menu called "ID Property Browser" that will let you browse MOSAIC settings on the datablocks directly.

This has been handy when trying to migrate old projects to a new version of MOSAIC with different property keys ;)











Another handy feature is MOSAIC's translation of border rendering.

This is the equivalent of RenderMan's RiCropping and allows rendering just a select region of the full render.

This is accessed in Blender by going to the "Render" menu, selecting "Set Render Border" and then clicking and dragging the region on the active 3D camera view window you want to crop.

MOSAIC automatically uses the cropping region for the current active camera per scene per pass as used.

To disable cropping in Blender goto the "Buttons" window and disable the "Border" toggle in the scene's "Render" tab.







One very hidden feature in MOSAIC is bounds visualization rendering. This is a scene debugging tool I've added to help visualize bound boxes during render. RenderMan renderers can be very picky about object bound boxes (especially when multiple objects bounds cross).


If you select an object in 3D view and go to the "Buttons" window and select the "Object" and "Object Buttons" panel you can change the objects draw type to "Bounds". Blender will show the object as just a bounds box, but if you render in MOSAIC you'll get the object surrounded in a blue transparent bounds box. This can also be handy for getting an idea of how much DisplacementBound to add.


A very important tool to MOSAIC (if you're doing custom code fragment work) is Blender's text editor. This can be accessed in Blender by just changing one of your windows to the text editor. This is just a normal text editor inside Blender with a few important exceptions, first, any texts created in the Blender project are automatically saved in the blend file regardless of whether they are saved to the file system (this includes texts loaded from the file system), and second, Python scripts have full access to these text files.


MOSAIC looks at the name of the text files to see if any are intended for use in MOSAIC, if a text name begins with "cf_", "ss_", "ds_", "ls_", "vs_", "is_" or ends with ".sl" or ".h" then MOSAIC will show it in the corresponding fragment menus or will compile it as a shader according to the extension (these can be changed to anything you want in the setup tab but not recommended).


Most of the code shader fragments can be automatically created and maintained in MOSAIC's utilities tab but can be edited by hand if you wish, "cf_" code fragments can contain any code you wish including MOSAIC tokens and can be inserted at the beginning or end of a RIB sections according to the menus in MOSAIC's interface. The code you write will be inserted in the RIB stream "as-is" with no rules or restrictions. MOSAIC tokens are primarily intended to be used in shader fragments and can be easily used in shader parameters in MOSAIC's utilities tab but they can also be typed by hand in any code fragment.





I also wanted to mention a few notes on MOSAIC's GUI.

Almost every control in the interface has a tooltip, if you're not sure what something does just look for a tooltip.

The GUI is intended to be used vertically but can semi-successfully be used horizontally.

The entire interface is broken down into color coded horizontal tabs prioritized from top to bottom.

Each tab can be expanded and collapsed by clicking it with the mouse.

When tabs pass beyond the current window the mouse wheel and up/down arrow keys can be used to scroll the entire GUI.

The "r", "a", and "p" keys are hot keys to call render, animate and preview.

Also you can right click and call the preview as well as collapse and expand all windows.

Something else to mention is if you have a Scene, Camera, Geometry, Lights or Material tab open and you change your selection in Blender the contents of those tabs will update the moment your mouse crosses back over MOSAIC ;)

When exporting the progress bar will scroll and report its progress, you can also get more detailed info during export by watching the console (as well as error reports and warnings).



Well that's it for now, next post I'll begin discussing some of the new and old features of MOSAIC's render tab :)

Thanks for reading,
WHiTeRaBBiT