How To Use The Windows Color System In Devices And Drivers Michael Bourgoin Program Manager D2 Color Team Microsoft Corporation Session Outline WCS вЂ“ The Windows Color System Opportunities and Advantages Color Best Practices For capture devices For printers For displays Dave Wilkinson, ATI Research Inc: High Dynamic Range Imaging Windows Color System WCS is part of Windows Vista It is not available down-level Supports high dynamic range, wide gamut, high precision color data (up to 32 bpc float) Supports both binary ICC profiles and WCS text-based (XML) profiles Provides both a monolithic ICC CMM and a new modular WCS processing pipeline Provides baseline device models for common device types вЂ“ extensible via 3rd party plug-ins Provides baseline gamut mapping models вЂ“ extensible via 3rd party plug-ins Provides a new, central color control panel for managing device color settings Is flexible, predictable, transparent and consistent Opportunities And Advantages Your ICC-based workflows continue to work and can now take advantage of version 4 ICC profiles The new WCS XML-based color profiles are easily programmatically updated, enabling self-characterizing devices Third parties can add value via new plug-in device models and gamut mapping models Vendors can write DM and GMM plug-ins that communicate with one another during processing Support for high dynamic range, wide gamut, high precision color data (HWD) in WCS enables integration of such innovative devices into color managed workflows Color Best Practices Populate, persist, and promote accurate metadata Associate and embed accurate color profiles Use and preserve embedded profiles If you change color space, update the metadata If you donвЂ™t understand the metadata, preserve it Have your installers associate profiles with your devices If itвЂ™s not actually an sRGB device, it should have associated profile(s) Minimize number of color conversions in your workflows Your driver should be aware of your device state and the correct profile for that state WCS provides choices вЂ“ choose what makes sense for your business Profile/Device Association These work with WCS or ICC profiles WCSвЂ¦variants of these ICM APIs allow for control of system-wide versus user association scope on Windows Vista BOOL WINAPI AssociateColorProfileWithDevice( PCTSTR pMachineName, PCTSTR pProfileName, PCTSTR pDeviceName ); BOOL WINAPI WcsAssociateColorProfileWithDevice( WCS_PROFILE_MANAGEMENT_SCOPE profileManagementScope, PCTSTR pMachineName, PCTSTR pProfileName, PCTSTR pDeviceName ); Capture Best Practices Populate and promote accurate metadata Be sure EXIF, etc, tags match image color space Embed correct profile Support > 8 bpc color data and wide gamut color spaces Enables capture/archive-centric workflows If you have a camera RAW format, consider providing a WIC codec for it Printers Best Practices Use WCS for on-host color conversion to reduce device costs You can write one XPSDrv filter that calls WCS (or ICM down-level) and use it to for an entire printer family WCS XML-based profiles are easy to create and update on the fly Enable cross calibration of networked devices Support devices with built in sensors Support Premium Windows Logo Program requirements for Color and Printing Cooperating applications and drivers can use the PrintTicket/PrintCapabilities mechanism to eliminate double color management (guidelines are currently under development) Application/Driver Color Communication Conversations to avoid вЂњdouble color managementвЂќ вЂњWhat profile do you think best matches your current state?вЂќ вЂњIвЂ™ve already done the color conversion with this profile: Do no further color management (CM)вЂќ вЂњYou do the CM using this destination profileвЂќ вЂњYou do the CM using your idea of the best profile for your current stateвЂќ вЂњYou apply your propriety color magicвЂќ вЂњIвЂ™ve created a color managed print DC, you do no further CMвЂќ Displays Best Practices Associate an accurate color profile if not actually an sRGB device On Windows Vista you can have a profile per screen, not just a profile per display card Support DDC/CI via Windows Vista APIs Use WCS XML profiles to simplify display characterization/calibration Take advantage of WCS HWD color support Build innovative color capabilities WCS provides extensibility mechanisms for integrating novel display technologies Call To Action Populate, persist, and promote rich color metadata Take advantage of WCS on Windows Vista Implement color best practices Consider WCS XML profiles for device-based or on-thefly characterization/calibration DonвЂ™t be a bottleneck for HWD workflows Refer to the Windows Vista Beta 2 SDK for new WCS SDK documentation, code samples, sample plugins, etc Provide us feedback on both WCS and our guidelines/best practices Tell us about your own best practices WCS provides choices вЂ“ choose what makes sense for your business Additional Resources At WinHEC Visit the Microsoft Pavilion for WCS demos Related Sessions PRI102 Using XPSDrv Print Drivers to Extend Windows Print Functionality PRI115 Windows Media Photo: A New Format for End-to-End Digital Imaging PRI022 DirectX Graphics: Direct3D 10 and Beyond Practice print driver dev skills in XPS Printing hands on labs Attend Ask the Experts at lunch today Web Resources WCS Specs: With the Windows Vista Beta 2 SDK WCS White Papers and presentations: http://www.microsoft.com/color XPS and WMPhoto docs: http://www.microsoft.com/whdc/xps/downloads.mspx Color blog: http://blogs.msdn.com/color_blog/default.aspx E-mail: Mscolor @ microsoft.com A Guide To HighDynamic-Range Imaging On The PC Dave Wilkinson Staff Engineer ATI Research, Inc Introduction HDR Overview Capturing The Real World The HDR Pipeline Call To Action HDR Overview What Is High-Dynamic-Range? WhatвЂ™s In An Image A Picture PostcardвЂ¦ The Range Of Visible Light ThereвЂ™s more to this photo than meets the eyeвЂ¦ The dynamic range of intensities in a scene can be extremely large (>50,000:1) The range of the capture device is much smaller (typically 300:1) Light Intensity Limited Dynamic Range A Room With A ViewвЂ¦ Limited Dynamic Range Hiding In The ShadowsвЂ¦ Images Courtesy Dennis Curtin (www.shortcourses.com) Capturing The Real World Acquisition of HDR Images HDR Scene Capture Camera вЂ�pixelsвЂ™ measure light over time Over-full elements Are saturated Highlight data is lost, Shadow detail captured Insufficient exposure time or low-light. Highlight data captured, shadow detail lost Camera CCD Elements accumulate light over the exposure period Over-exposure Under-exposure HDR Scene Capture An вЂ�IdealвЂ™ Camera The captured image is a faithful rendition of the original scene high capacity elements that can capture both shadow and highlight detail of a scene without saturation HDR Scene Capture HDR from LDR Exposures Exposure 0 Exposure 1 Exposure n вЂ¦ вЂ¦ Input Image Exposure Slices (LDR) Stitching Stage Stitched Output Image (HDR) Summary We donвЂ™t yet have an ideal camera; There is no device that can вЂ�capture everything,вЂ™ butвЂ¦ Current imaging devices can capture 12-14 bits of dynamic range Improved dynamic range can be obtained by digitally вЂ�stitchingвЂ™ multiple exposures HDR Image capture offers many benefits to the professional and amateur photographer alike How Many Bits Is Enough? Low, Medium, and High Dynamic Range Low-Dynamic-Range Typically 8-bits per color channel Most common format for todayвЂ™s mainstream imaging devices Poor tonal and dynamic range Severe artifacts (eg. Banding, poor color reproduction) The current format supported on the Microsoft Windows desktop Medium-Dynamic-Range Typically 10 to 16 bits per color Supported in higher-end image capture and display devices Good tonal and dynamic range Low occurrence of visible artifacts Floating point representations can be used to greatly improve tonal range Supported in Microsoft Windows via Direct3D9 and above High-Dynamic-Range Typically 16 to 32 bits per channel Supported by current higher end GPUs, up to the display Excellent tonal and dynamic range Capable of representing the entire range of light visible to the eye Limited display hardware availability (some 16 bpc devices) Supported in Microsoft Windows via Direct3D9 and beyond The HDR Pipeline Displaying HDR Images on Microsoft Windows The HDR Pipeline Legacy HDR Workflow HDR Resources (lightmaps, probes Scenes) Draw Scene 8bpc HDR Scene Processing Tonemap Application Windows GDI Display Adapter Legacy HDR Workflow Windows GDI and legacy HW support only 8-bpc All HDR processing has to be done on the CPU Tonemapping must also be done in software Not practical for real-time HDR applications Very few commercial applications Accelerated HDR Workflow Using Direct3D9 to accelerate HDR rendering Video Memory HDR Resources (lightmaps, probes Scenes) Resource Initialization/ Setup Draw Scene Application Tonemap Texture Create Textures: LDR Surface(s) HDR Surface(s) Tonemaps Render: HDR Passes Tonemapping Pass Direct3D LDR Display Surface HDR Surface(s) GPU DC T&L Shader FX Tonemap Gamma DAC Display Adapter 8-bit Display The HDR Pipeline Accelerated HDR Workflow Direct3D9 supports a full HDR pipeline Reflects capabilities of current generation hardware Allows HDR processing to be offloaded to the graphics hardware Images stay in high-precision HDR format right up until the final rendering Hardware-assisted tonemapping can be performed prior to final display Next-Generation HDR Workflow Supporting HDR through to the display Video Memory HDR Resources (lightmaps, probes Scenes) HDR Display Surface HDR Surface(s) DC outputs fp16 values directly from framebuffer across dual-DVI link HDR Resource Initialization/ Setup Draw Scene Application Create Textures: HDR Surface(s) GPU DC T&L Shader FX FP16 Scanout Render HDR Passes Direct3D10 Display Adapter HDR Display The HDR Pipeline Next Generation HDR Workflow Fully programmable color correction hardware Tonemapping step can be performed directly by hardware Eliminates extra shader pass Significant performance boost HDR Scanout of 16-bit Integer and Floating-point Eliminates the graphics adapter as the bottleneck for HDR display output Dual-link DVI for export of 16-bit data to display 16-bit floating point or integer data is split across two 8-bit data channels and sent to a display via one dual-link DVI cable HDR Display HDR displays can display 10bpc or 16bpc images directly Call To Action IHVs вЂ“ HDR support checklist Floating-point support through to display Blendable/filterable FP16/32 surfaces FP16 Backbuffer FP16 scan-out HW tonemapping HDR Compression Call To Action ISVs Author HDR content wherever possible Let the GPU do the work! Maintain LDR and HDR shader paths Resources HDR Background www.cybergrain.com/tech/hdr www.debevec.org http://www.mpi-inf.mpg.de/resources/hdr/ HDR Software www.hdrsoft.com www.hdrshop.com http://www.mpi-inf.mpg.de/resources/pfstools/ HDR GPUs http://www.ati.com/products/RadeonX1900/index.html http://www.ati.com/technology/avivo/index.html HDR Display Manufacturers www.brightsidetech.com www.barco.com В© 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.