SlideShare une entreprise Scribd logo
1  sur  61
CS 354
Vector Graphics &
Path Rendering
Mark Kilgard
University of Texas
April 10, 2012
CS 354                                        2



         Today’s material
        In-class quiz
            On Bézier curves lecture
        Lecture topic
          Project 3
          Vector graphics & path rendering
CS 354                            3



         My Office Hours
        Tuesday, before class
            Painter (PAI) 5.35
            8:45 a.m. to 9:15
        Thursday, after class
            ACE 6.302
            11:00 a.m. to 12


        Randy’s office hours
            Monday & Wednesday
            11 a.m. to 12:00
            Painter (PAI) 5.33
CS 354                                               4



         Last time, this time
        Last lecture, we discussed
            Bezier curves
        This lecture
          Resolution-independent 2D graphics
          Path rendering
        Projects
          Schedule demos with TA for Project 2
          Project 3 due Wednesday, April 18, 2012
                 Get started!
CS 354                                                                        5

                                 On a sheet of paper
         Daily Quiz              • Write your EID, name, and date
                                 • Write #1, #2, #3, followed by its answer
        How many control points           Multiple choice:
         are used to define a cubic         Geometric continuity
         Bézier curve?                      across two curved
                                            segments always means
        Multiple choice: What
         percent of a Bézier curve          a) The two segments are
         is contained within the            identical
         convex hull of its control
                                            b) The shared end points
         points?                            of the segments have the
                                            same tangent magnitude
         a)   33.33%
         b)   50%                           c) The shared edge points
         c)   66.66%                        have the identical tangent
         d)   100%                          directions
                                            d) The shared end points
                                            are Euclidean variant
                                            means
CS 354                                             6



         Project 3
        Accept Biovision Hierarchy (BVH) files
         containing motion capture data
            Hierarchy of affine transformations
        Visualize a stick figure
            Animate the figure
CS 354                                                    7



         Vector Graphics
      Confusing term
      Used to describe several kinds of graphics
            Wireframe rendering



            Plotting or calligraphic rendering

                                     HP DesignJet



            Resolution-independent 2D graphics

                         Scalable Vector Graphics (SVG)
CS 354                                                                                    8



         Taxonomy of Rendering
                                          scene
                                       dimensionality

                                  2D                3D


                     resolution                          processes primitives
                  independence                               or samples


           independent      dependent                    primitives    samples

       path                    2D primitive         3D primitive                  ray
     rendering                 rasterization        rasterization               tracing

   Examples                    Examples            Examples                Examples
   PostScript, PDF,            GDI, Xlib           OpenGL,                 Mental Ray
   SVG, TrueType,                                  Direct3D
   Adobe Flash,
   Microsoft Silverlight,    Notice large number of path rendering standards
   Apple Quartz 2D
CS 354                                                                     9



         Path Rendering Standards
Document       Resolution-   Immersive      2D Graphics     Office
Printing and   Independent   Web            Programming     Productivity
Exchange       Fonts         Experience     Interfaces      Applications

                                               Java 2D
                                               API
               OpenType        Flash
                                                 QtGui
                                                 API

               TrueType
                                 Scalable      Mac OS X
                                 Vector        2D API     Adobe Illustrator
                                 Graphics


Open XML
Paper (XPS)                                                  Inkscape
                                                           Open Source
CS 354                                                                                       10
                                         scene
                                      dimensionality

                                   2D                  3D


                     resolution                             processes primitives
                  independence                                  or samples

            independent      dependent                      primitives    samples

           path                 2D primitive       3D primitive                      ray
         rendering              rasterization      rasterization                   tracing

   Examples                     Examples           Examples                   Examples
   PostScript, PDF,             GDI, Xlib          OpenGL,                    Mental Ray
   SVG, TrueType,                                  Direct3D
   Adobe Flash,
   Microsoft Silverlight,
   Apple Quartz 2D


                            GPUs already excel at these rendering paradigms
11

         3D Rendering vs. Path Rendering
CS 354



 Characteristic                  GPU 3D rendering                        Path rendering
 Dimensionality                  Projective 3D                           2D, typically affine
 Pixel mapping                   Resolution independent                  Resolution independent
 Occlusion                       Depth buffering                         Painter’s algorithm
 Rendering primitives            Points, lines, triangles                Paths
 Primitive constituents          Vertices                                Control points
 Constituents per primitive      1, 2, or 3 respectively                 Unbounded
 Topology of filled primitives   Always convex                           Can be concave, self-intersecting,
                                                                         and have holes
 Degree of primitives            1st order (linear)                      Up to 3rd order (cubic)
 Rendering modes                 Filled, wire-frame                      Filling, stroking
 Line properties                 Width, stipple pattern                  Width, dash pattern, capping, join
                                                                         style
 Color processing                Programmable shading                    Painting + filter effects
 Text rendering                  No direct support (2nd class support)   Omni-present (1st class support)
 Raster operations               Blending                                Brushes, blend modes,
                                                                         compositing
 Color model                     RGB or sRGB                             RGB, sRGB, CYMK, or grayscale
 Clipping operations             Clip planes, scissoring, stenciling     Clipping to an arbitrary clip path
 Coverage determination          Per-color sample                        Sub-color sample
CS 354                                                                                      12
                                        scene
                                     dimensionality

                                  2D                  3D


                     resolution                            processes primitives
                  independence                                 or samples

            independent     dependent                      primitives    samples

           path                2D primitive       3D primitive                      ray
         rendering             rasterization      rasterization                   tracing
   Examples                    Examples           Examples                   Examples
   PostScript, PDF,            GDI, Xlib          OpenGL,                    Mental Ray
   SVG, TrueType,                                 Direct3D
   Adobe Flash,
   Microsoft Silverlight,
   Apple Quartz 2D
                                  Conventional wisdom says
                                GPUs aren’t well-positioned for
                            accelerating these rendering paradigms
               Conventional wisdom is WRONG—though rest of this lecture
                                         focuses on just path rendering
CS 354                                                                       13



         Seminal Path Rendering Paper
        John Warnock & Douglas Wyatt, Xerox PARC
             Presented SIGGRAPH 1982
        Warnock with Chuck Geschke founds Adobe Systems
         same year
             $20.1 billion market capitalization today (NVDA + AMD = $14.3 B)




 John Warnock      Chuck Geschke
CS 354                                                14



         Filling vs. Stroking Paths




 just filling                              just stroking




                                filling + stroke =
                                   intended content
CS 354                                       15



         Content Defined by Control Points
        Bezier Control points!
CS 354                                                                 16



         Types of Path Commands
        MoveTo x,y                  Bezier curve segments
        LineTo x,y                      QuadraticCurveTo
            VerticalLineTo y             x1,y1,x2,y2
            HorizontalLineTo x
                                         CubicCurveTo
                                          x1,y1,x2,y2,x3,y3
        ClosePath                   Partial elliptical arc
                                         ArcTo
        Variants                         rx,ry,x-axis-rotation,
                                          large-arc-flag,sweep-flag,
            Smooth curves                x,y
            Relative
CS 354                                                                 17

         Path Examples:
         PostScript Path Syntax
        Heart
            300 300 moveto
             100 400 100 200 300 100 curveto
             500 200 500 400 300 300 curveto closepath
        Star
            100 180 moveto
             40 10 lineto 190 120 lineto 10 120 lineto 160 10 lineto
             closepath
CS 354                                                    18

         Path Examples:
         SVG Path Syntax

        Heart
            M300 300 C 100 400,100 200,300 100,500
             200,500 400,300 300Z
        Star
            M100,180 L40,10 L190,120 L10,120 L160,10 z




  SVG = Scalable Vector Graphics
CS 354                                              19



         Paths Can Get Very Complicated
        Single path…
            22,439 commands; 116,424 coordinates
CS 354                                                       20



         Curved Path Commands
        Cubic Path Segments      Quadratic Path
                                   Segments




                                  Partial elliptical arcs
CS 354                                                          21

         What does “Inside” Mean for a
         Filled Path?
        Two fill rules: even-odd & non-zero




                even-odd          non-zero




                                   counting enters and leaves
                                     for even-odd fill mode
CS 354                                                     22



         Holes Can Be Authored or Avoided
               outer = clockwise       outer = clockwise
           inner = counter-clockwise   inner = clockwise




                    even-odd                non-zero
CS 354                                                      23



         Scan-line Edge Algorithms
        Intersect path edges with scan-line lines
            Then find & color pixels “inside” path edges
                 Quite sequential algorithm
CS 354                                                    24

         Filling of Segmented Path by Adding
         and Subtracting Coverage
        Incremental steps to determine the filled
         coverage of a path constructed from line
         segments
            Next step is to extend this to curved path
             segments…
CS 354                                                    25


Filling of Curved Path by Adding
and Subtracting Coverage




                        Each (order-independent) step
                        adds or subtracts coverage
                        with the next being the curved
                        path region.

                            Credit: [Rueda et.al. 2008]
CS 354                                                   26



         Handling Curved Edges
        Conventional CPU approach
            Sub-divide curved edges until pixel-sized
        Loop & Blinn [2005] show a better way
            Use GPU to “discard” samples efficiently
        Example shader for quadratic Bezier curve
            if (s*s > t) discard;
CS 354                                                                                27

         Massively Parallel GPU-accelerated
         Path Rendering Visualized
                           Anchored triangle   Anchored triangle
                            fans geometry       fans net stencil
                                                                   Stencil =1

      Path commands
     and control points                                               Resulting net
                                                                    coverage in stencil




                          Curved segment       Curved segment
                             geometry            net stencil




                                                                   Stencil -1
                                                                   Stencil +1
Credit: [Kokoji 2006]
CS 354                                                                  28



         Stroking: Pen Analogy
        Pull a pen along the path
            The pen’s “tip” should be
               Centered on the path
               Orthogonal to the path

        Mathematical version of this
            Offset curves
                 Studied by Leibniz as parallel curves
            Requires higher-order curves to express
               Offset curve of arbitrary cubic curve = 10th order
               Offset curve of arbitrary quadratic curve = 6th order
CS 354                                                29



         Tiger with Stroking
        Stroking offsets features (whiskers, etc.)




           filled & stroked          stroked only
CS 354                                                      30

         Diagram of Circles Sweeping a Generating
         Curve to Generate Offset Curves




                           green = generating curve
                           red = “positive” offset curve
                           blue = “negative” offset curve
CS 354                                                         31



         Offset Curve Examples




          black = generating curve

          red = offset curve (at two different offset radii)
CS 354                                                         32

         Offset Curves
         Form Complex Cusps!




          black = generating curve

          red = offset curve (at two different offset radii)
CS 354                                                                       33



           Stroking is Hard
          Topological occur with increasing stroke width
               Holes can fill in when stroke width increases




         radius=1                                               radius=13




     radius=22
                                                                 radius=46
CS 354                                                                                                                              34

         Stroking Can Be Large Share of
         Relative Frame Time
        Visualizing relative cost in normalize frame time
                                       Percent of Path Rendering Frame Time

  100%

  90%

  80%

  70%
                                                                                                                         151 paths
  60%                                                                                                              1,384 path commands
                                                                                           Path Stroking             6,370 coordinates
  50%                                                                                      Path Filling
                                                                                           Present/Swap Overhead       1024x1024
  40%                                                                                                                16 samples/pixel
                                                                                                                       for OpenGL
  30%

  20%                                                                                                               Test configuration
                                                                                                                    Core i7 @ 3.07 Ghz
  10%
                                                                                                                     GeForce GT 430
   0%
         OpenGL   Direct2D GPU   Direct2D Warp   Qt          Skia      Cairo   OpenVG RI
                                                                                                                   Fast CPU, slow GPU

                                    Path Rendering Implementation
CS 354                                                                     35



         Cubic Bezier folding situation
        Cubic path segment has limited parametric
         extent
            Algebraic rasterization has to respect that extent




                                                      Image: Tero Karras
CS 354                                                      36



         Sharp turns
        Butt end caps create non-linear
         boundaries on the stroked path segment




                                       Image: Tero Karras
CS 354                                                         37



         Butt cases
        End of curve overlaps curve itself




                                          Image: Tero Karras
CS 354                                                         38



         Butt cases
        Butt ends intersect each other




                                          Image: Tero Karras
CS 354                                               39



         Butt cases
        Butt ends have turns




                                Image: Tero Karras
CS 354                                            40



         Butt cases
        Shared end points




                             Image: Tero Karras
CS 354                                                            41
                                         Single stroked cubic
         Comparing Six Path Renderers    segment overlapped;
         on a Hard Case                  there should be a small hole


                                         



                       feathers?
  NV_path_rendering            Cairo               Direct2D
          Skia                  Qt        OpenVG Reference Imp.
                                         



  weird big holes      weird big holes
CS 354                                                                       42
                                                Single stroked cubic
         Comparing Six Path Renderers           with tight control points;
         on Another Hard Case                   should look like butterfly

                                               




                         feathers?
  NV_path_rendering              Cairo                     Direct2D

         Skia                     Qt             OpenVG Reference Imp.
                                              



  tessellation visible   curves “smooshed” in
CS 354                                                            43



         Rasterization Rules
         Pixels are blended once per path
            Semi-opaque objects are common
            Implies a two step process
             1.   Determine stencil of path’s filled or stroked
                  region
             2.   Then paint that region
            Porter-Duff compositing operations apply
         Partial coverage is converted to alpha
            Careful about conflation!
CS 354                                                 44



         Conflation Artifacts
        Happens whenever coverage is converted into
         alpha term
        Common when paths share exact seams

                                            




         conflation free          lots of conflation
CS 354
                                     Real                  45




                                    Flash
                                   Scene
                                   same scene, GPU-rendered
                                           without conflation




         conflation
         artifacts abound,
         rendered by Skia

   conflation is aliasing &
   edge coverage percents
   are un-predicable in general;
   means conflated pixels
   flicker when animated slowly
CS 354                                                                                            46

     Artists Can Easily Contribute to
     Conflation Artifacts
    Consider this American Samoa Seal scene
    Zooming into the detail shows some artifacts
     in the hashing
            Everything in scene is 100% opaque, but
             conflation leads to ghosting


                                              conflation
                                              artifacts




         NVpr-rendered: good, no conflation                Skia-rendered: bad, shows conflation
CS 354                                                                47



         Stroking Properties
        Line width
                            flat / butt        round         square
        End caps
        Join style
            Miter limit
                              miter            round          bevel
        Dashing
            Dash pattern
            Dash caps
            Dash offset                  dashing examples
CS 354                                                                                      48



         Dashing of Stroked Paths


                                                   Artist made
                                                  windows with
                                Same cake          dashed line
                              missing dashed        segment
                              stroking details
                                                                       Technical diagrams
                                                                        and charts often
                                                                        employ dashing

    Frosting on cake is dashed
    elliptical arcs with round
    end caps for “beaded” look;
    flowers are also dashing
                                      Dashing character outlines for quilted look
CS 354                                      49



         Text Glyphs are Defined by Paths
CS 354                                                           50



         Glyphs Outlines Have Control Points
        Cubic Bezier control points
            Typical of PostScript fonts




                          4 control points per curved segments
CS 354                                                           51



         Glyphs Outlines Have Control Points

        Quadratic Bezier Curves
            Typical of TrueType fonts




                          3 control points per curved segments
CS 354                                                    52



         Clipping Paths by Arbitrary Paths




           unclipped tiger   tiger with pink background
                                   clipped to heart
CS 354                                                                  53



         Complex Clipping Example




                                                        cowboy clip is
         tiger is 240 paths                        the union of 1,366 paths




                              result of clipping tiger
                              to the union of all the
                              cowboy paths
CS 354                            54



         Color Gradients
        No per-vertex color as
         in OpenGL
            Since no vertexes!
        Instead color
         assigned with
            Constant color
            Linear gradients
            Radial gradients
            Image gradients
CS 354                                              55



         Gradient Examples
        Artists do amazing things with gradients
CS 354                          56



         Looks 3D



        But really all fake…
CS 354                                                                      57

         Example Composite
         SVG Filter Effect
                         GaussianBlur of alpha

                                                  offset
  source graphic

                                   blur
                                                               specular
                                                 offset blur     lighting


                                      “in”
                   add             composite
     covered                                                   specular
     specular
     source                    covered
                               specular            merge
                                                               final
                                                               result
CS 354                                                               58



         Path Rendering Trends
        Most graphics people interactive with will be resolution-
         independent 2D
          Resolution-dependent 2D “bitmap” graphics
           is way-of-the-past
          Tablets, smart phones, etc. drive this
        Denser screens
          Apple’s Retinal display
          Larger touch screens too
          Means more pixels to draw
        More interactivity
          Static PDFs  interactive HTML 5 style content
          Touch interaction demands low latency
          Means path rendering needs to be faster
        Power matters
            CPUs inefficient path rendering won’t cut it
CS 354                                           59



         Soon
        Mixing path rendering and 3D graphics
            All accelerated by GPUs
CS 354                                                     60


     Example of Bump Mapping
     on Path Rendered Text
        Phrase “Brick wall!” is path rendered and bump
         mapped with a fragment shader


                                   light source position
CS 354                                                           61



         Next Class
        Next lecture
            Typography
            The specialized problem of rendering legible text

        Project 3
            Begin work
            Due Wednesday, April 18, 2012


        (Project 4 will be a simple ray tracer and
         immediately follow Project 3)

Contenu connexe

Tendances

OpenGLES - Graphics Programming in Android
OpenGLES - Graphics Programming in Android OpenGLES - Graphics Programming in Android
OpenGLES - Graphics Programming in Android Arvind Devaraj
 
Unite2019 HLOD를 활용한 대규모 씬 제작 방법
Unite2019 HLOD를 활용한 대규모 씬 제작 방법Unite2019 HLOD를 활용한 대규모 씬 제작 방법
Unite2019 HLOD를 활용한 대규모 씬 제작 방법장규 서
 
Design your 3d game engine
Design your 3d game engineDesign your 3d game engine
Design your 3d game engineDaosheng Mu
 
ICONIX + DDD
ICONIX + DDDICONIX + DDD
ICONIX + DDDmikesorae
 
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012Esun Kim
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기Jaeseung Ha
 
Dartでサーバレスサービス
DartでサーバレスサービスDartでサーバレスサービス
Dartでサーバレスサービスcch-robo
 
vkFX: Effect(ive) approach for Vulkan API
vkFX: Effect(ive) approach for Vulkan APIvkFX: Effect(ive) approach for Vulkan API
vkFX: Effect(ive) approach for Vulkan APITristan Lorach
 
Luft : 10억 데이터를 10초만에 쿼리하는 DB 개발기
Luft : 10억 데이터를 10초만에 쿼리하는 DB 개발기Luft : 10억 데이터를 10초만에 쿼리하는 DB 개발기
Luft : 10억 데이터를 10초만에 쿼리하는 DB 개발기Hyojun Kim
 
Lighting of Killzone: Shadow Fall
Lighting of Killzone: Shadow FallLighting of Killzone: Shadow Fall
Lighting of Killzone: Shadow FallGuerrilla
 
Parallel Futures of a Game Engine
Parallel Futures of a Game EngineParallel Futures of a Game Engine
Parallel Futures of a Game EngineJohan Andersson
 
Stable SSAO in Battlefield 3 with Selective Temporal Filtering
Stable SSAO in Battlefield 3 with Selective Temporal FilteringStable SSAO in Battlefield 3 with Selective Temporal Filtering
Stable SSAO in Battlefield 3 with Selective Temporal FilteringElectronic Arts / DICE
 
FrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteFrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteElectronic Arts / DICE
 
Albion Online - Software Architecture of an MMO (talk at Quo Vadis 2016, Berlin)
Albion Online - Software Architecture of an MMO (talk at Quo Vadis 2016, Berlin)Albion Online - Software Architecture of an MMO (talk at Quo Vadis 2016, Berlin)
Albion Online - Software Architecture of an MMO (talk at Quo Vadis 2016, Berlin)David Salz
 
Progressive Lightmapper: An Introduction to Lightmapping in Unity
Progressive Lightmapper: An Introduction to Lightmapping in UnityProgressive Lightmapper: An Introduction to Lightmapping in Unity
Progressive Lightmapper: An Introduction to Lightmapping in UnityUnity Technologies
 
Inline SVG - トラブルとその対策
Inline SVG - トラブルとその対策Inline SVG - トラブルとその対策
Inline SVG - トラブルとその対策Kohei Kadowaki
 
Remote Graphical Rendering
Remote Graphical RenderingRemote Graphical Rendering
Remote Graphical RenderingJoel Isaacson
 
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)Johan Andersson
 

Tendances (20)

OpenGLES - Graphics Programming in Android
OpenGLES - Graphics Programming in Android OpenGLES - Graphics Programming in Android
OpenGLES - Graphics Programming in Android
 
Unite2019 HLOD를 활용한 대규모 씬 제작 방법
Unite2019 HLOD를 활용한 대규모 씬 제작 방법Unite2019 HLOD를 활용한 대규모 씬 제작 방법
Unite2019 HLOD를 활용한 대규모 씬 제작 방법
 
Design your 3d game engine
Design your 3d game engineDesign your 3d game engine
Design your 3d game engine
 
ICONIX + DDD
ICONIX + DDDICONIX + DDD
ICONIX + DDD
 
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
 
Learn C Programming Language by Using GDB
Learn C Programming Language by Using GDBLearn C Programming Language by Using GDB
Learn C Programming Language by Using GDB
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
 
Motion blur
Motion blurMotion blur
Motion blur
 
Dartでサーバレスサービス
DartでサーバレスサービスDartでサーバレスサービス
Dartでサーバレスサービス
 
vkFX: Effect(ive) approach for Vulkan API
vkFX: Effect(ive) approach for Vulkan APIvkFX: Effect(ive) approach for Vulkan API
vkFX: Effect(ive) approach for Vulkan API
 
Luft : 10억 데이터를 10초만에 쿼리하는 DB 개발기
Luft : 10억 데이터를 10초만에 쿼리하는 DB 개발기Luft : 10억 데이터를 10초만에 쿼리하는 DB 개발기
Luft : 10억 데이터를 10초만에 쿼리하는 DB 개발기
 
Lighting of Killzone: Shadow Fall
Lighting of Killzone: Shadow FallLighting of Killzone: Shadow Fall
Lighting of Killzone: Shadow Fall
 
Parallel Futures of a Game Engine
Parallel Futures of a Game EngineParallel Futures of a Game Engine
Parallel Futures of a Game Engine
 
Stable SSAO in Battlefield 3 with Selective Temporal Filtering
Stable SSAO in Battlefield 3 with Selective Temporal FilteringStable SSAO in Battlefield 3 with Selective Temporal Filtering
Stable SSAO in Battlefield 3 with Selective Temporal Filtering
 
FrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteFrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in Frostbite
 
Albion Online - Software Architecture of an MMO (talk at Quo Vadis 2016, Berlin)
Albion Online - Software Architecture of an MMO (talk at Quo Vadis 2016, Berlin)Albion Online - Software Architecture of an MMO (talk at Quo Vadis 2016, Berlin)
Albion Online - Software Architecture of an MMO (talk at Quo Vadis 2016, Berlin)
 
Progressive Lightmapper: An Introduction to Lightmapping in Unity
Progressive Lightmapper: An Introduction to Lightmapping in UnityProgressive Lightmapper: An Introduction to Lightmapping in Unity
Progressive Lightmapper: An Introduction to Lightmapping in Unity
 
Inline SVG - トラブルとその対策
Inline SVG - トラブルとその対策Inline SVG - トラブルとその対策
Inline SVG - トラブルとその対策
 
Remote Graphical Rendering
Remote Graphical RenderingRemote Graphical Rendering
Remote Graphical Rendering
 
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
 

En vedette

NVIDIA OpenGL in 2016
NVIDIA OpenGL in 2016NVIDIA OpenGL in 2016
NVIDIA OpenGL in 2016Mark Kilgard
 
Exposición Scanline
Exposición ScanlineExposición Scanline
Exposición Scanlinejdtorrespal
 
Algunos empalmes, tangentes y curvas cíclicas.
Algunos empalmes, tangentes y curvas cíclicas.Algunos empalmes, tangentes y curvas cíclicas.
Algunos empalmes, tangentes y curvas cíclicas.reyezuelo
 
CS 354 Bezier Curves
CS 354 Bezier Curves CS 354 Bezier Curves
CS 354 Bezier Curves Mark Kilgard
 

En vedette (7)

NVIDIA OpenGL in 2016
NVIDIA OpenGL in 2016NVIDIA OpenGL in 2016
NVIDIA OpenGL in 2016
 
Exposición Scanline
Exposición ScanlineExposición Scanline
Exposición Scanline
 
bresenham circles and polygons in computer graphics(Computer graphics tutorials)
bresenham circles and polygons in computer graphics(Computer graphics tutorials)bresenham circles and polygons in computer graphics(Computer graphics tutorials)
bresenham circles and polygons in computer graphics(Computer graphics tutorials)
 
Algunos empalmes, tangentes y curvas cíclicas.
Algunos empalmes, tangentes y curvas cíclicas.Algunos empalmes, tangentes y curvas cíclicas.
Algunos empalmes, tangentes y curvas cíclicas.
 
CS 354 Bezier Curves
CS 354 Bezier Curves CS 354 Bezier Curves
CS 354 Bezier Curves
 
Anti aliasing Computer Graphics
Anti aliasing Computer GraphicsAnti aliasing Computer Graphics
Anti aliasing Computer Graphics
 
Ppt on catia
Ppt on  catiaPpt on  catia
Ppt on catia
 

Similaire à CS 354 Vector Graphics & Path Rendering

CS 354 Ray Casting & Tracing
CS 354 Ray Casting & TracingCS 354 Ray Casting & Tracing
CS 354 Ray Casting & TracingMark Kilgard
 
CS 354 Project 2 and Compression
CS 354 Project 2 and CompressionCS 354 Project 2 and Compression
CS 354 Project 2 and CompressionMark Kilgard
 
GTC 2012: GPU-Accelerated Path Rendering
GTC 2012: GPU-Accelerated Path RenderingGTC 2012: GPU-Accelerated Path Rendering
GTC 2012: GPU-Accelerated Path Rendering Mark Kilgard
 
Designing an Objective-C Framework about 3D
Designing an Objective-C Framework about 3DDesigning an Objective-C Framework about 3D
Designing an Objective-C Framework about 3Drsebbe
 
SIGGRAPH 2012: GPU-Accelerated 2D and Web Rendering
SIGGRAPH 2012: GPU-Accelerated 2D and Web RenderingSIGGRAPH 2012: GPU-Accelerated 2D and Web Rendering
SIGGRAPH 2012: GPU-Accelerated 2D and Web RenderingMark Kilgard
 
CS 354 Interaction
CS 354 InteractionCS 354 Interaction
CS 354 InteractionMark Kilgard
 
CS 354 Procedural Methods
CS 354 Procedural MethodsCS 354 Procedural Methods
CS 354 Procedural MethodsMark Kilgard
 
OpenGL 3.2 and More
OpenGL 3.2 and MoreOpenGL 3.2 and More
OpenGL 3.2 and MoreMark Kilgard
 
CS 354 Shadows (cont'd) and Scene Graphs
CS 354 Shadows (cont'd) and Scene GraphsCS 354 Shadows (cont'd) and Scene Graphs
CS 354 Shadows (cont'd) and Scene GraphsMark Kilgard
 
Modern OpenGL scientific visualization
Modern OpenGL scientific visualizationModern OpenGL scientific visualization
Modern OpenGL scientific visualizationNicolas Rougier
 
Event-driven Model Transformations in Domain-specific Modeling Languages
Event-driven Model Transformations in Domain-specific Modeling LanguagesEvent-driven Model Transformations in Domain-specific Modeling Languages
Event-driven Model Transformations in Domain-specific Modeling LanguagesIstvan Rath
 
GPU-accelerated Path Rendering
GPU-accelerated Path RenderingGPU-accelerated Path Rendering
GPU-accelerated Path RenderingMark Kilgard
 
Understanding hardware acceleration on mobile browsers presentation
Understanding hardware acceleration on mobile browsers presentationUnderstanding hardware acceleration on mobile browsers presentation
Understanding hardware acceleration on mobile browsers presentationJustin Dorfman
 
Understanding Hardware Acceleration on Mobile Browsers
Understanding Hardware Acceleration on Mobile BrowsersUnderstanding Hardware Acceleration on Mobile Browsers
Understanding Hardware Acceleration on Mobile BrowsersAriya Hidayat
 
CS 354 GPU Architecture
CS 354 GPU ArchitectureCS 354 GPU Architecture
CS 354 GPU ArchitectureMark Kilgard
 
Introduction to 3D Computer Vision and Differentiable Rendering
Introduction to 3D Computer Vision and Differentiable RenderingIntroduction to 3D Computer Vision and Differentiable Rendering
Introduction to 3D Computer Vision and Differentiable RenderingPreferred Networks
 
Open source print quality software
Open source print quality softwareOpen source print quality software
Open source print quality softwareChristophe Mercier
 
The technology behind_the_elemental_demo_16x9-1248544805
The technology behind_the_elemental_demo_16x9-1248544805The technology behind_the_elemental_demo_16x9-1248544805
The technology behind_the_elemental_demo_16x9-1248544805mistercteam
 

Similaire à CS 354 Vector Graphics & Path Rendering (20)

CS 354 Ray Casting & Tracing
CS 354 Ray Casting & TracingCS 354 Ray Casting & Tracing
CS 354 Ray Casting & Tracing
 
CS 354 Project 2 and Compression
CS 354 Project 2 and CompressionCS 354 Project 2 and Compression
CS 354 Project 2 and Compression
 
GTC 2012: GPU-Accelerated Path Rendering
GTC 2012: GPU-Accelerated Path RenderingGTC 2012: GPU-Accelerated Path Rendering
GTC 2012: GPU-Accelerated Path Rendering
 
Designing an Objective-C Framework about 3D
Designing an Objective-C Framework about 3DDesigning an Objective-C Framework about 3D
Designing an Objective-C Framework about 3D
 
SIGGRAPH 2012: GPU-Accelerated 2D and Web Rendering
SIGGRAPH 2012: GPU-Accelerated 2D and Web RenderingSIGGRAPH 2012: GPU-Accelerated 2D and Web Rendering
SIGGRAPH 2012: GPU-Accelerated 2D and Web Rendering
 
CS 354 Interaction
CS 354 InteractionCS 354 Interaction
CS 354 Interaction
 
CS 354 Procedural Methods
CS 354 Procedural MethodsCS 354 Procedural Methods
CS 354 Procedural Methods
 
OpenGL 3.2 and More
OpenGL 3.2 and MoreOpenGL 3.2 and More
OpenGL 3.2 and More
 
CS 354 Shadows
CS 354 ShadowsCS 354 Shadows
CS 354 Shadows
 
CS 354 Shadows (cont'd) and Scene Graphs
CS 354 Shadows (cont'd) and Scene GraphsCS 354 Shadows (cont'd) and Scene Graphs
CS 354 Shadows (cont'd) and Scene Graphs
 
Modern OpenGL scientific visualization
Modern OpenGL scientific visualizationModern OpenGL scientific visualization
Modern OpenGL scientific visualization
 
Event-driven Model Transformations in Domain-specific Modeling Languages
Event-driven Model Transformations in Domain-specific Modeling LanguagesEvent-driven Model Transformations in Domain-specific Modeling Languages
Event-driven Model Transformations in Domain-specific Modeling Languages
 
GPU-accelerated Path Rendering
GPU-accelerated Path RenderingGPU-accelerated Path Rendering
GPU-accelerated Path Rendering
 
Understanding hardware acceleration on mobile browsers presentation
Understanding hardware acceleration on mobile browsers presentationUnderstanding hardware acceleration on mobile browsers presentation
Understanding hardware acceleration on mobile browsers presentation
 
Understanding Hardware Acceleration on Mobile Browsers
Understanding Hardware Acceleration on Mobile BrowsersUnderstanding Hardware Acceleration on Mobile Browsers
Understanding Hardware Acceleration on Mobile Browsers
 
CS 354 GPU Architecture
CS 354 GPU ArchitectureCS 354 GPU Architecture
CS 354 GPU Architecture
 
Introduction to 3D Computer Vision and Differentiable Rendering
Introduction to 3D Computer Vision and Differentiable RenderingIntroduction to 3D Computer Vision and Differentiable Rendering
Introduction to 3D Computer Vision and Differentiable Rendering
 
Open source print quality software
Open source print quality softwareOpen source print quality software
Open source print quality software
 
Resource Oriented Architecture for Managing Multimedia Content by Florian
Resource Oriented Architecture for Managing Multimedia Content by FlorianResource Oriented Architecture for Managing Multimedia Content by Florian
Resource Oriented Architecture for Managing Multimedia Content by Florian
 
The technology behind_the_elemental_demo_16x9-1248544805
The technology behind_the_elemental_demo_16x9-1248544805The technology behind_the_elemental_demo_16x9-1248544805
The technology behind_the_elemental_demo_16x9-1248544805
 

Plus de Mark Kilgard

D11: a high-performance, protocol-optional, transport-optional, window system...
D11: a high-performance, protocol-optional, transport-optional, window system...D11: a high-performance, protocol-optional, transport-optional, window system...
D11: a high-performance, protocol-optional, transport-optional, window system...Mark Kilgard
 
Computers, Graphics, Engineering, Math, and Video Games for High School Students
Computers, Graphics, Engineering, Math, and Video Games for High School StudentsComputers, Graphics, Engineering, Math, and Video Games for High School Students
Computers, Graphics, Engineering, Math, and Video Games for High School StudentsMark Kilgard
 
NVIDIA OpenGL and Vulkan Support for 2017
NVIDIA OpenGL and Vulkan Support for 2017NVIDIA OpenGL and Vulkan Support for 2017
NVIDIA OpenGL and Vulkan Support for 2017Mark Kilgard
 
NVIDIA OpenGL 4.6 in 2017
NVIDIA OpenGL 4.6 in 2017NVIDIA OpenGL 4.6 in 2017
NVIDIA OpenGL 4.6 in 2017Mark Kilgard
 
Virtual Reality Features of NVIDIA GPUs
Virtual Reality Features of NVIDIA GPUsVirtual Reality Features of NVIDIA GPUs
Virtual Reality Features of NVIDIA GPUsMark Kilgard
 
Migrating from OpenGL to Vulkan
Migrating from OpenGL to VulkanMigrating from OpenGL to Vulkan
Migrating from OpenGL to VulkanMark Kilgard
 
EXT_window_rectangles
EXT_window_rectanglesEXT_window_rectangles
EXT_window_rectanglesMark Kilgard
 
Slides: Accelerating Vector Graphics Rendering using the Graphics Hardware Pi...
Slides: Accelerating Vector Graphics Rendering using the Graphics Hardware Pi...Slides: Accelerating Vector Graphics Rendering using the Graphics Hardware Pi...
Slides: Accelerating Vector Graphics Rendering using the Graphics Hardware Pi...Mark Kilgard
 
Accelerating Vector Graphics Rendering using the Graphics Hardware Pipeline
Accelerating Vector Graphics Rendering using the Graphics Hardware PipelineAccelerating Vector Graphics Rendering using the Graphics Hardware Pipeline
Accelerating Vector Graphics Rendering using the Graphics Hardware PipelineMark Kilgard
 
NV_path rendering Functional Improvements
NV_path rendering Functional ImprovementsNV_path rendering Functional Improvements
NV_path rendering Functional ImprovementsMark Kilgard
 
OpenGL 4.5 Update for NVIDIA GPUs
OpenGL 4.5 Update for NVIDIA GPUsOpenGL 4.5 Update for NVIDIA GPUs
OpenGL 4.5 Update for NVIDIA GPUsMark Kilgard
 
SIGGRAPH Asia 2012: GPU-accelerated Path Rendering
SIGGRAPH Asia 2012: GPU-accelerated Path RenderingSIGGRAPH Asia 2012: GPU-accelerated Path Rendering
SIGGRAPH Asia 2012: GPU-accelerated Path RenderingMark Kilgard
 
SIGGRAPH Asia 2012 Exhibitor Talk: OpenGL 4.3 and Beyond
SIGGRAPH Asia 2012 Exhibitor Talk: OpenGL 4.3 and BeyondSIGGRAPH Asia 2012 Exhibitor Talk: OpenGL 4.3 and Beyond
SIGGRAPH Asia 2012 Exhibitor Talk: OpenGL 4.3 and BeyondMark Kilgard
 
Programming with NV_path_rendering: An Annex to the SIGGRAPH Asia 2012 paper...
Programming with NV_path_rendering:  An Annex to the SIGGRAPH Asia 2012 paper...Programming with NV_path_rendering:  An Annex to the SIGGRAPH Asia 2012 paper...
Programming with NV_path_rendering: An Annex to the SIGGRAPH Asia 2012 paper...Mark Kilgard
 
GPU accelerated path rendering fastforward
GPU accelerated path rendering fastforwardGPU accelerated path rendering fastforward
GPU accelerated path rendering fastforwardMark Kilgard
 
SIGGRAPH 2012: NVIDIA OpenGL for 2012
SIGGRAPH 2012: NVIDIA OpenGL for 2012SIGGRAPH 2012: NVIDIA OpenGL for 2012
SIGGRAPH 2012: NVIDIA OpenGL for 2012Mark Kilgard
 
GTC 2012: NVIDIA OpenGL in 2012
GTC 2012: NVIDIA OpenGL in 2012GTC 2012: NVIDIA OpenGL in 2012
GTC 2012: NVIDIA OpenGL in 2012Mark Kilgard
 
CS 354 Final Exam Review
CS 354 Final Exam ReviewCS 354 Final Exam Review
CS 354 Final Exam ReviewMark Kilgard
 
CS 354 Surfaces, Programmable Tessellation, and NPR Graphics
CS 354 Surfaces, Programmable Tessellation, and NPR GraphicsCS 354 Surfaces, Programmable Tessellation, and NPR Graphics
CS 354 Surfaces, Programmable Tessellation, and NPR GraphicsMark Kilgard
 

Plus de Mark Kilgard (20)

D11: a high-performance, protocol-optional, transport-optional, window system...
D11: a high-performance, protocol-optional, transport-optional, window system...D11: a high-performance, protocol-optional, transport-optional, window system...
D11: a high-performance, protocol-optional, transport-optional, window system...
 
Computers, Graphics, Engineering, Math, and Video Games for High School Students
Computers, Graphics, Engineering, Math, and Video Games for High School StudentsComputers, Graphics, Engineering, Math, and Video Games for High School Students
Computers, Graphics, Engineering, Math, and Video Games for High School Students
 
NVIDIA OpenGL and Vulkan Support for 2017
NVIDIA OpenGL and Vulkan Support for 2017NVIDIA OpenGL and Vulkan Support for 2017
NVIDIA OpenGL and Vulkan Support for 2017
 
NVIDIA OpenGL 4.6 in 2017
NVIDIA OpenGL 4.6 in 2017NVIDIA OpenGL 4.6 in 2017
NVIDIA OpenGL 4.6 in 2017
 
Virtual Reality Features of NVIDIA GPUs
Virtual Reality Features of NVIDIA GPUsVirtual Reality Features of NVIDIA GPUs
Virtual Reality Features of NVIDIA GPUs
 
Migrating from OpenGL to Vulkan
Migrating from OpenGL to VulkanMigrating from OpenGL to Vulkan
Migrating from OpenGL to Vulkan
 
EXT_window_rectangles
EXT_window_rectanglesEXT_window_rectangles
EXT_window_rectangles
 
OpenGL for 2015
OpenGL for 2015OpenGL for 2015
OpenGL for 2015
 
Slides: Accelerating Vector Graphics Rendering using the Graphics Hardware Pi...
Slides: Accelerating Vector Graphics Rendering using the Graphics Hardware Pi...Slides: Accelerating Vector Graphics Rendering using the Graphics Hardware Pi...
Slides: Accelerating Vector Graphics Rendering using the Graphics Hardware Pi...
 
Accelerating Vector Graphics Rendering using the Graphics Hardware Pipeline
Accelerating Vector Graphics Rendering using the Graphics Hardware PipelineAccelerating Vector Graphics Rendering using the Graphics Hardware Pipeline
Accelerating Vector Graphics Rendering using the Graphics Hardware Pipeline
 
NV_path rendering Functional Improvements
NV_path rendering Functional ImprovementsNV_path rendering Functional Improvements
NV_path rendering Functional Improvements
 
OpenGL 4.5 Update for NVIDIA GPUs
OpenGL 4.5 Update for NVIDIA GPUsOpenGL 4.5 Update for NVIDIA GPUs
OpenGL 4.5 Update for NVIDIA GPUs
 
SIGGRAPH Asia 2012: GPU-accelerated Path Rendering
SIGGRAPH Asia 2012: GPU-accelerated Path RenderingSIGGRAPH Asia 2012: GPU-accelerated Path Rendering
SIGGRAPH Asia 2012: GPU-accelerated Path Rendering
 
SIGGRAPH Asia 2012 Exhibitor Talk: OpenGL 4.3 and Beyond
SIGGRAPH Asia 2012 Exhibitor Talk: OpenGL 4.3 and BeyondSIGGRAPH Asia 2012 Exhibitor Talk: OpenGL 4.3 and Beyond
SIGGRAPH Asia 2012 Exhibitor Talk: OpenGL 4.3 and Beyond
 
Programming with NV_path_rendering: An Annex to the SIGGRAPH Asia 2012 paper...
Programming with NV_path_rendering:  An Annex to the SIGGRAPH Asia 2012 paper...Programming with NV_path_rendering:  An Annex to the SIGGRAPH Asia 2012 paper...
Programming with NV_path_rendering: An Annex to the SIGGRAPH Asia 2012 paper...
 
GPU accelerated path rendering fastforward
GPU accelerated path rendering fastforwardGPU accelerated path rendering fastforward
GPU accelerated path rendering fastforward
 
SIGGRAPH 2012: NVIDIA OpenGL for 2012
SIGGRAPH 2012: NVIDIA OpenGL for 2012SIGGRAPH 2012: NVIDIA OpenGL for 2012
SIGGRAPH 2012: NVIDIA OpenGL for 2012
 
GTC 2012: NVIDIA OpenGL in 2012
GTC 2012: NVIDIA OpenGL in 2012GTC 2012: NVIDIA OpenGL in 2012
GTC 2012: NVIDIA OpenGL in 2012
 
CS 354 Final Exam Review
CS 354 Final Exam ReviewCS 354 Final Exam Review
CS 354 Final Exam Review
 
CS 354 Surfaces, Programmable Tessellation, and NPR Graphics
CS 354 Surfaces, Programmable Tessellation, and NPR GraphicsCS 354 Surfaces, Programmable Tessellation, and NPR Graphics
CS 354 Surfaces, Programmable Tessellation, and NPR Graphics
 

Dernier

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 

Dernier (20)

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 

CS 354 Vector Graphics & Path Rendering

  • 1. CS 354 Vector Graphics & Path Rendering Mark Kilgard University of Texas April 10, 2012
  • 2. CS 354 2 Today’s material  In-class quiz  On Bézier curves lecture  Lecture topic  Project 3  Vector graphics & path rendering
  • 3. CS 354 3 My Office Hours  Tuesday, before class  Painter (PAI) 5.35  8:45 a.m. to 9:15  Thursday, after class  ACE 6.302  11:00 a.m. to 12  Randy’s office hours  Monday & Wednesday  11 a.m. to 12:00  Painter (PAI) 5.33
  • 4. CS 354 4 Last time, this time  Last lecture, we discussed  Bezier curves  This lecture  Resolution-independent 2D graphics  Path rendering  Projects  Schedule demos with TA for Project 2  Project 3 due Wednesday, April 18, 2012  Get started!
  • 5. CS 354 5 On a sheet of paper Daily Quiz • Write your EID, name, and date • Write #1, #2, #3, followed by its answer  How many control points  Multiple choice: are used to define a cubic Geometric continuity Bézier curve? across two curved segments always means  Multiple choice: What percent of a Bézier curve a) The two segments are is contained within the identical convex hull of its control b) The shared end points points? of the segments have the same tangent magnitude a) 33.33% b) 50% c) The shared edge points c) 66.66% have the identical tangent d) 100% directions d) The shared end points are Euclidean variant means
  • 6. CS 354 6 Project 3  Accept Biovision Hierarchy (BVH) files containing motion capture data  Hierarchy of affine transformations  Visualize a stick figure  Animate the figure
  • 7. CS 354 7 Vector Graphics  Confusing term  Used to describe several kinds of graphics  Wireframe rendering  Plotting or calligraphic rendering HP DesignJet  Resolution-independent 2D graphics Scalable Vector Graphics (SVG)
  • 8. CS 354 8 Taxonomy of Rendering scene dimensionality 2D 3D resolution processes primitives independence or samples independent dependent primitives samples path 2D primitive 3D primitive ray rendering rasterization rasterization tracing Examples Examples Examples Examples PostScript, PDF, GDI, Xlib OpenGL, Mental Ray SVG, TrueType, Direct3D Adobe Flash, Microsoft Silverlight, Notice large number of path rendering standards Apple Quartz 2D
  • 9. CS 354 9 Path Rendering Standards Document Resolution- Immersive 2D Graphics Office Printing and Independent Web Programming Productivity Exchange Fonts Experience Interfaces Applications Java 2D API OpenType Flash QtGui API TrueType Scalable Mac OS X Vector 2D API Adobe Illustrator Graphics Open XML Paper (XPS) Inkscape Open Source
  • 10. CS 354 10 scene dimensionality 2D 3D resolution processes primitives independence or samples independent dependent primitives samples path 2D primitive 3D primitive ray rendering rasterization rasterization tracing Examples Examples Examples Examples PostScript, PDF, GDI, Xlib OpenGL, Mental Ray SVG, TrueType, Direct3D Adobe Flash, Microsoft Silverlight, Apple Quartz 2D GPUs already excel at these rendering paradigms
  • 11. 11 3D Rendering vs. Path Rendering CS 354 Characteristic GPU 3D rendering Path rendering Dimensionality Projective 3D 2D, typically affine Pixel mapping Resolution independent Resolution independent Occlusion Depth buffering Painter’s algorithm Rendering primitives Points, lines, triangles Paths Primitive constituents Vertices Control points Constituents per primitive 1, 2, or 3 respectively Unbounded Topology of filled primitives Always convex Can be concave, self-intersecting, and have holes Degree of primitives 1st order (linear) Up to 3rd order (cubic) Rendering modes Filled, wire-frame Filling, stroking Line properties Width, stipple pattern Width, dash pattern, capping, join style Color processing Programmable shading Painting + filter effects Text rendering No direct support (2nd class support) Omni-present (1st class support) Raster operations Blending Brushes, blend modes, compositing Color model RGB or sRGB RGB, sRGB, CYMK, or grayscale Clipping operations Clip planes, scissoring, stenciling Clipping to an arbitrary clip path Coverage determination Per-color sample Sub-color sample
  • 12. CS 354 12 scene dimensionality 2D 3D resolution processes primitives independence or samples independent dependent primitives samples path 2D primitive 3D primitive ray rendering rasterization rasterization tracing Examples Examples Examples Examples PostScript, PDF, GDI, Xlib OpenGL, Mental Ray SVG, TrueType, Direct3D Adobe Flash, Microsoft Silverlight, Apple Quartz 2D Conventional wisdom says GPUs aren’t well-positioned for accelerating these rendering paradigms Conventional wisdom is WRONG—though rest of this lecture focuses on just path rendering
  • 13. CS 354 13 Seminal Path Rendering Paper  John Warnock & Douglas Wyatt, Xerox PARC  Presented SIGGRAPH 1982  Warnock with Chuck Geschke founds Adobe Systems same year  $20.1 billion market capitalization today (NVDA + AMD = $14.3 B) John Warnock Chuck Geschke
  • 14. CS 354 14 Filling vs. Stroking Paths just filling just stroking filling + stroke = intended content
  • 15. CS 354 15 Content Defined by Control Points  Bezier Control points!
  • 16. CS 354 16 Types of Path Commands  MoveTo x,y  Bezier curve segments  LineTo x,y  QuadraticCurveTo  VerticalLineTo y x1,y1,x2,y2  HorizontalLineTo x  CubicCurveTo x1,y1,x2,y2,x3,y3  ClosePath  Partial elliptical arc  ArcTo  Variants rx,ry,x-axis-rotation, large-arc-flag,sweep-flag,  Smooth curves x,y  Relative
  • 17. CS 354 17 Path Examples: PostScript Path Syntax  Heart  300 300 moveto 100 400 100 200 300 100 curveto 500 200 500 400 300 300 curveto closepath  Star  100 180 moveto 40 10 lineto 190 120 lineto 10 120 lineto 160 10 lineto closepath
  • 18. CS 354 18 Path Examples: SVG Path Syntax  Heart  M300 300 C 100 400,100 200,300 100,500 200,500 400,300 300Z  Star  M100,180 L40,10 L190,120 L10,120 L160,10 z SVG = Scalable Vector Graphics
  • 19. CS 354 19 Paths Can Get Very Complicated  Single path…  22,439 commands; 116,424 coordinates
  • 20. CS 354 20 Curved Path Commands  Cubic Path Segments  Quadratic Path Segments  Partial elliptical arcs
  • 21. CS 354 21 What does “Inside” Mean for a Filled Path?  Two fill rules: even-odd & non-zero even-odd non-zero counting enters and leaves for even-odd fill mode
  • 22. CS 354 22 Holes Can Be Authored or Avoided outer = clockwise outer = clockwise inner = counter-clockwise inner = clockwise even-odd non-zero
  • 23. CS 354 23 Scan-line Edge Algorithms  Intersect path edges with scan-line lines  Then find & color pixels “inside” path edges  Quite sequential algorithm
  • 24. CS 354 24 Filling of Segmented Path by Adding and Subtracting Coverage  Incremental steps to determine the filled coverage of a path constructed from line segments  Next step is to extend this to curved path segments…
  • 25. CS 354 25 Filling of Curved Path by Adding and Subtracting Coverage Each (order-independent) step adds or subtracts coverage with the next being the curved path region. Credit: [Rueda et.al. 2008]
  • 26. CS 354 26 Handling Curved Edges  Conventional CPU approach  Sub-divide curved edges until pixel-sized  Loop & Blinn [2005] show a better way  Use GPU to “discard” samples efficiently  Example shader for quadratic Bezier curve  if (s*s > t) discard;
  • 27. CS 354 27 Massively Parallel GPU-accelerated Path Rendering Visualized Anchored triangle Anchored triangle fans geometry fans net stencil Stencil =1 Path commands and control points Resulting net coverage in stencil Curved segment Curved segment geometry net stencil Stencil -1 Stencil +1 Credit: [Kokoji 2006]
  • 28. CS 354 28 Stroking: Pen Analogy  Pull a pen along the path  The pen’s “tip” should be  Centered on the path  Orthogonal to the path  Mathematical version of this  Offset curves  Studied by Leibniz as parallel curves  Requires higher-order curves to express  Offset curve of arbitrary cubic curve = 10th order  Offset curve of arbitrary quadratic curve = 6th order
  • 29. CS 354 29 Tiger with Stroking  Stroking offsets features (whiskers, etc.) filled & stroked stroked only
  • 30. CS 354 30 Diagram of Circles Sweeping a Generating Curve to Generate Offset Curves green = generating curve red = “positive” offset curve blue = “negative” offset curve
  • 31. CS 354 31 Offset Curve Examples black = generating curve red = offset curve (at two different offset radii)
  • 32. CS 354 32 Offset Curves Form Complex Cusps! black = generating curve red = offset curve (at two different offset radii)
  • 33. CS 354 33 Stroking is Hard  Topological occur with increasing stroke width  Holes can fill in when stroke width increases radius=1 radius=13 radius=22 radius=46
  • 34. CS 354 34 Stroking Can Be Large Share of Relative Frame Time  Visualizing relative cost in normalize frame time Percent of Path Rendering Frame Time 100% 90% 80% 70% 151 paths 60% 1,384 path commands Path Stroking 6,370 coordinates 50% Path Filling Present/Swap Overhead 1024x1024 40% 16 samples/pixel for OpenGL 30% 20% Test configuration Core i7 @ 3.07 Ghz 10% GeForce GT 430 0% OpenGL Direct2D GPU Direct2D Warp Qt Skia Cairo OpenVG RI Fast CPU, slow GPU Path Rendering Implementation
  • 35. CS 354 35 Cubic Bezier folding situation  Cubic path segment has limited parametric extent  Algebraic rasterization has to respect that extent Image: Tero Karras
  • 36. CS 354 36 Sharp turns  Butt end caps create non-linear boundaries on the stroked path segment Image: Tero Karras
  • 37. CS 354 37 Butt cases  End of curve overlaps curve itself Image: Tero Karras
  • 38. CS 354 38 Butt cases  Butt ends intersect each other Image: Tero Karras
  • 39. CS 354 39 Butt cases  Butt ends have turns Image: Tero Karras
  • 40. CS 354 40 Butt cases  Shared end points Image: Tero Karras
  • 41. CS 354 41 Single stroked cubic Comparing Six Path Renderers segment overlapped; on a Hard Case there should be a small hole    feathers? NV_path_rendering Cairo Direct2D Skia Qt OpenVG Reference Imp.    weird big holes weird big holes
  • 42. CS 354 42 Single stroked cubic Comparing Six Path Renderers with tight control points; on Another Hard Case should look like butterfly    feathers? NV_path_rendering Cairo Direct2D Skia Qt OpenVG Reference Imp.    tessellation visible curves “smooshed” in
  • 43. CS 354 43 Rasterization Rules  Pixels are blended once per path  Semi-opaque objects are common  Implies a two step process 1. Determine stencil of path’s filled or stroked region 2. Then paint that region  Porter-Duff compositing operations apply  Partial coverage is converted to alpha  Careful about conflation!
  • 44. CS 354 44 Conflation Artifacts  Happens whenever coverage is converted into alpha term  Common when paths share exact seams   conflation free lots of conflation
  • 45. CS 354 Real 45 Flash Scene same scene, GPU-rendered without conflation conflation artifacts abound, rendered by Skia conflation is aliasing & edge coverage percents are un-predicable in general; means conflated pixels flicker when animated slowly
  • 46. CS 354 46 Artists Can Easily Contribute to Conflation Artifacts  Consider this American Samoa Seal scene  Zooming into the detail shows some artifacts in the hashing  Everything in scene is 100% opaque, but conflation leads to ghosting conflation artifacts NVpr-rendered: good, no conflation Skia-rendered: bad, shows conflation
  • 47. CS 354 47 Stroking Properties  Line width flat / butt round square  End caps  Join style  Miter limit miter round bevel  Dashing  Dash pattern  Dash caps  Dash offset dashing examples
  • 48. CS 354 48 Dashing of Stroked Paths Artist made windows with Same cake dashed line missing dashed segment stroking details Technical diagrams and charts often employ dashing Frosting on cake is dashed elliptical arcs with round end caps for “beaded” look; flowers are also dashing Dashing character outlines for quilted look
  • 49. CS 354 49 Text Glyphs are Defined by Paths
  • 50. CS 354 50 Glyphs Outlines Have Control Points  Cubic Bezier control points  Typical of PostScript fonts 4 control points per curved segments
  • 51. CS 354 51 Glyphs Outlines Have Control Points  Quadratic Bezier Curves  Typical of TrueType fonts 3 control points per curved segments
  • 52. CS 354 52 Clipping Paths by Arbitrary Paths unclipped tiger tiger with pink background clipped to heart
  • 53. CS 354 53 Complex Clipping Example cowboy clip is tiger is 240 paths the union of 1,366 paths result of clipping tiger to the union of all the cowboy paths
  • 54. CS 354 54 Color Gradients  No per-vertex color as in OpenGL  Since no vertexes!  Instead color assigned with  Constant color  Linear gradients  Radial gradients  Image gradients
  • 55. CS 354 55 Gradient Examples  Artists do amazing things with gradients
  • 56. CS 354 56 Looks 3D  But really all fake…
  • 57. CS 354 57 Example Composite SVG Filter Effect GaussianBlur of alpha offset source graphic blur specular offset blur lighting “in” add composite covered specular specular source covered specular merge final result
  • 58. CS 354 58 Path Rendering Trends  Most graphics people interactive with will be resolution- independent 2D  Resolution-dependent 2D “bitmap” graphics is way-of-the-past  Tablets, smart phones, etc. drive this  Denser screens  Apple’s Retinal display  Larger touch screens too  Means more pixels to draw  More interactivity  Static PDFs  interactive HTML 5 style content  Touch interaction demands low latency  Means path rendering needs to be faster  Power matters  CPUs inefficient path rendering won’t cut it
  • 59. CS 354 59 Soon  Mixing path rendering and 3D graphics  All accelerated by GPUs
  • 60. CS 354 60 Example of Bump Mapping on Path Rendered Text  Phrase “Brick wall!” is path rendered and bump mapped with a fragment shader light source position
  • 61. CS 354 61 Next Class  Next lecture  Typography  The specialized problem of rendering legible text  Project 3  Begin work  Due Wednesday, April 18, 2012  (Project 4 will be a simple ray tracer and immediately follow Project 3)