Cg Toolkit. Cg 2.0 May 2008 Release Notes

Similar documents
Cg Toolkit. Cg 2.0 January 2008 Release Notes

Cg Toolkit. Cg 2.1 beta August 2008 Release Notes

Cg Toolkit. Cg 2.1 October 2008 Release Notes

Cg Toolkit. Cg 2.2 April 2009 Release Notes

Cg Toolkit. Cg 2.2 February 2010 Release Notes

Cg Toolkit. Cg 1.4 rc 1 Release Notes

Cg Toolkit. Cg 1.3 Release Notes. December 2004

Cg Toolkit. Cg 1.2 Release Notes

SDK White Paper. Vertex Lighting Achieving fast lighting results

Cg 2.0. Mark Kilgard

Technical Report. Anisotropic Lighting using HLSL

SDK White Paper. Matrix Palette Skinning An Example

User Guide. Vertex Texture Fetch Water

Technical Report. GLSL Pseudo-Instancing

GLExpert NVIDIA Performance Toolkit

User Guide. GLExpert NVIDIA Performance Toolkit

Android PerfHUD ES quick start guide

Application Note. NVIDIA Business Platform System Builder Certification Guide. September 2005 DA _v01

Horizon-Based Ambient Occlusion using Compute Shaders. Louis Bavoil

SDK White Paper. Occlusion Query Checking for Hidden Pixels

Cg Toolkit. Cg 1.2 User s Manual Addendum

GRID SOFTWARE FOR RED HAT ENTERPRISE LINUX WITH KVM VERSION /370.28

SDK White Paper. HLSL Blood Shader Gravity Maps

Soft Particles. Tristan Lorach

Order Independent Transparency with Dual Depth Peeling. Louis Bavoil, Kevin Myers

NVWMI VERSION 2.24 STANDALONE PACKAGE

User Guide. TexturePerformancePBO Demo

Multi-View Soft Shadows. Louis Bavoil

Tuning CUDA Applications for Fermi. Version 1.2

GRID SOFTWARE FOR MICROSOFT WINDOWS SERVER VERSION /370.12

NVIDIA nforce 790i SLI Chipsets

Getting Started. NVIDIA CUDA Development Tools 2.2 Installation and Verification on Mac OS X. May 2009 DU _v01

Technical Report. Mesh Instancing

Technical Report. SLI Best Practices

User Guide. DU _v01f January 2004

Technical Brief. LinkBoost Technology Faster Clocks Out-of-the-Box. May 2006 TB _v01

NVIDIA CAPTURE SDK 6.1 (WINDOWS)

SDK White Paper. Soft Shadows

GPU LIBRARY ADVISOR. DA _v8.0 September Application Note

NVIDIA CUDA C GETTING STARTED GUIDE FOR MAC OS X

Enthusiast System Architecture Certification Feature Requirements

Technical Brief. NVIDIA and Microsoft Windows Vista Getting the Most Out Of Microsoft Windows Vista

White Paper. Soft Shadows. February 2007 WP _v01

User Guide. GPGPU Disease

White Paper. Solid Wireframe. February 2007 WP _v01

Getting Started. NVIDIA CUDA C Installation and Verification on Mac OS X

NSIGHT ECLIPSE PLUGINS INSTALLATION GUIDE

NVIDIA CUDA GETTING STARTED GUIDE FOR MAC OS X

NVWMI VERSION 2.18 STANDALONE PACKAGE

Technical Brief. NVIDIA Quadro FX Rotated Grid Full-Scene Antialiasing (RG FSAA)

NVIDIA CAPTURE SDK 7.1 (WINDOWS)

White Paper. Texture Arrays Terrain Rendering. February 2007 WP _v01

NVIDIA CAPTURE SDK 6.0 (WINDOWS)

QUADRO SYNC II FIRMWARE VERSION 2.02

Deinterleaved Texturing for Cache-Efficient Interleaved Sampling. Louis Bavoil

NSIGHT ECLIPSE EDITION

Technical Report. SLI Best Practices

White Paper. Denoising. February 2007 WP _v01

CUDA TOOLKIT 3.2 READINESS FOR CUDA APPLICATIONS

Getting Started. NVIDIA CUDA Development Tools 2.3 Installation and Verification on Mac OS X

Constant-Memory Order-Independent Transparency Techniques

NSIGHT ECLIPSE EDITION

GETTING STARTED WITH CUDA SDK SAMPLES

NVIDIA SDK. NVMeshMender Code Sample User Guide

NSIGHT ECLIPSE EDITION

CUDA-GDB: The NVIDIA CUDA Debugger

High Quality DXT Compression using OpenCL for CUDA. Ignacio Castaño

Sparkling Effect. February 2007 WP _v01

Real - Time Rendering. Graphics pipeline. Michal Červeňanský Juraj Starinský

GRID VIRTUAL GPU FOR HUAWEI UVP Version /

CUDA/OpenGL Fluid Simulation. Nolan Goodnight

KEPLER COMPATIBILITY GUIDE FOR CUDA APPLICATIONS

NVSG NVIDIA Scene Graph

NVIDIA DEBUG MANAGER FOR ANDROID NDK - VERSION 8.0.1

User Guide. NVIDIA Quadro FX 4700 X2 BY PNY Technologies Part No. VCQFX4700X2-PCIE-PB

Technical Brief. AGP 8X Evolving the Graphics Interface

TUNING CUDA APPLICATIONS FOR MAXWELL

TUNING CUDA APPLICATIONS FOR MAXWELL

Graphics Hardware. Graphics Processing Unit (GPU) is a Subsidiary hardware. With massively multi-threaded many-core. Dedicated to 2D and 3D graphics

OpenGL ES 2.0 : Start Developing Now. Dan Ginsburg Advanced Micro Devices, Inc.

VIRTUAL GPU SOFTWARE MANAGEMENT SDK

VIRTUAL GPU LICENSE SERVER VERSION

NVIDIA CUDA GETTING STARTED GUIDE FOR MICROSOFT WINDOWS

NVIDIA CUDA DEBUGGER CUDA-GDB. User Manual

GRID VIRTUAL GPU FOR HUAWEI UVP Version ,

NVIDIA FX Composer. Developer Presentation June 2004

NVIDIA CUDA C INSTALLATION AND VERIFICATION ON

PASCAL COMPATIBILITY GUIDE FOR CUDA APPLICATIONS

Siggraph Agenda. Usability & Productivity. FX Composer 2.5. Usability & Productivity 9/12/2008 9:16 AM

Histogram calculation in OpenCL. Victor Podlozhnyuk

Shaders (some slides taken from David M. course)

Lecture 2. Shaders, GLSL and GPGPU

MAXWELL COMPATIBILITY GUIDE FOR CUDA APPLICATIONS

Introduction to Shaders.

Tegra 250 Development Kit Android Setup Experience

Getting Started. NVIDIA CUDA Development Tools 2.2 Installation and Verification on Microsoft Windows XP and Windows Vista

NVIDIA Tesla Compute Cluster Driver for Windows

Technical Brief. FirstPacket Technology Improved System Performance. May 2006 TB _v01

GRID SOFTWARE FOR HUAWEI UVP VERSION /370.12

GRID SOFTWARE FOR HUAWEI UVP VERSION /370.28

Transcription:

Cg Toolkit Cg 2.0 May 2008 Release Notes

Cg Toolkit Release Notes The Cg Toolkit allows developers to write and run Cg programs using a wide variety of hardware and OS platforms and graphics APIs. Originally released in December 2002, the Toolkit now supports over 20 different DirectX and OpenGL profile targets. It provides a compiler for the Cg language, runtime libraries for use with the OpenGL and DirectX graphics APIs, support for the CgFX effect files, example applications, and extensive documentation. The Cg 2.0 May 2008 release contains these changes to the previous SDK: Many performance improvements Bug fixes Added support for samplerbuf to the runtime Allow 'Texture' as a variable name Fixed a bug in setting and getting string annotation values Fixed a crash at exit when running on 64-bit Windows Fixed a problem with cgglsetoptimaloptions on the GPU Program4 profiles Fixed a problem with using discard on MacOS New OpenGL examples including: examples/opengl/basic (from The Cg Tutorial) 22_specular_bump_map: 26_toon_shading: 27_projective_texturing: The Cg 2.0 January 2008 release contains these changes to the previous SDK: The HLSL profiles can now run on SM2.0 and SM2.x hardware Fixed a multitexture sampler configuration bug with GLSL profiles in CgFX Fixed problems with using buffer semantics on pre-g80 class GPUs The set and get parameter routines now silently ignore "extra" components. For example, if cgsetparameter4f is used to send 4 values to a CG_FLOAT2 parameter, the first two values are used but the last two are ignored. Added support for OSX x86_64 Fixed a bug with the path variable after installing Windows 64-bit dlls Added a new section on cgc to the documentation Completed the gp4 profile documentation Other general documentation improvements 808-00505-0000-005 1

The Cg 2.0 December 2007 release of Cg incorporated the following updates: New OpenGL GPU Program4 profiles New Direct3D9 HLSL translation profiles Support for geometry programs Support for constant buffers Support for texture arrays Support for true integer data types Performance improvements and bug fixes Expanded documentation including a new version of the Language Specification New OpenGL examples including: examples/opengl/basic (from The Cg Tutorial) 18_cube_map_reflection: 19_cube_map_refraction: 20_chromatic_dispersion: 21_bump_map_wall: 25_uniform_fog: examples/opengl/advanced buffer_lighting: cgfx_boxfilter: cgfx_texture_array: custom_state_assignments: gs_interp_quad: gs_md2render: gs_quadnormal: gs_shrinky: gs_simple: interpolation_modifier: texture_array: vertex_texture: Cg 1.5 applications should work with Cg 2.0 without the need to recompile the program. See Compatibility Notes, below, for more information. Visit the NVIDIA Cg website at developer.nvidia.com/page/cg_main.html for complete availability and compatibility information. Bug reports, issues, and feedback can be sent to cgsupport@nvidia.com. 808-00505-0000-005 2

Compatibility Notes Previous releases of Cg allowed you to store more values in a parameter than indicated by the parameter s type. For example, one could use cgglsetparameter4f to store four values into a parameter of type CG_FLOAT (not CG_FLOAT4). All four values could later be retrieved using a get call which requested more than one value. However, this feature conflicts with the GLSL approach and also leads to issues with parameters mapped into BUFFERS. So, beginning with this release any components beyond the number indicated by the parameter type are ignored. This will lead to problems if your application depended upon the prior behavior. Otherwise, there aren t any known compatibility issues with programs written against Cg 1.5. For programs written against Cg 1.4 or earlier, refer to the Compatibility Notes section of the release notes for Cg 1.5. Supported OS/Hardware Platforms Cg is available for these platforms: Windows 32 Windows 64 Linux x86 Linux x86-64 MacOS 10.4 (Tiger) MacOS 10.5 (Leopard) Solaris 10 x86 The Cg Runtime libraries include: The Cg core runtime library for managing parameters and loading programs The CgGL runtime library for OpenGL based applications The CgD3D8 runtime library for DirectX 8 based applications The CgD3D9 runtime library for DirectX 9 based applications 808-00505-0000-005 3

Supported Profiles The Cg compiler currently supports the following hardware profiles: OpenGL gpu_gp NV_geomemtry_program4 gpu_vp NV_vertex_program4 gpu_fp NV_fragment_program4 glslv OpenGL Shading Language (GLSL) for OpenGL 2.0 vertex shader glslf OpenGL Shading Language (GLSL) for OpenGL 2.0 fragment shader arbvp1 ARB_vertex_program 1.0 arbfp1 ARB_fragment_program 1.0 vp40 ARB_vertex_program + NV_vertex_program2 option fp40 ARB_fragment_program + NV_fragment_program2 option vp30 NV_vertex_program 2.0 fp30 NV_fragment_program 1.0 vp20 NV_vertex_program 1.0 fp20 NV_register_combiners and NV_texture_shader DirectX 8 & 9 vs_1_1 Vertex Shader 1.1 ps_1_1 Pixel Shader 1.1 ps_1_2 Pixel Shader 1.2 ps_1_3 Pixel Shader 1.3 DirectX 9 vs_2_0 Vertex Shader 2.0 vs_2_x Extended VS 2.0 ps_2_0 Pixel Shader PS 2.0 ps_2_x Extended PS 2.0 DirectX 9.0c hlslv HLSL9 Vertex Shader hlslf HLSL9 Fragment Shader vs_3_0 Vertex Shader Model 3.0 ps_3_0 Pixel Shader Model 3.0 808-00505-0000-005 4

Improvements & Bug Fixes Improvements Single threaded programs can now disable the thread locking introduced in Cg 1.5. The new examples are now packaged in the non-windows installers. Improvement: CgFX Increased compatibility with HLSL FX files. Improvement: Documentation Note: The Cg Users Manual has not been updated for Cg 2.0. New version of the Cg Language Specification New reference pages for the new Runtime API features New CgFX standard state manual pages Updated Standard Library documentation and Profile reference pages New section on cgc Bug Fixes Numerous bugs have been fixed. Known issues Known runtime issues cggetparametervalues incurs a penalty in both performance and memory footprint and its use is strongly discouraged. Use one of the cggetparametervalue functions instead. cgcopyprogram and cgcopyeffect do not work. Loading precompiled code via CG_OBJECT in cgcreateprogramfromfile doesn t work for shaders which use semantic type modifiers. The DirectX 8 runtime does not support Cg interfaces. The Cg runtime does not support creating shared parameters containing varying members. Unsized arrays and interface parameters cannot currently be used on the right-hand side of state assignments. Doing so will trigger an error. Values set by cgglsetoptimaloptions(...) can be un-set after a call to cgdestroycontext( ). As a work around, call cgglsetoptimaloptions( ) after each call to cgdestroycontext( ) when more Cg contexts are going to be created. 808-00505-0000-005 5

Known compiler issues Long shader programs that make heavy use of interfaces may still see very long compiler times. Very little error checking is performed on the OpenGL state semantics string (state.*); it is just copied to the output assembly. As a result, a typo in the string may compile correctly, and no error will be apparent until the application attempts to load the assembly shader. Error reporting: Some error and warning messages are not as clear as they could be. Some of the issues to be aware of are: Reported line numbers do not match source code lines when standard library functions are being used In some cases, errors are not reported in the order they appear in the program Errors are not reported when constants are out of range for untyped constants. Side-effects in conditional expressions ('?:') and logical expressions ('&&' and ' ') are always evaluated, regardless of the condition, as specified in the Cg language specification. Hence developers need to watch out for this case. At most one binding semantic per uniform variable is supported by the compiler. Multiple profile-specific binding semantics per uniform variable are not supported. Only loops with a single induction variable are unrolled. Loops that require more than 1 induction variable will fail to compile on older profiles that do not support loops. Local variable arrays which are written to in one block of code, and then read via a non-constant index in a different block will fail to compile on older hardware that does not support this feature. Current hardware supports this feature. Invalid Cg programs can, at times, generate invalid code, instead of a compiler error. Known profile-specific issues The ps2* profiles do not support MRTs Because the underlying hardware support for the fp20 and ps_1_* profiles is quite limited and inflexible, it isn t always possible to compile even seemingly simple Cg programs under these profiles. For more details on these limitations, please see the NV_register_combiners and NV_texture_shader OpenGL extension specifications, or the DirectX PixelShader 1.* specifications. The FOG varying input semantic is not yet supported under the fp20 profile. 808-00505-0000-005 6

New API Cg 2.0 adds new API for features like constant buffers and geometry programs. Here is the complete list of new routines: cgcopyeffect cgcreatebuffer cgcreateobj cgcreateobjfromfile cgdestroybuffer cgdestroyobj cgglcreatebuffer cgglgetbufferobject cggetbuffersize cggetconnectedstateassignmentparameter cggetlockingpolicy cggetparameterbufferindex cggetparameterbufferoffset cggetparameterresourcesize cggetparameterresourcetype cggetparametersettingmode cggetprogrambuffer cggetprogrambuffermaxindex cggetprogrambuffermaxsize cggetprograminput cggetprogramoutput cggetsemanticcasepolicy cggetstringannotationvalues cgmapbuffer cgsetbufferdata cgsetbuffersubdata cgsetlockingpolicy cgsetparametersettingmode cgsetprogrambuffer cgsetsemanticcasepolicy cgunmapbuffer cgupdateprogramparameters 808-00505-0000-005 7

Release Types Cg 2.0 is released in two forms: 1. The Cg Toolkit provides a complete Cg Software Development Kit (SDK) including documentation, examples, standalone compiler, headers and libraries. 2. Cg Binary Distributions provide updated redistributable libraries that Cg-based applications can ship with. SDK versions are released as platform specific installers containing the full toolkit (libraries, documentation, examples, etc.) They can be downloaded from http://developer.nvidia.com/object/cg_toolkit.html Binary distributions contain only the libraries, and all supported platforms are bundled in a single file. The libraries supplied in a binary distribution should be feature-for-feature and bug-for-bug compatible across all the platforms supported by a given distribution (meaning are all compiled from the same source code). Cross-platform software vendors are encouraged to redistribute Cg libraries from a single binary distribution to minimize platform variances in Cg. Cg binary distributions can be found at http://developer.nvidia.com/object/cg-redistributable-binaries.html Distribution License The docs directory contains a file Cg_Redist_License.pdf providing a non-exclusive, worldwide, royalty free licensee for redistributing Cg with your applications. See this license for details. 808-00505-0000-005 8

Release History The following table summarizes release dates and library versions for Cg releases: Cg Release Name Release Date Library Version SDK2 01/30/08 2.0.0012 SDK1 12/12/07 2.0.0010 beta 11/01/07 2.0.0008 The Cg library version is returned by cggetstring(cg_version) Change History 2.0.0012 2.0.0010 2.0.0008 Added section on cgc and completed the gp4 profile documentation The set and get parameter routines now silently ignore "extra" components. For example, if cgsetparameter4f is used to send 4 values to a CG_FLOAT2 parameter, the first two values are used but the last two are ignored. The HLSL profiles can now run on SM2.0 and SM2.x hardware Fixed a multitexture sampler configuration bug with GLSL profiles in CgFX Fixed problems with using buffer semantics on pre-g80 class GPUs Fixed a bug with the path variable after installing Windows 64-bit dlls Added support for OSX x86_64 Added stdlib documentation and better profile documentation Plugged several memory leaks Improved HLSL FX compatibility Plus other bug fixes and performance improvements New features, bug fixes, and performance improvements 808-00505-0000-005 9

Notice ALL NVIDIA DESIGN SPECIFICATIONS, REFERENCE BOARDS, FILES, DRAWINGS, DIAGNOSTICS, LISTS, AND OTHER DOCUMENTS (TOGETHER AND SEPARATELY, MATERIALS ) ARE BEING PROVIDED AS IS. NVIDIA MAKES NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY OR OTHERWISE WITH RESPECT TO THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. Information furnished is believed to be accurate and reliable. However, NVIDIA Corporation assumes no responsibility for the consequences of use of such information or for any infringement of patents or other rights of third parties that may result from its use. No license is granted by implication or otherwise under any patent or patent rights of NVIDIA Corporation. Specifications mentioned in this publication are subject to change without notice. This publication supersedes and replaces all information previously supplied. NVIDIA Corporation products are not authorized for use as critical components in life support devices or systems without express written approval of NVIDIA Corporation. Trademarks NVIDIA and the NVIDIA logo are trademarks or registered trademarks of NVIDIA Corporation. Microsoft, Windows, the Windows logo, and DirectX are registered trademarks of Microsoft Corporation. OpenGL is a trademark of SGI. Other company and product names may be trademarks of the respective companies with which they are associated. Copyright Copyright 2004-2008 NVIDIA Corporation. All rights reserved. NVIDIA Corporation 2701 San Tomas Expressway Santa Clara, CA 95050 www.nvidia.com