Name AMD_shader_trinary_minmax Name Strings GL_AMD_shader_trinary_minmax Contact Graham Sellers, AMD (graham.sellers 'at' amd.com) Status Shipping Version Last Modified Date: 10/01/2012 Author Revision: 2 Number 428 Dependencies OpenGL 2.0 or ARB_shader_objects is required. This extension is written against the OpenGL Shading Language Specification, Version 4.30. Overview This extension introduces three new trinary built-in functions to the OpenGL Shading Languages. These functions allow the minimum, maximum or median of three inputs to be found with a single function call. These operations may be useful for sorting and filtering operations, for example. By explicitly performing a trinary operation with a single built-in function, shader compilers and optimizers may be able to generate better instruction sequences for perform sorting and other multi-input functions. IP Status None. New Procedures and Functions None. New Tokens None. Additions to Chapter 2 of the OpenGL Shading Language (GLSL) Specification, version 4.30, (Overview of OpenGL Shading) None. Additions to Chapter 3 of the OpenGL Shading Language (GLSL) Specification, version 4.30, (Basics) None. Additions to Chapter 4 of the OpenGL Shading Language (GLSL) Specification, version 4.30, (Variables and Types) None. Additions to Chapter 5 of the OpenGL Shading Language (GLSL) Specification, version 4.30, (Operators and Expressions) None. Additions to Chapter 6 of the OpenGL Shading Language (GLSL) Specification, version 4.30, (Statement Structure) None. Additions to Chapter 7 of the OpenGL Shading Language (GLSL) Specification, version 4.30 (Built-in variables) None. Additions to Chapter 8 of the OpenGL Shading Language (GLSL) Specification, version 4.30 (Built-in functions) In Section 8.3, "Common Functions", add to the table of functions, p.133: +---------------------------------------------------+--------------------------------------------------------+ | Syntax | Description | +---------------------------------------------------+--------------------------------------------------------+ | genType min3(genType x, genType y, genType z) | Returns the per-component minimum value of x, y, and z | | genIType min3(genIType x, genIType y, genIType z) | Returns the per-component minimum value of x, y, and z | | genUType min3(genUType x, genUType y, genUType z) | Returns the per-component minimum value of x, y, and z | +---------------------------------------------------+--------------------------------------------------------+ | genType max3(genType x, genType y, genType z) | Returns the per-component maximum value of x, y, and z | | genIType max3(genIType x, genIType y, genIType z) | Returns the per-component maximum value of x, y, and z | | genUType max3(genUType x, genUType y, genUType z) | Returns the per-component maximum value of x, y, and z | +---------------------------------------------------+--------------------------------------------------------+ | genType mid3(genType x, genType y, genType z) | Returns the per-component median value of x, y, and z | | genIType mid3(genIType x, genIType y, genIType z) | Returns the per-component median value of x, y, and z | | genUType mid3(genUType x, genUType y, genUType z) | Returns the per-component median value of x, y, and z | +---------------------------------------------------+--------------------------------------------------------+ Additions to Chapter 9 of the OpenGL Shading Language (GLSL) Specification, version 4.30, (Shading Language Grammar) None. Additions to the AGL/GLX/WGL Specifications None. GLX Protocol None. Errors None. Issues 1) Should the trinary min and max functions be given new names (min3, max3) or simply overload the existing min and max functions? RESOLVED: Use new names. Revision History Rev. Date Author Changes ---- -------- -------- ----------------------------------------- 2 10/01/2012 gsellers Update to GLSL 4.30. Ready to post. 1 11/01/2012 gsellers Initial Revision