Procedural 3D & Shader Programming

1   2   3   4   5   6   7   8   9  

Projects and Due Dates (by Unit)

    C: debris procedural primitive [Unit 4A]
    C++: Arnold side-mask pattern node [Unit 7A]
    OSL: Arnold moom shading [Unit 10B]

week 1

Unit 1A
Basic 'C' Programming Language Concepts


This first session will concentrate on downloading, unzipping and distributing a number of Maya customization scripts. Also, the students installation of Maya, RenderMan, Visual Studio Community (Windows) or XCode (OSX) and Cutter will be checked.

How many of the following topics will be covered will depend on the number of "issues" encountered when confirming the students workstations are correctly configured.


  • course overview
  • intro to the 'C' programming language
  • compiling and linking a program using Cutter on Linux & OSX
  • compiling and linking a program using Cutter on Windows
  • how a constants handled (#define, const and enum)


Bring a first draft of your web portfolio index page to Unit 1B.
Unit 1B
Basic 'C/C++' Programming Language Concepts


Upload and review the student index pages.


week 2

Unit 2A
Basic 'C' Programming Language Concepts




Unit 2B
Procedural Primitives - 'C' Programming Language



  • distributing spheres in disks, cylinders and cones
  • assigning primvars in C++
  • using the PxrPrimVar node in HyperShade

week 3

Unit 3A/3B
Procedural Primitives - 'C' Programming Language




Unit 4A/4B
Procedural Primitives - 'C' Programming Language



SCAD RenderFarm: Copy this script userSetup.mel to your project directory scripts folder. For example,
Compile/Build your .dll and move it to the project directory,
Copy the to the project directory scripts folder,
In the DSO Name: field enter,
In the archives_path field enter,


week 4

Unit 5A
C++ Arnold Shader Plugins




Unit 5B
C++ Arnold Shader Plugins


Students present their debris procedural primitive technical breakdowns.

  • advanced 3D shading effects and user coordinate spaces

  Complete the side-mask pattern node ready for review Unit 6A.

week 5

Unit 6A
C++ Arnold Shader Plugins



  • developing 3D pattern plugins - using smoothstep for color ramps


Unit 6B
C++ Arnold Shader Plugins



  • developing the side mask technical breakdown


week 6

Unit 7A
Open Shading Language (OSL)



  • checking the value of the ARNOLD_PLUGIN_PATH environment variable
  • revision - Cutter & the Open Shading Language
  • revision - setting Cutter prefs for OSL shader writing
  • comparing Arnold C++ and OSL shader code
        - xxSideMask.cpp / xxSideMask.osl
Unit 7B
Revision: Open Shading Language


Students present their side-mask pattern technical breakdowns.

  • revision: 's' and 't' (RenderMan) and 'u' and 'v' (Arnold)
  • shading using surface orientation - Arnold


Complete the OSL: moom shading ready for Unit 8A.

week 7

Unit 8A
Open Shading Language



Download "". You are to write the following python procs:

Unit 8B
Open Shading Language





week 8

Unit 9A
Open Shading Language




Unit 9B
Open Shading Language



  • students will work on their moom shading assignment.


week 9

Unit 10A
Open Shading Language


Students will work on their moom shading assignment.

Unit 10B
Open Shading Language


Student presentation and review of the technical breakdowns of the moom shading assignment.