real-time image-space outlining -...

19

Upload: others

Post on 20-Aug-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Real-Time Image-Space Outlining - AMDdeveloper.amd.com/wordpress/media/2012/10/NPROutlining...Real-Time Image-Space Outlining for Non-Photorealistic Rendering References 1. P. Decaudin,
Page 2: Real-Time Image-Space Outlining - AMDdeveloper.amd.com/wordpress/media/2012/10/NPROutlining...Real-Time Image-Space Outlining for Non-Photorealistic Rendering References 1. P. Decaudin,

Real-Time Image-Space Outlining for Non-Photorealistic RenderingRealReal--Time ImageTime Image--Space Outlining Space Outlining for Nonfor Non--Photorealistic RenderingPhotorealistic Rendering

Jason L. MitchellATI Research

[email protected]

Jason L. MitchellJason L. MitchellATI ResearchATI Research

[email protected]@ati.com

Chris BrennanATI Research

[email protected]

Chris BrennanChris BrennanATI ResearchATI Research

[email protected]@ati.com

Drew CardATI Research

[email protected]

Drew CardDrew CardATI ResearchATI Research

[email protected]@ati.com

Page 3: Real-Time Image-Space Outlining - AMDdeveloper.amd.com/wordpress/media/2012/10/NPROutlining...Real-Time Image-Space Outlining for Non-Photorealistic Rendering References 1. P. Decaudin,

Real-Time Image-Space Outlining for Non-Photorealistic Rendering

OutlineOutlineOutline• Image-Space Outlining

• Silhouettes and Crease Outlines• Shadow Outlines• Texture Boundary Outlines

• Stylization with Morphology• Antialiasing• Optimizations

• Alpha testing• Multiple Render Targets

•• ImageImage--Space OutliningSpace Outlining• Silhouettes and Crease Outlines• Shadow Outlines• Texture Boundary Outlines

•• Stylization with MorphologyStylization with Morphology•• AntialiasingAntialiasing•• OptimizationsOptimizations

• Alpha testing• Multiple Render Targets

Page 4: Real-Time Image-Space Outlining - AMDdeveloper.amd.com/wordpress/media/2012/10/NPROutlining...Real-Time Image-Space Outlining for Non-Photorealistic Rendering References 1. P. Decaudin,

Real-Time Image-Space Outlining for Non-Photorealistic Rendering

Outlining StrategyOutlining Strategy• Render alternate representation of scene

into texture map• With the RADEON 9700, we’re able to render into

up to four targets simultaneously, effectively implementing Saito and Takahashi’s g-buffer

• Run filter over image to detect edges• Implemented using pixel shading hardware

•• Render alternate representation of scene Render alternate representation of scene into texture mapinto texture map• With the RADEON 9700, we’re able to render into

up to four targets simultaneously, effectively implementing Saito and Takahashi’s g-buffer

•• Run filter over image to detect edgesRun filter over image to detect edges• Implemented using pixel shading hardware

Page 5: Real-Time Image-Space Outlining - AMDdeveloper.amd.com/wordpress/media/2012/10/NPROutlining...Real-Time Image-Space Outlining for Non-Photorealistic Rendering References 1. P. Decaudin,

Real-Time Image-Space Outlining for Non-Photorealistic Rendering

Normal and DepthNormal and Depth

World Space NormalWorld Space Normal Eye Space DepthEye Space Depth

Page 6: Real-Time Image-Space Outlining - AMDdeveloper.amd.com/wordpress/media/2012/10/NPROutlining...Real-Time Image-Space Outlining for Non-Photorealistic Rendering References 1. P. Decaudin,

Real-Time Image-Space Outlining for Non-Photorealistic Rendering

OutlinesOutlines

Normal EdgesNormal Edges Depth EdgesDepth Edges

Page 7: Real-Time Image-Space Outlining - AMDdeveloper.amd.com/wordpress/media/2012/10/NPROutlining...Real-Time Image-Space Outlining for Non-Photorealistic Rendering References 1. P. Decaudin,

Real-Time Image-Space Outlining for Non-Photorealistic Rendering

Normal and Depth Negated in ShadowNormal and Depth Negated in Shadow

Eye Space DepthNegated in ShadowEye Space Depth

Negated in ShadowWorld Space Normal Negated in Shadow

World Space Normal Negated in Shadow

Page 8: Real-Time Image-Space Outlining - AMDdeveloper.amd.com/wordpress/media/2012/10/NPROutlining...Real-Time Image-Space Outlining for Non-Photorealistic Rendering References 1. P. Decaudin,

Real-Time Image-Space Outlining for Non-Photorealistic Rendering

Normal and Depth OutlinesNormal and Depth Outlines

Edges from NormalsEdges from Normals Edges from DepthEdges from Depth

Page 9: Real-Time Image-Space Outlining - AMDdeveloper.amd.com/wordpress/media/2012/10/NPROutlining...Real-Time Image-Space Outlining for Non-Photorealistic Rendering References 1. P. Decaudin,

Real-Time Image-Space Outlining for Non-Photorealistic Rendering

Object and Shadow OutlinesObject and Shadow Outlines

Outlines from selectivelynegated normals and depths

Outlines from selectivelynegated normals and depths

Page 10: Real-Time Image-Space Outlining - AMDdeveloper.amd.com/wordpress/media/2012/10/NPROutlining...Real-Time Image-Space Outlining for Non-Photorealistic Rendering References 1. P. Decaudin,

Real-Time Image-Space Outlining for Non-Photorealistic Rendering

Texture Region IDsTexture Region IDs

Page 11: Real-Time Image-Space Outlining - AMDdeveloper.amd.com/wordpress/media/2012/10/NPROutlining...Real-Time Image-Space Outlining for Non-Photorealistic Rendering References 1. P. Decaudin,

Real-Time Image-Space Outlining for Non-Photorealistic Rendering

Edges at TextureRegion BoundariesEdges at TextureRegion Boundaries

Page 12: Real-Time Image-Space Outlining - AMDdeveloper.amd.com/wordpress/media/2012/10/NPROutlining...Real-Time Image-Space Outlining for Non-Photorealistic Rendering References 1. P. Decaudin,

Real-Time Image-Space Outlining for Non-Photorealistic Rendering

Edge FilterEdge Filter

t0 t4

t3

t2

t1

5-tap Filter5-tap Filter

Page 13: Real-Time Image-Space Outlining - AMDdeveloper.amd.com/wordpress/media/2012/10/NPROutlining...Real-Time Image-Space Outlining for Non-Photorealistic Rendering References 1. P. Decaudin,

Real-Time Image-Space Outlining for Non-Photorealistic Rendering

Edge Filter CodeEdge Filter Codeps.2.0def c0, 0.0f, 0.80f, 0, 0 // normal thresholdsdef c3, 0, .5, 1, 2def c8, 0.0f, 0.0f, -0.01f, 0.0f // Depth thresholdsdef c9, 0.0f, -0.25f, 0.25f, 1.0fdef c12, 0.0f, 0.01f, 0.0f, 0.0f // TexID Thresholdsdcl_2d s0dcl_2d s1dcl t0dcl t1dcl t2dcl t3dcl t4

// Sample the map five timestexld r0, t0, s0 // Center Taptexld r1, t1, s0 // Down/Righttexld r2, t2, s0 // Down/Lefttexld r3, t3, s0 // Up/Lefttexld r4, t4, s0 // Up/Right

//-----------------------------------------------------// NORMALS//-----------------------------------------------------mad r0.xyz, r0, c3.w, -c3.zmad r1.xyz, r1, c3.w, -c3.zmad r2.xyz, r2, c3.w, -c3.zmad r3.xyz, r3, c3.w, -c3.zmad r4.xyz, r4, c3.w, -c3.z

// Take dot products with center (Signed result -1 to 1)dp3 r5.r, r0, r1 dp3 r5.g, r0, r2dp3 r5.b, r0, r3dp3 r5.a, r0, r4

// Subtract thresholdsub r5, r5, c0.g

// Make black/white based on thresholdcmp r5, r5, c1.g, c1.r

// detect any 1'sdp4_sat r11, r5, c3.zmad_sat r11, r11, c1.b, c1.w // Scale and bias result

//--------------------------------------------------------// Z//--------------------------------------------------------add r10.r, r0.a, -r1.a // Take four deltasadd r10.g, r0.a, -r2.aadd r10.b, r0.a, -r3.aadd r10.a, r0.a, -r4.a

cmp r10, r10, r10, -r10 // Take absolute valueadd r10, r10, c8.b // Subtract thresholdcmp r10, r10, c1.r, c1.g // Make black/whitedp4_sat r10, r10, c3.z // Sum up detected pixelsmad_sat r10, r10, c1.b, c1.w // Scale and bias resultmul r11, r11, r10 // Combine with previous

//----------------------------------------------------// TexIDs//----------------------------------------------------// Sample the map five timestexld r0, t0, s1 // Center Taptexld r1, t1, s1 // Down/Righttexld r2, t2, s1 // Down/Lefttexld r3, t3, s1 // Up/Lefttexld r4, t4, s1 // Up/Right

// Get differences in colorsub r1.rgb, r0, r1sub r2.rgb, r0, r2sub r3.rgb, r0, r3sub r4.rgb, r0, r4

// Calculate magnitude of color differencesdp3 r1.r, r1, c3.zdp3 r1.g, r2, c3.zdp3 r1.b, r3, c3.zdp3 r1.a, r4, c3.z

cmp r1, r1, r1, -r1 // Take absolute valuessub r1, r1, c12.g // Subtract thresholdcmp r1, r1, c1.r, c1.g // Make black/whitedp4_sat r10, r1, c3.z // Total up edgesmad_sat r10, r10, c1.b, c1.w // Scale and bias resultmul r11, r10, r11 // Combine with previous

// Outputmov oC0, r11

Page 14: Real-Time Image-Space Outlining - AMDdeveloper.amd.com/wordpress/media/2012/10/NPROutlining...Real-Time Image-Space Outlining for Non-Photorealistic Rendering References 1. P. Decaudin,

Real-Time Image-Space Outlining for Non-Photorealistic Rendering

MorphologyMorphology

Dilate

Page 15: Real-Time Image-Space Outlining - AMDdeveloper.amd.com/wordpress/media/2012/10/NPROutlining...Real-Time Image-Space Outlining for Non-Photorealistic Rendering References 1. P. Decaudin,

Real-Time Image-Space Outlining for Non-Photorealistic Rendering

Dilation ShaderDilation Shaderps.2.0def c0, 0, .5, 1, 2def c1, 0.4f, -1, 5.0f, 0dcl_2d s0dcl t0dcl t1dcl t2dcl t3dcl t4

// Sample the map five timestexld r0, t0, s0 // Center Taptexld r1, t1, s0 // Uptexld r2, t2, s0 // Lefttexld r3, t3, s0 // Downtexld r4, t4, s0 // Right

// Sum the samplesadd r0, r0, r1 add r1, r2, r3add r0, r0, r1add r0, r0, r4mad_sat r0, r0.r, c1.r, c1.g // Thresholdmov oC0, r0

t0 t4

t3

t2

t1

Page 16: Real-Time Image-Space Outlining - AMDdeveloper.amd.com/wordpress/media/2012/10/NPROutlining...Real-Time Image-Space Outlining for Non-Photorealistic Rendering References 1. P. Decaudin,

Real-Time Image-Space Outlining for Non-Photorealistic Rendering

AntialiasingAntialiasing•Can make original edge detection filters “fuzzy”

•Can make morphological operators “fuzzy”

••Can make original edge Can make original edge detection filters “fuzzy”detection filters “fuzzy”

••Can make morphological Can make morphological operators “fuzzy”operators “fuzzy”

Page 17: Real-Time Image-Space Outlining - AMDdeveloper.amd.com/wordpress/media/2012/10/NPROutlining...Real-Time Image-Space Outlining for Non-Photorealistic Rendering References 1. P. Decaudin,

Real-Time Image-Space Outlining for Non-Photorealistic Rendering

OptimizationsOptimizations

•Alpha Test•Multiple Render Targets••Alpha TestAlpha Test••Multiple Render TargetsMultiple Render Targets

Page 18: Real-Time Image-Space Outlining - AMDdeveloper.amd.com/wordpress/media/2012/10/NPROutlining...Real-Time Image-Space Outlining for Non-Photorealistic Rendering References 1. P. Decaudin,

Real-Time Image-Space Outlining for Non-Photorealistic Rendering

SummarySummarySummary• Image-Space Outlining

• Silhouettes and Crease Outlines• Shadow Outlines• Texture Boundary Outlines

• Stylization with Morphology• Antialiasing• Optimizations

• Alpha testing• Multiple Render Targets

•• ImageImage--Space OutliningSpace Outlining• Silhouettes and Crease Outlines• Shadow Outlines• Texture Boundary Outlines

•• Stylization with MorphologyStylization with Morphology•• AntialiasingAntialiasing•• OptimizationsOptimizations

• Alpha testing• Multiple Render Targets

Page 19: Real-Time Image-Space Outlining - AMDdeveloper.amd.com/wordpress/media/2012/10/NPROutlining...Real-Time Image-Space Outlining for Non-Photorealistic Rendering References 1. P. Decaudin,

Real-Time Image-Space Outlining for Non-Photorealistic Rendering

ReferencesReferences1. P. Decaudin, “Cartoon-looking rendering of 3D-

scenes,” Technical Report INRIA 2919, Universite de Technologie de Compiegne, France, June 1996.

2. J. C. Hourcade and A. Nicolas, “Algorithms for Antialiased Cast Shadows,” Computer and Graphics, 9, 3, (1985), 259-265.

3. J. L. Mitchell, "Image Processing with Direct3D Pixel Shaders" in Vertex and Pixel Shader Tips and Tricks, Wolfgang Engel editor, Wordware, 2002.

4. T. Saito and T. Takahashi, “Comprehensible Rendering of 3-D Shapes.” Computer Graphics(SIGGRAPH '90 Proceedings), pages 197-206, 1990.

1.1. P. Decaudin, “CartoonP. Decaudin, “Cartoon--looking rendering of 3Dlooking rendering of 3D--scenes,” Technical Report INRIA 2919, Universite de scenes,” Technical Report INRIA 2919, Universite de Technologie de Compiegne, France, June 1996.Technologie de Compiegne, France, June 1996.

2.2. J. C. Hourcade and A. Nicolas, “Algorithms for J. C. Hourcade and A. Nicolas, “Algorithms for Antialiased Cast Shadows,” Antialiased Cast Shadows,” Computer and GraphicsComputer and Graphics, , 9, 3, (1985), 2599, 3, (1985), 259--265.265.

3.3. J. L. Mitchell, "Image Processing with Direct3D Pixel J. L. Mitchell, "Image Processing with Direct3D Pixel Shaders" in Shaders" in Vertex and Pixel Shader Tips and TricksVertex and Pixel Shader Tips and Tricks, , Wolfgang Engel editor, Wordware, 2002.Wolfgang Engel editor, Wordware, 2002.

4.4. T. Saito and T. Takahashi, “Comprehensible T. Saito and T. Takahashi, “Comprehensible Rendering of 3Rendering of 3--D Shapes.” D Shapes.” Computer GraphicsComputer Graphics(SIGGRAPH '90 Proceedings), pages 197(SIGGRAPH '90 Proceedings), pages 197--206, 1990.206, 1990.