Renderman introduction
This presentation is the property of its rightful owner.
Sponsored Links
1 / 53

RenderMan (Introduction) PowerPoint PPT Presentation


  • 107 Views
  • Uploaded on
  • Presentation posted in: General

RenderMan (Introduction). Objective. Understanding of graphics algorithms Rendering pipeline Understanding of Technical Director’s role Learning the Shading Language Notion of Shader. Lecture Outline. Computer graphical Image Synthesis RenderMan – A Brief History Using BMRT The RIB File

Download Presentation

RenderMan (Introduction)

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Renderman introduction

RenderMan(Introduction)


Objective

Objective

  • Understanding of graphics algorithms

    • Rendering pipeline

  • Understanding of Technical Director’s role

  • Learning the Shading Language

    • Notion of Shader


Renderman introduction

Lecture Outline

  • Computer graphical Image Synthesis

  • RenderMan – A Brief History

  • Using BMRT

  • The RIB File

  • The Shading Language

  • Writing a Shader


Computer graphical image synthesis image synthesis

Computer graphical Image Synthesis : Image Synthesis

Three routes to image synthesis


Computer graphical image synthesis rendering

Computer graphical Image Synthesis : Rendering

A renderer being fed a scene description


Computer graphical image synthesis rendering1

Computer graphical Image Synthesis : Rendering

RenderMan converts RIB inputs into images

RIB: Renderman Interface Bytestream


Computer graphical image synthesis rendering2

Computer graphical Image Synthesis : Rendering

Object Space

Clipping

Culling

World Space

Final Result

Camera View

Stages in a classical rendering pipeline


The renderman history

The RenderMan History

  • Proposed by Pixar in 1989

  • Its design is based on

    • Lucasfilm’s REYES (Renders Everything You Ever Saw) in 1981

      (Pixar is originally the computer division of Lucasfilm)

    • Robert Cook’s Shade Trees [COOK84]

  • Since then RenderMan is referred as the industry standard of high-quality graphics production


What is renderman

What is RenderMan?

  • An open specification – anybody can implement the standard

    • Pixar RenderMan, BMRT, RenderDotC

  • A scenefile description for 3D rendering like PostScript is for 2D

  • Programmable shading language

  • C Programming Interface

    • Can be a standalone program or called from RIB.


What is renderman1

What is RenderMan

  • Separation of Modeling and Rendering

    • RenderMan serves as the interface.

  • Scene = Shape + Shading

    • Two “languages”

      • Geometry(Shape) - set of C subroutines

      • Shading - a C-like language

  • Geometry code can be run directly, or output to RIB file

  • Shading code is compiled to byte-code

  • The power of RenderMan is in the shading part


Movies containing renderman generated imagery

Movies containing RenderMan-generated imagery


Renderman interface

RenderMan Interface


Renderman interface1

RenderMan Interface

  • RenderMan Interface Bytestream (RIB): Geometry

    • The scene description language (.rib) can be created by a C program, generated by the modeler, or typed manually

    • The scene description file defined the geometry and some rendering parameters

  • Shading Language (SL): Shading

    • A skillful programmer develops the shader (.sl), a C-like program, to control how a surface is shaded. It is then complied to intermediate code (.slo)

    • The intermediate shader code is interpreted to control the shading process

  • The .rib and .slo are fed to the renderer for rendering


Renderman interface2

RenderMan Interface

RIB as an interface between modelers and renderers


Rib file structure

RIB File Structure


Rendering program

Rendering program

  • RenderMan compliant renderer

    • Pixar’s Photorealistic RenderMan (PRMan)

    • Exluna’s BMRT, Entropy

    • ART’s RenderDrive


Bmrt blue moon rendering toolkit

BMRT (Blue Moon Rendering Toolkit)

  • A free implementation of the RenderMan standard

    • A public-domain implementation of Pixar Photorealistic RenderMan (PRMan).

  • Three main components:

    • Rendrib: the renderer

    • Rgl: quick rendering for preview

    • Slc: shading language compiler

  • Download

    • Pixar Renderman BMRT Render 2.6.rar


How to install bmrt

How to Install BMRT

  • Unpack the BMRT Distribution

    • Choose a directory into which BMRT will be installed (e.g. “c:\BMRT2.6”)

  • Set BMRT Environment Variables

    • Variable: PATH Value:[…];C:\BMRT2.6\bin

      (i.e., add C:\BMRT2.6\bin to the end of the current PATH value.) 

    • Variable: BMRTHOMEValue: C:\BMRT2.6\ 

    • Variable: SHADERS  Value: C:\BMRT2.6\shaders


How to install bmrt1

How to Install BMRT

  • Testing BMRT

    • Command  cmd

      • C:\> cd BMRT2.6\examples  C:\BMRT2.6\examples\>

    • Test rgl

      • C:\BMRT2.6\examples\> c:\BMRT2.6\bin\rgl teapots.rib

        hit the esc key or q to close the window after it finishes rendering.

      • C:\BMRT2.6\examples\> c:\BMRT2.6\bin\rgl limbo.rib

    • Test slc

      • C:\BMRT2.6\shaders\> c:\BMRT2.6\bin\slc funkyglass.sl

      • C:\BMRT2.6\shaders\> c:\BMRT2.6\bin\slc screen_aa.sl

      • C:\BMRT2.6\shaders\> c:\BMRT2.6\bin\slc screen.sl

    • Test rendrib

      • C:\BMRT2.6\examples\> c:\BMRT2.6\bin\rendrib -d 16 shadtest.rib

        • The -d option to rendrib will display the results directly to the screen

        • press the w key while over the window to write out a TIFF file

        • the esc key or q will quit and close the window

    • Testiv

      • C:\BMRT2.6\examples\> c:\BMRT2.6\bin\iv balls1.tif


Using bmrt

Using BMRT

  • Rendrib – the command line renderer

    • Rendrib [flags] <filename>

      • -d

        • Forces display to screen

        • Put a number afterward and it will render in multiple passes

      • -v – verbose. Tells you more about what is happening while you render.

      • -stats – displays some statistics after rendering about CPU usage, etc.

  • Slc – the shading language compiler

    • Slc [flags] <filename>

      • -dso compile to machine code

      • -o name output to specified name


A simple scene

A Simple Scene

#min.rib - a minimal scene

Display "min.tiff" "file" "rgb"

Projection "perspective"

WorldBegin

Translate 0 0 2

Sphere 1 -1 1 360

WorldEnd

  • Making RIB

    • # : comment (주석)

    • Display

      • Create a file “min.tiff”

      • Color information “rgb”

      • “file”  write to “file”

        • “framebuffer”  on the screen

    • Projection

      • “perspective” projection

    • WorldBegin / WorldEnd

      • WorldBegin  prepare to draw

      • WorldEnd  the scene is finished

    • Transformation / Modeling

      • Translation  z 축으로 2만큼 이동

      • Sphere radius: 1, zmin: -1, zmax: 1,

        theta: 360


Transformation

Transformation

# beginend.rib

Display "beginend.tiff" "file" "rgb"

Projection "perspective"

WorldBegin

# move everything back 2 units

Translate 0 0 2

TransformBegin

# Everything that follows is one unit left

Translate -1 0 0

Sphere 1 -1 1 360

TransformEnd

TransformBegin

# Everything that follows is one unit right

Translate 1 0 0

Sphere 1 -1 1 360

TransformEnd

WorldEnd

  • Transformation

    • Translate x y z

    • Scale x y z

    • Rotate angle x y z

    • TransformBegin

    • TransformEnd


Color

Color

# Display "beginend.tiff" "file" "rgb"

Projection "perspective"

WorldBegin

Translate 0 0 2

Color [ 1 0 0 ]

AttributeBegin

Translate -1 0 0

Color [ 1 1 0 ]

Sphere 1 -1 1 360

AttributeEnd

#This resets the colour back to red

AttributeBegin

Translate 1 0 0

Sphere 1 -1 1 360

AttributeEnd

WorldEnd

  • Color

    Color [ red green blue ]  0~1

    • AttributeBegin : 속성 설정 시작

    • AttributeEnd : 속성 설정 종료


Color1

Color

  • Opacity

    Opacity [ red green blue ]

    0: Transparency (투명)

    1: Opaque (불투명)

Display "opacity.tiff" "file" "rgb"

Projection "perspective"

#PixelSamples 3 3

WorldBegin

#move everything back 2 units

Translate 0 0 2

Color [ 1 0 0 ]

AttributeBegin

        Translate -0.25 0 0

        Color [ 0 1 0 ]

        Opacity [ 0.5 0.5 0.5 ]

        Sphere 1 -1 1 360

AttributeEnd

AttributeBegin

        Translate 0.25 0 0

#        Opacity [ 0.3 0.3 0.3 ]

        Sphere 1 -1 1 360

AttributeEnd

WorldEnd


Camera setup

Camera Setup

  • Camera

    • Format : 이미지 크기

    • “fov”

      • Field of View

# fov.rib

Display "fov.tiff" "file" "rgb"

Format 640 480 1.0

Projection "perspective" "fov" [ 25 ]

# Projection "perspective" "fov" [ 90 ]

Translate 0 0 10

WorldBegin

        Sphere 2 -2 2 360

WorldEnd


Blocks

Blocks

  • WorldBegin, WorldEnd

  • FrameBegin, FrameEnd frameno

  • AttributeBegin, AttributeEnd

  • TransformBegin, TransformEnd

  • Stacking must always be balanced

    • AttributeBegin

    • TransformBegin

    • AttributeEnd

    • TransformEndis not legal


Simple surface

Simple Surface

  • Parametric Quadrics

    • Sphere

    • Cone

    • Cylinder

    • Disk

    • Hyperboloid

    • Paraboloid

    • Torus


Simple surface1

Simple Surface

  • Sphere

    Sphere <radius> <zmin> <zmax> <sweep_angle>

# sweep.rib

Display “sweep.tiff" “file" "rgb"

Projection "perspective"

WorldBegin

Translate 0 0 4

Sphere 2 -2 2 270

WorldEnd


Simple surface2

Simple Surface

  • Cylinder

    Cylinder <radius> <zmin> <zmax> <sweep_angle>

# Cylin.rib

Display "Cylin.tiff" "file" "rgb"

Projection "perspective"

WorldBegin

Translate 0 0 7

Rotate 90 1 0 0

Cylinder 2 -3 3 270

WorldEnd


Simple surface3

Simple Surface

  • Cone

    Cone <height> <radius> <sweep_angle>

# Cone.rib

Display "Cone.tiff" "file" "rgb"

Projection "perspective"

WorldBegin

Translate 0 -2.5 7

Rotate -90 1 0 0

Cone 5 2 90

WorldEnd


Simple surface4

Simple Surface

  • Paraboloid

    Paraboloid <radius_at_zmax> <zmin> <zmax> <sweep_angle>

# Para.rib

Display "Para.tiff" "file" "rgb"

Projection "perspective"

WorldBegin

Translate 0 -0.5 1.5

Rotate 90 0 1 0

Rotate -90 1 0 0

Paraboloid 0.6 0.0 1.0 360

# Paraboloid 1.0 0.25 0.9 330

WorldEnd


Simple surface5

Simple Surface

  • Hyperboloid

    Hyperboloid <x1> <y1> <z1> <x2> <y2> <z2> <sweep_angle>

# Hyper.rib

Display "Hyper.tiff" "file" "rgb"

Projection "perspective"

WorldBegin

Translate 0 0 2.0

Rotate 90 0 1 0

Rotate -90 1 0 0

Hyperboloid 0.15 -0.8 -0.5 0.25 0.25 0.6 360

# Hyperboloid 0.4 1.0 -0.5 0.5 0.5 1.0 300

WorldEnd


Simple surface6

Simple Surface

  • Torus

    Torus <major_radius> <minor_radius> <start_angle> <end_angle> <sweep_angle>

# Torus.rib

Display "Torus.tiff" "file" "rgb"

Projection "perspective"

WorldBegin

Translate 0 0 1.5

# Rotate -120 1 0 0

Torus 0.5 0.25 0 360 360

# Torus 0.6 0.1 0 360 120

# Torus 0.55 0.35 0 100 360

WorldEnd


Simple surface7

Simple Surface

  • Disk

    Disk <height_along_z> <radius> <sweep_angle>

# Disk.rib

Display "Disk.tiff" "file" "rgb"

Projection "perspective"

WorldBegin

Translate 0 0 1.0

Disk 0 0.5 360

# Disk 0 0.7 270

WorldEnd


Simple surface8

Convex

Concave

Simple Surface

  • Polygon

    Polygon "P" [...... points..]

    GeneralPolygon [ poly_vert# vert_hole1# vert_hole2# .....] “P” [....points...]

# GPolygon.rib

Display "GPolygon.tiff" "file" "rgb"

Projection "perspective"

WorldBegin

Translate -0.5 -0.5 1.0

GeneralPolygon [4 3]

"P" [ 0 0 0

1 0 0

1 1 0

0 1 0

0.1 0.1 0

0.9 0.1 0

0.5 0.9 0 ]

WorldEnd

# Polygon.rib

Display "Polygon.tiff" "file" "rgb"

Projection "perspective"

WorldBegin

Translate -0.5 -0.5 1.0

Polygon "P" [ 0 0 0

1 0 0

1 1 0

0 1 0 ]

WorldEnd


Simple surface9

Convex

Concave

Simple Surface

  • PointsPolygon

    PointsPolygon

    [ face1_vert# face2_vert# …. ]

    [ face1_index1 face1_index2 ….

    face2_index1 face2_index2 …. …. ]

    "P" [...... points..]

    PointsGeneralPolygon

    [2 (face, hole) 1 (no hole) ….]

    [ face1_vert# (face) face1_vert# (hole)

    face2_vert# (face) …. ]

    [ face1_index1 face1_index2 ….

    face2_index1 face2_index2 …. …. ]

    "P" [...... points..]

# PPolygon.rib

Display "PPolygon.tiff" "file" "rgb"

Projection "perspective"

WorldBegin

Translate 0 0 1.5

Rotate -10 1 0 0

PointsPolygons

[3 3 3 3] # 4 faces, each with 3 verts, 12 total

[2 1 0 1 0 3 2 0 3 2 1 3] # indices of the 12 verts

# following is the vertex array with (x,y,z) pt

"P" [ 0.664 0.000 -0.469

0.000 -0.664 0.469

0.000 0.664 0.469

-0.664 0.000 -0.469 ]

WorldEnd


Patches

Patches

# patch.rib

Display “patch.tiff" "file" "rgb"

Projection "perspective“ “fov” [20]

Translate -0.5 -0.5 3

WorldBegin

LightSource "ambientlight" 1

"intensity" [ 0.1]

LightSource "pointlight" 2

"from" [-2 2 -2]

"intensity" [ 7 ]

Color [ 1 0 0 ]

Surface "plastic"

Patch "bilinear" "P" [ 0 0 0

1 0 0

0 1 0

1 1 0]

WorldEnd

  • Patches

    • Provide curved surface

      Patch “type” “P” [...... points..]

    • Type : bilinear , bicubic

Ordering of Points


Patches1

Patches

  • Bilinear

#curved.rib

Display "curved.tiff" "file" "rgb"

Projection "perspective" "fov" [ 20 ]

Translate -0.5 -0.5 4

WorldBegin

LightSource "ambientlight" 1

"intensity" [ 0.1]

LightSource "pointlight" 2

"from" [-2 2 -2]

"intensity" [ 7 ]

Color [ 1 0 0 ]

Surface "plastic"

Patch "bilinear"

"P" [0 0 0

1 0 0

0.4 1 1 #MOVED BACK

0.6 1 -1] #MOVED FORWARDS

WorldEnd


Patches2

Patches

  • Bicubic

#cubic.rib

Display "cubic.tiff" "file" "rgb"

Projection "perspective" "fov" [ 30 ]

Translate -0.5 -0.5 3

WorldBegin

LightSource "ambientlight" 1

"intensity" [ 0.1]

LightSource "pointlight" 2

"from" [-2 2 -2]

"intensity" [ 10 ]

Color [ 1 0 0 ]

Surface "plastic"

Rotate 40 1 0 0

Patch "bicubic"

"P" [ 0 0 0 0.4 0 0 0.6 0 0 1 0 0

0 0.4 0 0.4 0.4 3 0.6 0.4 -3 1 0.4 0

0 0.6 0 0.4 0.6 -3 0.6 0.6 3 1 0.6 0

0 1 0 0.4 1 0 0.6 1 0 1 1 0]

WorldEnd


Lighting

Lighting

  • Lighting

    • Point light

    • Distant light

    • Spot light

    • Ambient light


Point light

Point light

intensity [7]

intensity [14]

  • Point light

    • Pointlight creates a light that shines equally in all direction

    • LightSource

      • “pointlight” : 점광원

      • “from” : 광원의 위치

      • “intensity” : 빛의 세기

    • 광원과 물체의 거리에 따라 빛 감쇠

    • Surface

      • 물체의 재질감표현

      • “plastic”: standard CGI shader

#pointlight.rib

Display "pointlight.tiff" "file" "rgb"

Format 640 480 1.0

Projection "perspective" "fov" [ 30 ]

Translate 0 0 5

WorldBegin

LightSource "pointlight" 1

"from" [ -2 2 -2 ]

"intensity" [ 7 ]

Surface "plastic"

Color [ 1 0 0 ]

Sphere 1 -1 1 360

WorldEnd


Illuminate

#illuminate.rib

Display "illuminate.tiff" "file" "rgb"

Projection "perspective" "fov" [20]

Translate 0 0 10

WorldBegin

LightSource

"pointlight" 1

"from" [4 3 -5]

"intensity" [16]

LightSource

"pointlight" 2

"from" [-4 3 -5]

"intensity" [16]

Surface "plastic"

Color [ 1 0 0 ]

AttributeBegin

Illuminate 1 1

Translate -0.5 0 0

Sphere 1 -1 1 360

AttributeEnd

AttributeBegin

Illuminate 1 0

Translate 0.5 0 0

Sphere 1 -1 1 360

AttributeEnd

WorldEnd

Illuminate

  • Illuminate

    • Illuminate [0/1] [0/1] [0/1] …

      • 광원 on/off


Distant light

Distant light

  • Distant light

    • LightSource

      • “distantlight”

      • “to” : 광원의 방향

    • 거리에 상관없이 빛의 세기 일정

#distantlight.rib

Display "distantlight.tiff" "file" "rgb"

Projection "perspective" "fov" [ 30 ]

Translate 0 0 5

WorldBegin

LightSource "distantlight" 1

"to" [ 1 0 0 ]

"intensity" [ 1 ]

Color [ 1 0 0 ]

Surface "plastic"

Sphere 1 -1 1 360

WorldEnd


Spot light

Spot light

delta [0.05]

delta [0.25]

  • Spot light

    • LightSource

      • “spotlight”

      • “from” : 광원의 위치

      • “to” : 광원의 방향

      • “coneangle” : out cone

      • “conedeltaangle” : inner cone

#spotlight.rib

Display "spotlight.tiff" "file" "rgb"

Projection "perspective" "fov" [ 30 ]

Translate 0 0 5

WorldBegin

LightSource "spotlight" 2

"from" [-2 2 -2]

"to" [ 0 0 0 ]

"intensity" [ 7 ]

"coneangle" [0.25]

"conedeltaangle" [0.05]

Color [ 1 0 0 ]

Surface "plastic"

Sphere 1 -1 1 360

WorldEnd


Ambient light

Ambient light

#spotambient.rib

Display "spotambient.tiff" "file" "rgb"

Projection "perspective" "fov" [ 30 ]

Translate 0 0 5

WorldBegin

LightSource "ambientlight" 1

"intensity" [ 0.1]

LightSource "spotlight" 2

"from" [-2 2 -2]

"to" [ 0 0 0 ]

"intensity" [ 7 ]

"coneangle" [0.25]

"conedeltaangle" [0.05]

Color [ 1 0 0 ]

Surface "plastic"

Sphere 1 -1 1 360

WorldEnd

  • Ambient light

    • LightSource

      • “ambientlight” : 주변광

      • “intensity” : 빛의 밝기

      • “color” [r g b] : 빛의 색깔

Ambient

Ambient & Spot light


Shading language

Shading Language

  • Many types of shaders are possible:

    • Light source shaders

    • Surface shaders

    • Atmosphere shaders

    • Volume shaders…etc.

  • We will discuss only the surface shaders.


Standard shaders

Standard Shaders

  • Standard Shaders

    • Constant

    • Matte

    • Metal

    • Plastic

    • Painted plastic

    • Displacement


Constant

Constant

#constant.rib

Display "constant.tiff" "file" "rgb"

Projection "perspective" "fov" [ 30 ]

Translate 0 0 5

WorldBegin

LightSource "ambientlight" 1

"intensity" [ 0.1]

LightSource "spotlight" 2

"from" [-2 2 -2]

"to" [ 0 0 0 ]

"intensity" [ 7 ]

"coneangle" [0.25]

"conedeltaangle" [0.05]

Color [ 1 0 0 ]

Surface "constant"

Sphere 1 -1 1 360

WorldEnd

  • Constant

    • “constant” : simplest surface

      • Simpler than the default shader

    • Surface “constant”


Matte

Matte

  • Matte

    • Simulate the diffuse scattering

      of light from a rough surface

    • Surface “matte”

#matte.rib

Display “matte.tiff" "file" "rgb"

Projection "perspective" "fov" [ 30 ]

Translate 0 0 5

WorldBegin

LightSource "ambientlight" 1

"intensity" [ 0.1]

LightSource "spotlight" 2

"from" [-2 2 -2]

"to" [ 0 0 0 ]

"intensity" [ 7 ]

"coneangle" [0.25]

"conedeltaangle" [0.05]

Color [ 1 0 0 ]

Surface “matte"

Sphere 1 -1 1 360

WorldEnd


Metal

Metal

  • Metal

    • Metal Objects

      • Reflect bright light, creating

        a sharp specular highlight

    • Surface “metal”

#metal.rib

Display “metal.tiff" "file" "rgb"

Projection "perspective" "fov" [ 30 ]

Translate 0 0 5

WorldBegin

LightSource "ambientlight" 1

"intensity" [ 0.1]

LightSource "spotlight" 2

"from" [-2 2 -2]

"to" [ 0 0 0 ]

"intensity" [ 7 ]

"coneangle" [0.25]

"conedeltaangle" [0.05]

Color [ 1 0 0 ]

Surface “metal"

Sphere 1 -1 1 360

WorldEnd


Plastic

Plastic

  • Plastic

    • Combine both a diffuse and

      a specular component

    • Surface “plastic”

# plastic.rib

Display “plastic.tiff" "file" "rgb"

Projection "perspective" "fov" [ 30 ]

Translate 0 0 5

WorldBegin

LightSource "ambientlight" 1

"intensity" [ 0.1]

LightSource "spotlight" 2

"from" [-2 2 -2]

"to" [ 0 0 0 ]

"intensity" [ 7 ]

"coneangle" [0.25]

"conedeltaangle" [0.05]

Color [ 1 0 0 ]

Surface “plastic"

Sphere 1 -1 1 360

WorldEnd


Painted plastic

Painted plastic

  • Painted plastic

    • Surface “paintedplastic”

    • “texturename” : 텍스춰

#painted.rib

Display "painted.tiff" "file" "rgb"

Projection "perspective" "fov" [ 30 ]

Translate 0 0 5

WorldBegin

LightSource "ambientlight" 1

"intensity" [ 0.1]

LightSource "spotlight" 2

"from" [-2 2 -2]

"to" [ 0 0 0 ]

"intensity" [ 7 ]

"coneangle" [0.25]

"conedeltaangle" [0.05]

Color [ 1 0 0 ]

Surface "paintedplastic"

"texturename" ["swirl.tiff"]

Rotate 90 1 0 0

Sphere 1 -1 1 360

WorldEnd

swirl.tiff


Displacement

Displacement

  • Displacement

    • Surface “plastic”

    • Displacement “dented”

      • In addition to a surface shader

#dented.rib

Display "dented.tiff" "file" "rgb"

Projection "perspective" "fov" [ 30 ]

Translate 0 0 5

WorldBegin

LightSource "ambientlight" 1

"intensity" [ 0.1]

LightSource "spotlight" 2

"from" [-2 2 -2]

"to" [ 0 0 0 ]

"intensity" [ 7 ]

"coneangle" [0.25]

"conedeltaangle" [0.05]

Color [ 1 0 0 ]

Surface "plastic"

Displacement "dented"

Sphere 1 -1 1 360

WorldEnd


  • Login