ActionScript® 3.0 Reference for the Adobe® Flash® Platform
Home  |  Hide Packages and Classes List |  Packages  |  Classes  |  What's New  |  Index  |  Appendixes

Language Reference only
Filters: AIR 32.0 and earlier, Flash Player 32.0 and earlier, Flash Lite 4
Flex 4.6 and earlier, Flash Pro CS6 and earlier
Hide Filters
flash.display3D 

Program3D  - AS3

Packagesx

Top Level
adobe.utils
air.desktop
air.net
air.update
air.update.events
coldfusion.air
coldfusion.air.errors
coldfusion.air.events
coldfusion.service
coldfusion.service.events
coldfusion.service.mxml
com.adobe.acm.solutions.authoring.domain.extensions
com.adobe.acm.solutions.ccr.domain.extensions
com.adobe.consulting.pst.vo
com.adobe.dct.component
com.adobe.dct.component.datadictionary
com.adobe.dct.component.datadictionaryElement
com.adobe.dct.component.dataElementsPanel
com.adobe.dct.component.toolbars
com.adobe.dct.event
com.adobe.dct.exp
com.adobe.dct.model
com.adobe.dct.service
com.adobe.dct.service.provider
com.adobe.dct.transfer
com.adobe.dct.util
com.adobe.dct.view
com.adobe.ep.taskmanagement.domain
com.adobe.ep.taskmanagement.event
com.adobe.ep.taskmanagement.filter
com.adobe.ep.taskmanagement.services
com.adobe.ep.taskmanagement.util
com.adobe.ep.ux.attachmentlist.component
com.adobe.ep.ux.attachmentlist.domain
com.adobe.ep.ux.attachmentlist.domain.events
com.adobe.ep.ux.attachmentlist.domain.renderers
com.adobe.ep.ux.attachmentlist.skin
com.adobe.ep.ux.attachmentlist.skin.renderers
com.adobe.ep.ux.content.event
com.adobe.ep.ux.content.factory
com.adobe.ep.ux.content.handlers
com.adobe.ep.ux.content.managers
com.adobe.ep.ux.content.model.asset
com.adobe.ep.ux.content.model.preview
com.adobe.ep.ux.content.model.relation
com.adobe.ep.ux.content.model.search
com.adobe.ep.ux.content.model.toolbar
com.adobe.ep.ux.content.search
com.adobe.ep.ux.content.services
com.adobe.ep.ux.content.services.load
com.adobe.ep.ux.content.services.permissions
com.adobe.ep.ux.content.services.preview
com.adobe.ep.ux.content.services.providers
com.adobe.ep.ux.content.services.query
com.adobe.ep.ux.content.services.relationships
com.adobe.ep.ux.content.services.search.lccontent
com.adobe.ep.ux.content.services.version
com.adobe.ep.ux.content.view
com.adobe.ep.ux.content.view.components.activate
com.adobe.ep.ux.content.view.components.grid
com.adobe.ep.ux.content.view.components.grid.hover
com.adobe.ep.ux.content.view.components.grid.hover.component
com.adobe.ep.ux.content.view.components.grid.renderers
com.adobe.ep.ux.content.view.components.relationships
com.adobe.ep.ux.content.view.components.review
com.adobe.ep.ux.content.view.components.search.renderers
com.adobe.ep.ux.content.view.components.searchpod
com.adobe.ep.ux.content.view.components.toolbar
com.adobe.ep.ux.content.view.components.toolbar.controlRenderers
com.adobe.ep.ux.content.view.components.version
com.adobe.ep.ux.documentsubmit.component
com.adobe.ep.ux.documentsubmit.domain
com.adobe.ep.ux.documentsubmit.skin
com.adobe.ep.ux.taskaction.component
com.adobe.ep.ux.taskaction.domain
com.adobe.ep.ux.taskaction.domain.events
com.adobe.ep.ux.taskaction.skin
com.adobe.ep.ux.taskdetails.component
com.adobe.ep.ux.taskdetails.domain
com.adobe.ep.ux.taskdetails.skin
com.adobe.ep.ux.tasklist.component
com.adobe.ep.ux.tasklist.domain
com.adobe.ep.ux.tasklist.skin
com.adobe.ep.ux.webdocumentviewer.domain
com.adobe.exm.expression
com.adobe.exm.expression.error
com.adobe.exm.expression.event
com.adobe.exm.expression.impl
com.adobe.fiber.runtime.lib
com.adobe.fiber.services
com.adobe.fiber.services.wrapper
com.adobe.fiber.styles
com.adobe.fiber.util
com.adobe.fiber.valueobjects
com.adobe.gravity.binding
com.adobe.gravity.context
com.adobe.gravity.flex.bundleloader
com.adobe.gravity.flex.progress
com.adobe.gravity.flex.serviceloader
com.adobe.gravity.framework
com.adobe.gravity.init
com.adobe.gravity.service.bundleloader
com.adobe.gravity.service.logging
com.adobe.gravity.service.manifest
com.adobe.gravity.service.progress
com.adobe.gravity.tracker
com.adobe.gravity.ui
com.adobe.gravity.utility
com.adobe.gravity.utility.async
com.adobe.gravity.utility.error
com.adobe.gravity.utility.events
com.adobe.gravity.utility.factory
com.adobe.gravity.utility.flex.async
com.adobe.gravity.utility.logging
com.adobe.gravity.utility.message
com.adobe.gravity.utility.sequence
com.adobe.gravity.utility.url
com.adobe.guides.control
com.adobe.guides.domain
com.adobe.guides.i18n
com.adobe.guides.spark.components.skins
com.adobe.guides.spark.components.skins.mx
com.adobe.guides.spark.headers.components
com.adobe.guides.spark.headers.skins
com.adobe.guides.spark.layouts.components
com.adobe.guides.spark.layouts.skins
com.adobe.guides.spark.navigators.components
com.adobe.guides.spark.navigators.renderers
com.adobe.guides.spark.navigators.skins
com.adobe.guides.spark.util
com.adobe.guides.spark.wrappers.components
com.adobe.guides.spark.wrappers.skins
com.adobe.guides.submit
com.adobe.icc.dc.domain
com.adobe.icc.dc.domain.factory
com.adobe.icc.editors.events
com.adobe.icc.editors.handlers
com.adobe.icc.editors.managers
com.adobe.icc.editors.model
com.adobe.icc.editors.model.config
com.adobe.icc.editors.model.el
com.adobe.icc.editors.model.el.operands
com.adobe.icc.editors.model.el.operators
com.adobe.icc.enum
com.adobe.icc.external.dc
com.adobe.icc.obj
com.adobe.icc.services
com.adobe.icc.services.category
com.adobe.icc.services.config
com.adobe.icc.services.download
com.adobe.icc.services.export
com.adobe.icc.services.external
com.adobe.icc.services.formbridge
com.adobe.icc.services.fragmentlayout
com.adobe.icc.services.layout
com.adobe.icc.services.letter
com.adobe.icc.services.locator
com.adobe.icc.services.module
com.adobe.icc.services.render
com.adobe.icc.services.submit
com.adobe.icc.services.user
com.adobe.icc.token
com.adobe.icc.vo
com.adobe.icc.vo.render
com.adobe.icomm.assetplacement.controller
com.adobe.icomm.assetplacement.controller.utils
com.adobe.icomm.assetplacement.data
com.adobe.icomm.assetplacement.model
com.adobe.livecycle.assetmanager.client
com.adobe.livecycle.assetmanager.client.event
com.adobe.livecycle.assetmanager.client.handler
com.adobe.livecycle.assetmanager.client.managers
com.adobe.livecycle.assetmanager.client.model
com.adobe.livecycle.assetmanager.client.model.cms
com.adobe.livecycle.assetmanager.client.service
com.adobe.livecycle.assetmanager.client.service.search
com.adobe.livecycle.assetmanager.client.service.search.cms
com.adobe.livecycle.assetmanager.client.utils
com.adobe.livecycle.content
com.adobe.livecycle.rca.model
com.adobe.livecycle.rca.model.constant
com.adobe.livecycle.rca.model.document
com.adobe.livecycle.rca.model.participant
com.adobe.livecycle.rca.model.reminder
com.adobe.livecycle.rca.model.stage
com.adobe.livecycle.rca.service
com.adobe.livecycle.rca.service.core
com.adobe.livecycle.rca.service.core.delegate
com.adobe.livecycle.rca.service.process
com.adobe.livecycle.rca.service.process.delegate
com.adobe.livecycle.rca.token
com.adobe.livecycle.ria.security.api
com.adobe.livecycle.ria.security.service
com.adobe.mosaic.layouts
com.adobe.mosaic.layouts.dragAndDrop
com.adobe.mosaic.layouts.interfaces
com.adobe.mosaic.mxml
com.adobe.mosaic.om.constants
com.adobe.mosaic.om.events
com.adobe.mosaic.om.impl
com.adobe.mosaic.om.interfaces
com.adobe.mosaic.skinning
com.adobe.mosaic.sparklib.editors
com.adobe.mosaic.sparklib.optionMenu
com.adobe.mosaic.sparklib.scrollableMenu
com.adobe.mosaic.sparklib.scrollableMenu.skins
com.adobe.mosaic.sparklib.tabLayout
com.adobe.mosaic.sparklib.tabLayout.events
com.adobe.mosaic.sparklib.tabLayout.layouts
com.adobe.mosaic.sparklib.tabLayout.skins
com.adobe.mosaic.sparklib.text
com.adobe.mosaic.sparklib.util
com.adobe.solutions.acm.authoring.presentation
com.adobe.solutions.acm.authoring.presentation.actionbar
com.adobe.solutions.acm.authoring.presentation.common
com.adobe.solutions.acm.authoring.presentation.events
com.adobe.solutions.acm.authoring.presentation.fragment
com.adobe.solutions.acm.authoring.presentation.letter
com.adobe.solutions.acm.authoring.presentation.letter.data
com.adobe.solutions.acm.authoring.presentation.preview
com.adobe.solutions.acm.authoring.presentation.rte
com.adobe.solutions.acm.ccr.presentation
com.adobe.solutions.acm.ccr.presentation.contentcapture
com.adobe.solutions.acm.ccr.presentation.contentcapture.events
com.adobe.solutions.acm.ccr.presentation.contentcapture.preview
com.adobe.solutions.acm.ccr.presentation.datacapture
com.adobe.solutions.acm.ccr.presentation.datacapture.renderers
com.adobe.solutions.acm.ccr.presentation.pdf
com.adobe.solutions.exm
com.adobe.solutions.exm.authoring
com.adobe.solutions.exm.authoring.components.controls
com.adobe.solutions.exm.authoring.components.toolbars
com.adobe.solutions.exm.authoring.domain
com.adobe.solutions.exm.authoring.domain.expression
com.adobe.solutions.exm.authoring.domain.impl
com.adobe.solutions.exm.authoring.domain.method
com.adobe.solutions.exm.authoring.domain.variable
com.adobe.solutions.exm.authoring.enum
com.adobe.solutions.exm.authoring.events
com.adobe.solutions.exm.authoring.model
com.adobe.solutions.exm.authoring.renderer
com.adobe.solutions.exm.authoring.view
com.adobe.solutions.exm.expression
com.adobe.solutions.exm.impl
com.adobe.solutions.exm.impl.method
com.adobe.solutions.exm.method
com.adobe.solutions.exm.mock
com.adobe.solutions.exm.mock.method
com.adobe.solutions.exm.runtime
com.adobe.solutions.exm.runtime.impl
com.adobe.solutions.exm.variable
com.adobe.solutions.prm.constant
com.adobe.solutions.prm.domain
com.adobe.solutions.prm.domain.factory
com.adobe.solutions.prm.domain.impl
com.adobe.solutions.prm.domain.manager
com.adobe.solutions.prm.presentation.asset
com.adobe.solutions.prm.presentation.constant
com.adobe.solutions.prm.presentation.document
com.adobe.solutions.prm.presentation.event
com.adobe.solutions.prm.presentation.file
com.adobe.solutions.prm.presentation.project
com.adobe.solutions.prm.presentation.team
com.adobe.solutions.prm.presentation.util
com.adobe.solutions.prm.service
com.adobe.solutions.prm.services.impl
com.adobe.solutions.prm.vo
com.adobe.solutions.rca.constant
com.adobe.solutions.rca.domain
com.adobe.solutions.rca.domain.common
com.adobe.solutions.rca.domain.factory
com.adobe.solutions.rca.domain.impl
com.adobe.solutions.rca.domain.impl.manager
com.adobe.solutions.rca.domain.manager
com.adobe.solutions.rca.presentation
com.adobe.solutions.rca.presentation.comment
com.adobe.solutions.rca.presentation.constant
com.adobe.solutions.rca.presentation.event
com.adobe.solutions.rca.presentation.gantt
com.adobe.solutions.rca.presentation.gantt.ruler
com.adobe.solutions.rca.presentation.template
com.adobe.solutions.rca.presentation.template.audit
com.adobe.solutions.rca.presentation.template.definition
com.adobe.solutions.rca.presentation.template.documents
com.adobe.solutions.rca.presentation.template.stages
com.adobe.solutions.rca.presentation.util
com.adobe.solutions.rca.service
com.adobe.solutions.rca.services.impl
com.adobe.solutions.rca.vo
com.adobe.solutions.rca.vo.um
com.adobe.viewsource
fl.accessibility
fl.containers
fl.controls
fl.controls.dataGridClasses
fl.controls.listClasses
fl.controls.progressBarClasses
fl.core
fl.data
fl.display
fl.events
fl.ik
fl.lang
fl.livepreview
fl.managers
fl.motion
fl.motion.easing
fl.rsl
fl.text
fl.transitions
fl.transitions.easing
fl.video
flash.accessibility
flash.concurrent
flash.crypto
flash.data
flash.desktop
flash.display
flash.display3D
flash.display3D.textures
flash.errors
flash.events
flash.external
flash.filesystem
flash.filters
flash.geom
flash.globalization
flash.html
flash.media
flash.net
flash.net.dns
flash.net.drm
flash.notifications
flash.permissions
flash.printing
flash.profiler
flash.sampler
flash.security
flash.sensors
flash.system
flash.text
flash.text.engine
flash.text.ime
flash.ui
flash.utils
flash.xml
flashx.textLayout
flashx.textLayout.compose
flashx.textLayout.container
flashx.textLayout.conversion
flashx.textLayout.edit
flashx.textLayout.elements
flashx.textLayout.events
flashx.textLayout.factory
flashx.textLayout.formats
flashx.textLayout.operations
flashx.textLayout.utils
flashx.undo
ga.controls
ga.layouts
ga.model
ga.uiComponents
ga.util
ga.views
ga.wrappers
lc.foundation
lc.foundation.domain
lc.foundation.events
lc.foundation.ui
lc.foundation.util
lc.preloader
lc.procmgmt
lc.procmgmt.commands
lc.procmgmt.domain
lc.procmgmt.events
lc.procmgmt.formbridge
lc.procmgmt.impl
lc.procmgmt.ui.attachments
lc.procmgmt.ui.controls
lc.procmgmt.ui.controls.card
lc.procmgmt.ui.controls.renderer
lc.procmgmt.ui.help
lc.procmgmt.ui.layout
lc.procmgmt.ui.presentationmodel
lc.procmgmt.ui.process
lc.procmgmt.ui.search
lc.procmgmt.ui.startpoint
lc.procmgmt.ui.task
lc.procmgmt.ui.task.form
lc.procmgmt.ui.task.form.commands
lc.procmgmt.ui.tracking
mx.accessibility
mx.automation
mx.automation.air
mx.automation.delegates
mx.automation.delegates.advancedDataGrid
mx.automation.delegates.charts
mx.automation.delegates.containers
mx.automation.delegates.controls
mx.automation.delegates.controls.dataGridClasses
mx.automation.delegates.controls.fileSystemClasses
mx.automation.delegates.core
mx.automation.delegates.flashflexkit
mx.automation.events
mx.binding
mx.binding.utils
mx.charts
mx.charts.chartClasses
mx.charts.effects
mx.charts.effects.effectClasses
mx.charts.events
mx.charts.renderers
mx.charts.series
mx.charts.series.items
mx.charts.series.renderData
mx.charts.styles
mx.collections
mx.collections.errors
mx.containers
mx.containers.accordionClasses
mx.containers.dividedBoxClasses
mx.containers.errors
mx.containers.utilityClasses
mx.controls
mx.controls.advancedDataGridClasses
mx.controls.dataGridClasses
mx.controls.listClasses
mx.controls.menuClasses
mx.controls.olapDataGridClasses
mx.controls.scrollClasses
mx.controls.sliderClasses
mx.controls.textClasses
mx.controls.treeClasses
mx.controls.videoClasses
mx.core
mx.core.windowClasses
mx.data
mx.data.crypto
mx.data.errors
mx.data.events
mx.data.messages
mx.data.mxml
mx.data.offline.errors
mx.data.utils
mx.effects
mx.effects.easing
mx.effects.effectClasses
mx.events
mx.filters
mx.flash
mx.formatters
mx.geom
mx.graphics
mx.graphics.codec
mx.graphics.shaderClasses
mx.logging
mx.logging.errors
mx.logging.targets
mx.managers
mx.messaging
mx.messaging.channels
mx.messaging.config
mx.messaging.errors
mx.messaging.events
mx.messaging.management
mx.messaging.messages
mx.modules
mx.netmon
mx.olap
mx.olap.aggregators
mx.preloaders
mx.printing
mx.resources
mx.rpc
mx.rpc.events
mx.rpc.http
mx.rpc.http.mxml
mx.rpc.livecycle
mx.rpc.mxml
mx.rpc.remoting
mx.rpc.remoting.mxml
mx.rpc.soap
mx.rpc.soap.mxml
mx.rpc.wsdl
mx.rpc.xml
mx.skins
mx.skins.halo
mx.skins.spark
mx.skins.wireframe
mx.skins.wireframe.windowChrome
mx.states
mx.styles
mx.utils
mx.validators
org.osmf.containers
org.osmf.display
org.osmf.elements
org.osmf.events
org.osmf.layout
org.osmf.logging
org.osmf.media
org.osmf.metadata
org.osmf.net
org.osmf.net.dvr
org.osmf.net.httpstreaming
org.osmf.net.metrics
org.osmf.net.qos
org.osmf.net.rtmpstreaming
org.osmf.net.rules
org.osmf.traits
org.osmf.utils
spark.accessibility
spark.automation.delegates
spark.automation.delegates.components
spark.automation.delegates.components.gridClasses
spark.automation.delegates.components.mediaClasses
spark.automation.delegates.components.supportClasses
spark.automation.delegates.skins.spark
spark.automation.events
spark.collections
spark.components
spark.components.calendarClasses
spark.components.gridClasses
spark.components.mediaClasses
spark.components.supportClasses
spark.components.windowClasses
spark.core
spark.effects
spark.effects.animation
spark.effects.easing
spark.effects.interpolation
spark.effects.supportClasses
spark.events
spark.filters
spark.formatters
spark.formatters.supportClasses
spark.globalization
spark.globalization.supportClasses
spark.layouts
spark.layouts.supportClasses
spark.managers
spark.modules
spark.preloaders
spark.primitives
spark.primitives.supportClasses
spark.skins
spark.skins.mobile
spark.skins.mobile.supportClasses
spark.skins.spark
spark.skins.spark.mediaClasses.fullScreen
spark.skins.spark.mediaClasses.normal
spark.skins.spark.windowChrome
spark.skins.wireframe
spark.skins.wireframe.mediaClasses
spark.skins.wireframe.mediaClasses.fullScreen
spark.transitions
spark.utils
spark.validators
spark.validators.supportClasses
xd.core.axm.enterprise.view.components
xd.core.axm.enterprise.view.skins
xd.core.axm.view.components
xd.core.axm.view.components.support

Language Elements

Global Constants
Global Functions
Operators
Statements, Keywords & Directives
Special Types

Appendixes

What's New
Compiler Errors
Compiler Warnings
Run-Time Errors
Migrating to ActionScript 3
Supported Character Sets
MXML Only Tags
Motion XML Elements
Timed Text Tags
List of deprecated elements
Accessibility Implementation Constants
How to Use ActionScript Examples
Legal notices
Packageflash.display3D
Classpublic final class Program3D
InheritanceProgram3D Inheritance Object

Language Version: ActionScript 3.0
Runtime Versions: Flash Player 11, AIR 2

The Program3D class represents a pair of rendering programs (also called "shaders") uploaded to the rendering context.

Programs managed by a Program3D object control the entire rendering of triangles during a Context3D drawTriangles() call. Upload the binary bytecode to the rendering context using the upload method. (Once uploaded, the program in the original byte array is no longer referenced; changing or discarding the source byte array does not change the program.)

Programs always consist of two linked parts: A vertex and a fragment program.

  1. The vertex program operates on data defined in VertexBuffer3D objects and is responsible for projecting vertices into clip space and passing any required vertex data, such as color, to the fragment shader.
  2. The fragment shader operates on the attributes passed to it by the vertex program and produces a color for every rasterized fragment of a triangle, resulting in pixel colors. Note that fragment programs have several names in 3D programming literature, including fragment shader and pixel shader.

Designate which program pair to use for subsequent rendering operations by passing the corresponding Program3D instance to the Context3D setProgram() method.

You cannot create a Program3D object directly; use the Context3D createProgram() method instead.

Related API Elements



Public Properties
 PropertyDefined By
 Inheritedconstructor : Object
A reference to the class object or constructor function for a given object instance.
Object
Public Methods
 MethodDefined By
  
Frees all resources associated with this object.
Program3D
 Inherited
Indicates whether an object has a specified property defined.
Object
 Inherited
Indicates whether an instance of the Object class is in the prototype chain of the object specified as the parameter.
Object
 Inherited
Indicates whether the specified property exists and is enumerable.
Object
 Inherited
Sets the availability of a dynamic property for loop operations.
Object
 Inherited
Returns the string representation of this object, formatted according to locale-specific conventions.
Object
 Inherited
Returns the string representation of the specified object.
Object
  
upload(vertexProgram:ByteArray, fragmentProgram:ByteArray):void
Uploads a pair of rendering programs expressed in AGAL (Adobe Graphics Assembly Language) bytecode.
Program3D
 Inherited
Returns the primitive value of the specified object.
Object
Method Detail

dispose

()method
public function dispose():void

Language Version: ActionScript 3.0
Runtime Versions: Flash Player 11, AIR 3

Frees all resources associated with this object. After disposing a Program3D object, calling upload() and rendering using this object will fail.

upload

()method 
public function upload(vertexProgram:ByteArray, fragmentProgram:ByteArray):void

Language Version: ActionScript 3.0
Runtime Versions: Flash Player 11, AIR 3

Uploads a pair of rendering programs expressed in AGAL (Adobe Graphics Assembly Language) bytecode.

Program bytecode can be created using the Pixel Bender 3D offline tools. It can also be created dynamically. The AGALMiniAssembler class is a utility class that compiles AGAL assembly language programs to AGAL bytecode. The class is not part of the runtime. When you upload the shader programs, the bytecode is compiled into the native shader language for the current device (for example, OpenGL or Direct3D). The runtime validates the bytecode on upload.

The programs run whenever the Context3D drawTriangles() method is invoked. The vertex program is executed once for each vertex in the list of triangles to be drawn. The fragment program is executed once for each pixel on a triangle surface.

The "variables" used by a shader program are called registers. The following registers are defined:

NameNumber per Fragment programNumber per Vertex programPurpose
Attributen/a8Vertex shader input; read from a vertex buffer specified using Context3D.setVertexBufferAt().
Constant28128Shader input; set using the Context3D.setProgramConstants() family of functions.
Temporary88Temporary register for computation, not accessible outside program.
Output11Shader output: in a vertex program, the output is the clipspace position; in a fragment program, the output is a color.
Varying88Transfer interpolated data between vertex and fragment shaders. The varying registers from the vertex program are applied as input to the fragment program. Values are interpolated according to the distance from the triangle vertices.
Sampler8n/aFragment shader input; read from a texture specified using Context3D.setTextureAt()

A vertex program receives input from two sources: vertex buffers and constant registers. Specify which vertex data to use for a particular vertex attribute register using the Context3D setVertexBufferAt() method. You can define up to eight input registers for vertex attributes. The vertex attribute values are read from the vertex buffer for each vertex in the triangle list and placed in the attribute register. Specify constant registers using the Context3D setProgramConstantsFromMatrix() or setProgramConstantsFromVector() methods. Constant registers retain the same value for every vertex in the triangle list. (You can only modify the constant values between calls to drawTriangles().)

The vertex program is responsible for projecting the triangle vertices into clip space (the canonical viewing area within ±1 on the x and y axes and 0-1 on the z axis) and placing the transformed coordinates in its output register. (Typically, the appropriate projection matrix is provided to the shader in a set of constant registers.) The vertex program must also copy any vertex attributes or computed values needed by the fragment program to a special set of variables called varying registers. When a fragment shader runs, the value supplied in a varying register is linearly interpolated according to the distance of the current fragment from each triangle vertex.

A fragment program receives input from the varying registers and from a separate set of constant registers (set with setProgramConstantsFromMatrix() or setProgramConstantsFromVector()). You can also read texture data from textures uploaded to the rendering context using sampler registers. Specify which texture to access with a particular sampler register using the Context3D setTextureAt() method. The fragment program is responsible for setting its output register to a color value.

Parameters

vertexProgram:ByteArray — AGAL bytecode for the Vertex program. The ByteArray object must use the little endian format.
 
fragmentProgram:ByteArray — AGAL bytecode for the Fragment program. The ByteArray object must use the little endian format.


Throws
TypeError — Null Pointer Error: if vertexProgram or fragmentProgram is null.
 
Error — Object Disposed: if the Program3D object was disposed either directly by a call to dispose(), or indirectly by calling the Context3D dispose() or because the rendering context was disposed because of device loss.
 
ArgumentError — Agal Program Too Small: when either program code array is smaller than 31 bytes length. This is the size of the shader bytecode of a one-instruction program.
 
ArgumentError — Program Must Be Little Endian: if either of the program byte code arrays is not little endian.
 
Error — Native Shader Compilation Failed: if the output of the AGAL translator is not a compilable native shader language program. This error is only thrown in release players.
 
Error — Native Shader Compilation Failed OpenGL: if the output of the AGAL translator is not a compilable OpengGL shader language program, and includes compilation diagnostics. This error is only thrown in debug players.
 
Error — Native Shader Compilation Failed D3D9: if the output of the AGAL translator is not a compilable Direct3D shader language program, and includes compilation diagnostics. This error is only thrown in debug players.

The following errors are thrown when the AGAL bytecode validation fails:

 
Error — Not An Agal Program: if the header "magic byte" is wrong. The first byte of the bytecode must be 0xa0. This error can indicate that the byte array is set to the wrong endian order.
 
Error — Bad Agal Version: if the AGAL version is not supported by the current SWF version. The AGAL version must be set to 1 for SWF version 13.
 
Error — Bad Agal Program Type: if the AGAL program type identifier is not valid. The third byte in the byte code must be 0xa1. This error can indicates that the byte array is set to the wrong endian order.
 
Error — Bad Agal Shader Type: if the shader type code is not either fragment or vertex (1 or 0).
 
Error — Invalid Agal Opcode Out Of Range: if an invalid opcode is encountered in the token stream.
 
Error — Invalid Agal Opcode Not Implemented: if an invalid opcode is encountered in the token stream.
 
Error — Agal Opcode Only Allowed In Fragment Program: if an opcode is encountered in the token stream of the vertex program that is only allowed in fragment programs, such as KIL or TEX.
 
Error — Bad Agal Source Operands: if both source operands are constant registers. You must compute the result outside the shader program and pass it in using a single constant register.
 
Error — Both Operands Are Indirect Reads: if both operands are indirect reads.
 
Error — Opcode Destination Must Be All Zero: if a token with an opcode (such as KIL) that has no destination sets a non-zero value for the destination register.
 
Error — Opcode Destination Must Use Mask: if an opcode that produces only a 3 component result is used without masking.
 
Error — Too Many Tokens: if there are too many tokens (more than 200) in an AGAL program.
 
Error — Fragment Shader Type: if the fragment program type (byte 6 of fragmentProgram parameter) is not set to 1.
 
Error — Vertex Shader Type: if the vertex program type (byte 6 of vertexProgram parameter) is not set to 0.
 
Error — Varying Read But Not Written To: if the fragment shader reads a varying register that was never written to by the vertex shader.
 
Error — Varying Partial Write: if a varying register is only partially written to. All components of a varying register must be written to.
 
Error — Fragment Write All Components: if a fragment color output is only partially written to. All four components of the color output must be written to.
 
Error — Vertex Write All Components: if a vertex clip space output is only partially written to. All components of the vertex clip space output must be written to.
 
Error — Unused Operand: if an unused operand in a token is not set to all zero.
 
Error — Sampler Register Only In Fragment: if a texture sampler register is used in a vertex program.
 
Error — Sampler Register Second Operand: if a sampler register is used as a destination or first operand of an AGAL token.
 
Error — Indirect Only Allowed In Vertex: if indirect addressing is used in a fragment program.
 
Error — Indirect Only Into Constant Registers: if indirect addressing is used on a non-constant register.
 
Error — Indirect Source Type: if the indirect source type is not attribute, constant or temporary register.
 
Error — Indirect Addressing Fields Must Be Zero: if not all indirect addressing fields are zero for direct addressing.
 
Error — Varying Registers Only Read In Fragment: if a varying register is read in a vertex program. Varying registers can only be written in vertex programs and read in fragment programs.
 
Error — Attribute Registers Only Read In Vertex: if an attribute registers is read in a fragment program. Attribute registers can only be read in vertex programs.
 
Error — Can Not Read Output Register: if an output (position or color) register is read. Output registers can only be written to, not read.
 
Error — Temp Register Read Without Write: if a temporary register is read without being written to earlier.
 
Error — Temp Register Component Read Without Write: if a specific temporary register component is read without being written to earlier.
 
Error — Sampler Register Cannot Be Written To: if a sampler register is written to. Sampler registers can only be read, not written to.
 
Error — Varying Registers Write: if a varying register is written to in a fragment program. Varying registers can only be written in vertex programs and read in fragment programs.
 
Error — Attribute Register Cannot Be Written To: if an attribute register is written to. Attribute registers are read-only.
 
Error — Constant Register Cannot Be Written To: if a constant register is written to inside a shader program.
 
Error — Destination Writemask Is Zero: if a destination writemask is zero. All components of an output register must be set.
 
Error — AGAL Reserved Bits Should Be Zero: if any reserved bits in a token are not zero. This indicates an error in creating the bytecode (or malformed bytecode).
 
Error — Unknown Register Type: if an invalid register type index is used.
 
Error — Sampler Register Out Of Bounds: if an invalid sampler register index is used.
 
Error — Varying Register Out Of Bounds: if an invalid varying register index is used.
 
Error — Attribute Register Out Of Bounds: if an invalid attribute register index is used.
 
Error — Constant Register Out Of Bounds: if an invalid constant register index is used.
 
Error — Output Register Out Of Bounds: if an invalid output register index is used.
 
Error — Temporary Register Out Of Bounds: if an invalid temporary register index is used.
 
Error — Cube Map Sampler Must Use Clamp: if a cube map sampler does not set the wrap mode to clamp.
 
Error — Unknown Sampler Dimension: if a sample uses an unknown sampler dimension. (Only 2D and cube textures are supported.)
 
Error — Unknown Filter Mode: if a sampler uses an unknown filter mode. (Only nearest neighbor and linear filtering are supported.)
 
Error — Unknown Mipmap Mode: if a sampler uses an unknown mipmap mode. (Only none, nearest neighbor, and linear mipmap modes are supported.)
 
Error — Unknown Wrapping Mode if a sampler uses an unknown wrapping mode. (Only clamp and repeat wrapping modes are supported.)
 
Error — Unknown Special Flag: if a sampler uses an unknown special flag.
 
Error — Output Color Not Maskable: You cannot mask the color output register in a fragment program. All components of the color register must be set.
 
Error — Second Operand Must Be Sampler Register: The AGAL tex opcode must have a sampler as the second source operand.
 
Error — Indirect Not Allowed: indirect addressing used where not allowed.
 
Error — Swizzle Must Be Scalar: swizzling error.
 
Error — Cant Swizzle 2nd Source: swizzling error.
 
Error — Second Use Of Sampler Must Have Same Params: all samplers that access the same texture must use the same dimension, wrap, filter, special, and mipmap settings.
 
Error — 3768: The Stage3D API may not be used during background execution.

Learn more

Related API Elements