CINXE.COM
ARB assembly language - Wikipedia
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>ARB assembly language - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )enwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy", "wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"2cc4050a-ba1d-4cc0-b56e-cebbc996b914","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"ARB_assembly_language","wgTitle":"ARB assembly language","wgCurRevisionId":1211314761,"wgRevisionId":445553441,"wgArticleId":12443879,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Assembly languages","OpenGL","Shading languages"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"ARB_assembly_language","wgRelevantArticleId":12443879,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":false,"wgFlaggedRevsParams":{"tags":{"status":{"levels":1}}},"wgMediaViewerOnClick" :true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":9000,"wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q4653581","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready", "ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","mediawiki.codex.messagebox.styles":"ready","mediawiki.action.styles":"ready","mediawiki.interface.helpers.styles":"ready","ext.cite.styles":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.ReferenceTooltips","ext.gadget.switcher","ext.urlShortener.toolbar","ext.centralauth.centralautologin","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface", "ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints","ext.quicksurveys.init","ext.growthExperiments.SuggestedEditSession","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&modules=ext.cite.styles%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediaBadges%7Cext.wikimediamessages.styles%7Cmediawiki.action.styles%7Cmediawiki.codex.messagebox.styles%7Cmediawiki.interface.helpers.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="noindex,nofollow,max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="ARB assembly language - Wikipedia"> <meta property="og:type" content="website"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//en.m.wikipedia.org/wiki/ARB_assembly_language"> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=ARB_assembly_language&action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (en)"> <link rel="EditURI" type="application/rsd+xml" href="//en.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://en.wikipedia.org/wiki/ARB_assembly_language"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en"> <link rel="alternate" type="application/atom+xml" title="Wikipedia Atom feed" href="/w/index.php?title=Special:RecentChanges&feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-ARB_assembly_language rootpage-ARB_assembly_language skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-contents" class="mw-list-item"><a href="/wiki/Wikipedia:Contents" title="Guides to browsing Wikipedia"><span>Contents</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:Current_events" title="Articles related to current events"><span>Current events</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Visit a randomly selected article [x]" accesskey="x"><span>Random article</span></a></li><li id="n-aboutsite" class="mw-list-item"><a href="/wiki/Wikipedia:About" title="Learn about Wikipedia and how it works"><span>About Wikipedia</span></a></li><li id="n-contactpage" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us" title="How to contact Wikipedia"><span>Contact us</span></a></li> </ul> </div> </div> <div id="p-interaction" class="vector-menu mw-portlet mw-portlet-interaction" > <div class="vector-menu-heading"> Contribute </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Help:Contents" title="Guidance on how to use and edit Wikipedia"><span>Help</span></a></li><li id="n-introduction" class="mw-list-item"><a href="/wiki/Help:Introduction" title="Learn how to edit Wikipedia"><span>Learn to edit</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:Community_portal" title="The hub for editors"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes to Wikipedia [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_upload_wizard" title="Add images or other media for use on Wikipedia"><span>Upload file</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Main_Page" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="The Free Encyclopedia" src="/static/images/mobile/copyright/wikipedia-tagline-en.svg" width="117" height="13" style="width: 7.3125em; height: 0.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search Wikipedia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikipedia" aria-label="Search Wikipedia" autocapitalize="sentences" title="Search Wikipedia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page's font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&returnto=ARB+assembly+language&returntoquery=oldid%3D445553441" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&returnto=ARB+assembly+language&returntoquery=oldid%3D445553441" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Log in and more options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&returnto=ARB+assembly+language&returntoquery=oldid%3D445553441" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&returnto=ARB+assembly+language&returntoquery=oldid%3D445553441" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">(Top)</div> </a> </li> <li id="toc-History" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#History"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>History</span> </div> </a> <ul id="toc-History-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Details" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Details"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Details</span> </div> </a> <button aria-controls="toc-Details-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Details subsection</span> </button> <ul id="toc-Details-sublist" class="vector-toc-list"> <li id="toc-ARB_vertex_program" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#ARB_vertex_program"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1</span> <span>ARB_vertex_program</span> </div> </a> <ul id="toc-ARB_vertex_program-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-ARB_fragment_program" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#ARB_fragment_program"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.2</span> <span>ARB_fragment_program</span> </div> </a> <ul id="toc-ARB_fragment_program-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-OpenGL_Parameters" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#OpenGL_Parameters"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.3</span> <span>OpenGL Parameters</span> </div> </a> <ul id="toc-OpenGL_Parameters-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-ARB_Variables" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#ARB_Variables"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.4</span> <span>ARB Variables</span> </div> </a> <ul id="toc-ARB_Variables-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Vertex_Attributes" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Vertex_Attributes"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.5</span> <span>Vertex Attributes</span> </div> </a> <ul id="toc-Vertex_Attributes-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-State_Matrices" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#State_Matrices"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.6</span> <span>State Matrices</span> </div> </a> <ul id="toc-State_Matrices-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-ARB_Assembly_Instructions" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#ARB_Assembly_Instructions"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.7</span> <span>ARB Assembly Instructions</span> </div> </a> <ul id="toc-ARB_Assembly_Instructions-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Sample_Code" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Sample_Code"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Sample Code</span> </div> </a> <button aria-controls="toc-Sample_Code-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Sample Code subsection</span> </button> <ul id="toc-Sample_Code-sublist" class="vector-toc-list"> <li id="toc-A_sample_trivial_ARB_Vertex_Shader" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#A_sample_trivial_ARB_Vertex_Shader"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1</span> <span>A sample trivial ARB Vertex Shader</span> </div> </a> <ul id="toc-A_sample_trivial_ARB_Vertex_Shader-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-A_sample_trivial_ARB_Fragment_Shader" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#A_sample_trivial_ARB_Fragment_Shader"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.2</span> <span>A sample trivial ARB Fragment Shader</span> </div> </a> <ul id="toc-A_sample_trivial_ARB_Fragment_Shader-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-See_also" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#See_also"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>See also</span> </div> </a> <ul id="toc-See_also-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-References" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#References"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>References</span> </div> </a> <ul id="toc-References-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">ARB assembly language</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="This article exist only in this language. Add the article for other languages" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-0" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">Add languages</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> <div class="after-portlet after-portlet-lang"><span class="uls-after-portlet-link"></span><span class="wb-langlinks-add wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q4653581#sitelinks-wikipedia" title="Add interlanguage links" class="wbc-editpage">Add links</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/ARB_assembly_language" title="View the content page [c]" accesskey="c"><span>Article</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Talk:ARB_assembly_language" rel="discussion" title="Discuss improvements to the content page [t]" accesskey="t"><span>Talk</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/ARB_assembly_language"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=ARB_assembly_language&action=edit&oldid=445553441" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=ARB_assembly_language&action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/ARB_assembly_language"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=ARB_assembly_language&action=edit&oldid=445553441" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=ARB_assembly_language&action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/ARB_assembly_language" title="List of all English Wikipedia pages containing links to this page [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/ARB_assembly_language" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=ARB_assembly_language&oldid=445553441" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=ARB_assembly_language&action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Special:CiteThisPage&page=ARB_assembly_language&id=445553441&wpFormIdentifier=titleform" title="Information on how to cite this page"><span>Cite this page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&url=https%3A%2F%2Fen.wikipedia.org%2Fw%2Findex.php%3Ftitle%3DARB_assembly_language%26oldid%3D445553441"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fen.wikipedia.org%2Fw%2Findex.php%3Ftitle%3DARB_assembly_language%26oldid%3D445553441"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Special:Book&bookcmd=render_article&arttitle=ARB+assembly+language&returnto=ARB+assembly+language&oldid=445553441&writer=rl" title="Download this page as a PDF file"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=ARB_assembly_language&printable=yes" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q4653581" title="Structured data on this page hosted by Wikidata [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">From Wikipedia, the free encyclopedia</div> </div> <div id="contentSub"><div id="mw-content-subtitle"><div class="cdx-message cdx-message--block cdx-message--warning mw-revision"><span class="cdx-message__icon"></span><div class="cdx-message__content"><div id="mw-revision-info"><p><b>This is an <a href="/wiki/Help:Page_history" title="Help:Page history">old revision</a> of this page, as edited by <span id="mw-revision-name"><a href="/wiki/User:GreyCat" class="mw-userlink" title="User:GreyCat" data-mw-revid="445553441"><bdi>GreyCat</bdi></a> <span class="mw-usertoollinks">(<a href="/wiki/User_talk:GreyCat" class="mw-usertoollinks-talk" title="User talk:GreyCat">talk</a> | <a href="/wiki/Special:Contributions/GreyCat" class="mw-usertoollinks-contribs" title="Special:Contributions/GreyCat">contribs</a>)</span></span> at <span id="mw-revision-date">19:56, 18 August 2011</span><span id="mw-revision-summary"> <span class="comment">(Refined categories)</span></span>. The present address (URL) is a <a href="/wiki/Help:Permanent_link" title="Help:Permanent link">permanent link</a> to this revision, which may differ significantly from the <span class="plainlinks"><a class="external text" href="https://en.wikipedia.org/wiki/ARB_assembly_language">current revision</a></span>.</b></p><div id="revision-info-plain" style="display: none;">Revision as of 19:56, 18 August 2011 by <a href="/wiki/User:GreyCat" class="mw-userlink" title="User:GreyCat" data-mw-revid="445553441"><bdi>GreyCat</bdi></a> <span class="mw-usertoollinks">(<a href="/wiki/User_talk:GreyCat" class="mw-usertoollinks-talk" title="User talk:GreyCat">talk</a> | <a href="/wiki/Special:Contributions/GreyCat" class="mw-usertoollinks-contribs" title="Special:Contributions/GreyCat">contribs</a>)</span> <span class="comment">(Refined categories)</span></div></div><div id="mw-revision-nav">(<a href="/w/index.php?title=ARB_assembly_language&diff=prev&oldid=445553441" title="ARB assembly language">diff</a>) <a href="/w/index.php?title=ARB_assembly_language&direction=prev&oldid=445553441" title="ARB assembly language">← Previous revision</a> | <a href="/wiki/ARB_assembly_language" title="ARB assembly language">Latest revision</a> (<a href="/w/index.php?title=ARB_assembly_language&diff=cur&oldid=445553441" title="ARB assembly language">diff</a>) | <a href="/w/index.php?title=ARB_assembly_language&direction=next&oldid=445553441" title="ARB assembly language">Newer revision →</a> (<a href="/w/index.php?title=ARB_assembly_language&diff=next&oldid=445553441" title="ARB assembly language">diff</a>)</div></div></div></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><p><b>ARB</b> - <b>OpenGL Assembly Language</b> is a low-level <a href="/wiki/Shading_language" title="Shading language">shading language</a>. It was created by the <a href="/wiki/OpenGL_ARB" class="mw-redirect" title="OpenGL ARB">OpenGL ARB</a> to standardize <a href="/wiki/GPU" class="mw-redirect" title="GPU">GPU</a> instructions controlling the hardware <a href="/wiki/Graphics_pipeline" title="Graphics pipeline">graphics pipeline</a>. </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="History">History</h2></div> <p><a href="/wiki/Texas_Instruments" title="Texas Instruments">Texas Instruments</a> created the first programmable <a href="/wiki/Graphics_processor" class="mw-redirect" title="Graphics processor">graphics processor</a> in 1985: the <a href="/wiki/TMS34010" title="TMS34010">TMS34010</a>, which allowed developers to load and execute code on the processor to control <a href="/wiki/Pixel" title="Pixel">pixel</a> output on a video display. This was followed by the TMS34020 and TMS34082 in 1989, providing programmable 3D graphics output. </p><p><a href="/wiki/NVIDIA" class="mw-redirect" title="NVIDIA">NVIDIA</a> released its first video card <a href="/wiki/NV1" title="NV1">NV1</a> in 1995, which supported quadratic texture mapping. This was followed by the <a href="/wiki/Riva_128" class="mw-redirect" title="Riva 128">Riva 128</a> (NV3) in 1997, providing the first hardware acceleration for <a href="/wiki/Direct3D" title="Direct3D">Direct3D</a>. </p><p>Various video card vendors released their own accelerated boards, each with their own instruction set for <a href="/wiki/GPU" class="mw-redirect" title="GPU">GPU</a> operations. The <a href="/wiki/OpenGL_Architecture_Review_Board" title="OpenGL Architecture Review Board">OpenGL Architecture Review Board</a> (ARB) was formed in 1992, in part to establish standards for the <a href="/wiki/GPU" class="mw-redirect" title="GPU">GPU</a> industry. </p><p>The ARB and <a href="/wiki/NVIDIA" class="mw-redirect" title="NVIDIA">NVIDIA</a> established a number of <a href="/wiki/OpenGL" title="OpenGL">OpenGL</a> extensions to standardize GPU programming<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>: </p> <ul><li>EXT_texture_env_combine - provided a programmable method of combining textures.</li> <li>NV_register_combiners - GeForce 256</li> <li>NV_vertex_program - GeForce 3</li> <li>NV_texture_shader - GeForce 3</li> <li>NV_texture_shader3 - GeForce 4</li> <li>NV_vertex_program2 - GeForce FX</li> <li>NV_fragment_program - GeForce FX</li></ul> <p>This culminated with <a href="/wiki/OpenGL_Architecture_Review_Board" title="OpenGL Architecture Review Board">ARB</a>'s 2002 release of </p> <ul><li>ARB_vertex_program<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup></li> <li>ARB_fragment_program<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup></li></ul> <p>These two extensions provided an industry standard for an assembly language that controlled the <a href="/wiki/GPU" class="mw-redirect" title="GPU">GPU</a> pipeline for 3D vertex and interpolated pixel properties, respectively. </p><p>Subsequent high-level <a href="/wiki/Shading_language" title="Shading language">shading languages</a> sometimes compile to this ARB standard. While 3D developers are now more likely to use a C-like, high-level shading language for <a href="/wiki/GPU" class="mw-redirect" title="GPU">GPU</a> programming, ARB assembly has the advantage of being supported on a wide range of hardware. </p><p>Note however that some features, such as loops and conditionals, are not available in ARB assembly, and using them requires to adopt either the NV_gpu_program4 extension, or the GLSL shading language. </p><p>Most non-nVidia OpenGL implementations do not provide the nVidia ARB assembly extension and do not offer any other way to access all the shader features directly in assembly, forcing the use of GLSL even for machine generated shaders where assembly would be more appropriate. </p> <div class="mw-heading mw-heading2"><h2 id="Details">Details</h2></div> <div class="mw-heading mw-heading3"><h3 id="ARB_vertex_program">ARB_vertex_program</h3></div> <p>The ARB Vertex Program extension provides APIs to load ARBvp1.0 assembly instructions, enable selected programs, and to set various GPU parameters. </p><p>Vertex programs are used to modify vertex properties, such as position, normals and texture coordinates, that are passed to the next pipeline process: often a fragment shader; more recently, a geometry shader. </p> <div class="mw-heading mw-heading3"><h3 id="ARB_fragment_program">ARB_fragment_program</h3></div> <p>The ARB Fragment Program extension provides APIs to load ARBfp1.0 assembly instructions, enable selected programs, and to set various GPU parameters. </p><p><a href="/wiki/OpenGL" title="OpenGL">OpenGL</a> fragments are interpolated pixel definitions. The <a href="/wiki/GPU" class="mw-redirect" title="GPU">GPU</a>'s vertex processor calculates all the pixels controlled by a set of vertices, interpolates their position and other properties and passes them onto its fragment process. Fragment programs allow developers to modify these pixel properties before they are rendered to a frame buffer for display. </p> <div class="mw-heading mw-heading3"><h3 id="OpenGL_Parameters">OpenGL Parameters</h3></div> <ul><li><b>Attrib</b> parameters are per-vertex attributes such as vertex normals.</li></ul> <ul><li><b>Local</b> parameters are applied across a program's entire data set for a given shader pass.</li></ul> <ul><li><b>Env</b> parameters are applied across all programs.</li></ul> <div class="mw-heading mw-heading3"><h3 id="ARB_Variables">ARB Variables</h3></div> <p>All ARB assembly variables are float4 vectors, which may be addressed by xyzw or rgba suffixes. </p><p>ARB registers are scalar variables where only one element may be addressed. </p> <ul><li><b>ADDRESS</b> variables are registers.</li></ul> <ul><li><b>ATTRIB</b> are per-vertex attributes.</li></ul> <ul><li><b>PARAM</b> are uniform properties - constants, Env or Local.</li></ul> <ul><li><b>TEMP</b> temporary variables.</li></ul> <ul><li><b>ALIAS</b> provides alternate names for variables.</li></ul> <ul><li><b>OUTPUT</b> designates variables that are passed back to the pipeline.</li></ul> <div class="mw-heading mw-heading3"><h3 id="Vertex_Attributes">Vertex Attributes</h3></div> <p>ARB assembly supports the following suffixes for vertex attributes: </p> <ul><li><b>position</b></li> <li><b>weight</b></li> <li><b>normal</b></li> <li><b>color</b></li> <li><b>fogcoord</b></li> <li><b>texcoord</b></li> <li><b>matrixindex</b></li> <li><b>attrib</b></li></ul> <div class="mw-heading mw-heading3"><h3 id="State_Matrices">State Matrices</h3></div> <p>ARB assembly supports the following state matrices: </p> <ul><li><b>modelview</b></li> <li><b>projection</b></li> <li><b>texture</b></li> <li><b>palette</b></li> <li><b>program</b></li></ul> <p>The following modifiers may be used: </p> <ul><li><b>inverse</b></li> <li><b>transpose</b></li> <li><b>invtrans</b></li></ul> <div class="mw-heading mw-heading3"><h3 id="ARB_Assembly_Instructions">ARB Assembly Instructions</h3></div> <p>ARB supports the following instructions: </p> <ul><li><b>ABS</b> - absolute value</li> <li><b>ADD</b> - add</li> <li><b>ARL</b> - address register load</li> <li><b>DP3</b> - 3-component <a href="/wiki/Dot_product" title="Dot product">dot product</a></li> <li><b>DP4</b> - 4-component <a href="/wiki/Dot_product" title="Dot product">dot product</a></li> <li><b>DPH</b> - homogeneous <a href="/wiki/Dot_product" title="Dot product">dot product</a></li> <li><b>DST</b> - distance vector</li> <li><b>EX2</b> - exponential base 2</li> <li><b>EXP</b> - exponential base 2 (approximate)</li> <li><b>FLR</b> - floor</li> <li><b>FRC</b> - fraction</li> <li><b>LG2</b> - logarithm base 2</li> <li><b>LIT</b> - compute light coefficients</li> <li><b>LOG</b> - logarithm base 2 (approximate)</li> <li><b>MAD</b> - multiply and add</li> <li><b>MAX</b> - maximum</li> <li><b>MIN</b> - minimum</li> <li><b>MOV</b> - move</li> <li><b>MUL</b> - multiply</li> <li><b>POW</b> - exponentiate</li> <li><b>RCP</b> - reciprocal</li> <li><b>RSQ</b> - <a href="/wiki/Reciprocal_square_root" class="mw-redirect" title="Reciprocal square root">reciprocal square root</a></li> <li><b>SGE</b> - set on greater than or equal</li> <li><b>SLT</b> - set on less than</li> <li><b>SUB</b> - subtract</li> <li><b>SWZ</b> - extended <a href="/wiki/Swizzling_(computer_graphics)" title="Swizzling (computer graphics)">swizzle</a></li> <li><b>XPD</b> - <a href="/wiki/Cross_product" title="Cross product">cross product</a></li></ul> <p>This is only a partial list of assembly instructions ; a reference can be found here : <a rel="nofollow" class="external text" href="http://www.renderguild.com/gpuguide.pdf">Shader Assembly Language (ARB/NV) Quick Reference Guide for OpenGL</a>. </p><p>ARB assembly provides no instructions for flow control or branching. SGE and SLT may be used to conditionally set or clear vectors or registers. </p><p>ARB interfaces provide no compiling step for assembly language. </p><p>GL_NV_fragment_program_option extends the ARB_fragment_program language with additional instructions. GL_NV_fragment_program2, GL_NV_vertex_program2_option and GL_NV_vertex_program3 extend it further. </p> <div class="mw-heading mw-heading2"><h2 id="Sample_Code">Sample Code</h2></div> <div class="mw-heading mw-heading3"><h3 id="A_sample_trivial_ARB_Vertex_Shader">A sample trivial ARB Vertex Shader</h3></div> <pre>!!ARBvp1.0 TEMP vertexClip; DP4 vertexClip.x, state.matrix.mvp.row[0], vertex.position; DP4 vertexClip.y, state.matrix.mvp.row[1], vertex.position; DP4 vertexClip.z, state.matrix.mvp.row[2], vertex.position; DP4 vertexClip.w, state.matrix.mvp.row[3], vertex.position; MOV result.position, vertexClip; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord; END </pre> <div class="mw-heading mw-heading3"><h3 id="A_sample_trivial_ARB_Fragment_Shader">A sample trivial ARB Fragment Shader</h3></div> <pre>!!ARBfp1.0 TEMP color; MUL color, fragment.texcoord[0].y, 2.0; ADD color, 1.0, -color; ABS color, color; ADD result.color, 1.0, -color; MOV result.color.a, 1.0; END </pre> <div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div> <ul><li><a href="/wiki/OpenGL" title="OpenGL">OpenGL</a></li> <li><a href="/wiki/OpenGL_Architecture_Review_Board" title="OpenGL Architecture Review Board">OpenGL Architecture Review Board</a></li> <li><a href="/wiki/Shading_language" title="Shading language">Shader Languages</a></li> <li><a href="/wiki/List_of_assemblers" class="mw-redirect" title="List of assemblers">Assembly Languages</a></li></ul> <div class="mw-heading mw-heading2"><h2 id="References">References</h2></div> <div class="mw-references-wrap"><ol class="references"> <li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}</style><cite id="CITEREFSimon_Green" class="citation web cs1">Simon Green. <a rel="nofollow" class="external text" href="http://download.nvidia.com/developer/presentations/2004/6800_Leagues/6800_Leagues_OpenGL_exts.pdf">"History of Programmability in OpenGL"</a> <span class="cs1-format">(PDF)</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=History+of+Programmability+in+OpenGL&rft.au=Simon+Green&rft_id=http%3A%2F%2Fdownload.nvidia.com%2Fdeveloper%2Fpresentations%2F2004%2F6800_Leagues%2F6800_Leagues_OpenGL_exts.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AARB+assembly+language" class="Z3988"></span></span> </li> <li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFARB" class="citation web cs1">ARB. <a rel="nofollow" class="external text" href="http://oss.sgi.com/projects/ogl-sample/registry/ARB/vertex_program.txt">"ARB_vertex_program"</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=ARB_vertex_program&rft.au=ARB&rft_id=http%3A%2F%2Foss.sgi.com%2Fprojects%2Fogl-sample%2Fregistry%2FARB%2Fvertex_program.txt&rfr_id=info%3Asid%2Fen.wikipedia.org%3AARB+assembly+language" class="Z3988"></span></span> </li> <li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFARB" class="citation web cs1">ARB. <a rel="nofollow" class="external text" href="http://oss.sgi.com/projects/ogl-sample/registry/ARB/fragment_program.txt">"ARB_fragment_program"</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=ARB_fragment_program&rft.au=ARB&rft_id=http%3A%2F%2Foss.sgi.com%2Fprojects%2Fogl-sample%2Fregistry%2FARB%2Ffragment_program.txt&rfr_id=info%3Asid%2Fen.wikipedia.org%3AARB+assembly+language" class="Z3988"></span></span> </li> </ol></div> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐6bb4bcc5b5‐gwb5m Cached time: 20241127135144 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.149 seconds Real time usage: 0.182 seconds Preprocessor visited node count: 182/1000000 Post‐expand include size: 3395/2097152 bytes Template argument size: 0/2097152 bytes Highest expansion depth: 5/100 Expensive parser function count: 1/500 Unstrip recursion depth: 1/20 Unstrip post‐expand size: 10013/5000000 bytes Lua time usage: 0.102/10.000 seconds Lua memory usage: 3017432/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 144.674 1 -total 99.76% 144.331 3 Template:Cite_web --> <!-- Saved in RevisionOutputCache with key enwiki:rcache:445553441:dateformat=default and timestamp 20241127135144 and revision id 445553441. --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://en.wikipedia.org/w/index.php?title=ARB_assembly_language&oldid=445553441">https://en.wikipedia.org/w/index.php?title=ARB_assembly_language&oldid=445553441</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Help:Category" title="Help:Category">Categories</a>: <ul><li><a href="/wiki/Category:Assembly_languages" title="Category:Assembly languages">Assembly languages</a></li><li><a href="/wiki/Category:OpenGL" title="Category:OpenGL">OpenGL</a></li><li><a href="/wiki/Category:Shading_languages" title="Category:Shading languages">Shading languages</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 18 August 2011, at 19:56<span class="anonymous-show"> (UTC)</span>.</li> <li id="footer-info-copyright"><span class="nowraplinks">This version of the page has been <a href="/wiki/Help:Page_history" title="Help:Page history">revised</a>. Besides normal editing, the reason for revision may have been that this version contains factual inaccuracies, vandalism, or material not compatible with the <a href="/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License" title="Wikipedia:Text of the Creative Commons Attribution-ShareAlike 4.0 International License">Creative Commons Attribution-ShareAlike 4.0 License</a>.</span></li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:About">About Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:General_disclaimer">Disclaimers</a></li> <li id="footer-places-contact"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact Wikipedia</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/en.wikipedia.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//en.m.wikipedia.org/w/index.php?title=ARB_assembly_language&oldid=445553441&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-6bb4bcc5b5-gwb5m","wgBackendResponseTime":488,"wgPageParseReport":{"limitreport":{"cputime":"0.149","walltime":"0.182","ppvisitednodes":{"value":182,"limit":1000000},"postexpandincludesize":{"value":3395,"limit":2097152},"templateargumentsize":{"value":0,"limit":2097152},"expansiondepth":{"value":5,"limit":100},"expensivefunctioncount":{"value":1,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":10013,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 144.674 1 -total"," 99.76% 144.331 3 Template:Cite_web"]},"scribunto":{"limitreport-timeusage":{"value":"0.102","limit":"10.000"},"limitreport-memusage":{"value":3017432,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-6bb4bcc5b5-gwb5m","timestamp":"20241127135144","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"ARB assembly language","url":"https:\/\/en.wikipedia.org\/wiki\/ARB_assembly_language","sameAs":"http:\/\/www.wikidata.org\/entity\/Q4653581","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q4653581","author":{"@type":"Organization","name":"Contributors to Wikimedia projects"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2007-07-25T17:17:01Z","dateModified":"2011-08-18T19:56:40Z","headline":"low-level\u00a0shading language"}</script> </body> </html>