1 /*-------------------------------------------------------------------------
2 * drawElements Quality Program OpenGL ES Utilities
3 * ------------------------------------------------
5 * Copyright 2014 The Android Open Source Project
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
22 goog
.provide('framework.referencerenderer.rrShadingContext');
23 goog
.require('framework.referencerenderer.rrFragmentOperations');
24 goog
.require('framework.delibs.debase.deMath');
25 goog
.require('framework.referencerenderer.rrDefs');
26 goog
.require('framework.referencerenderer.rrFragmentOperations');
27 goog
.require('framework.referencerenderer.rrGenericVector');
29 goog
.scope(function() {
31 var rrShadingContext
= framework
.referencerenderer
.rrShadingContext
;
32 var deMath
= framework
.delibs
.debase
.deMath
;
33 var rrDefs
= framework
.referencerenderer
.rrDefs
;
34 var rrFragmentOperations
= framework
.referencerenderer
.rrFragmentOperations
;
35 var rrGenericVector
= framework
.referencerenderer
.rrGenericVector
;
37 var DE_ASSERT = function(x
) {
39 throw new Error('Assert failed');
43 * Fragment shading context
45 * Contains per-primitive information used in fragment shading
47 * @param {Array<Array<number>>} varying0 (GenericVec4*)
48 * @param {Array<Array<number>>} varying1 (GenericVec4*)
49 * @param {Array<Array<number>>} varying2 (GenericVec4*)
51 rrShadingContext
.FragmentShadingContext = function(varying0
, varying1
, varying2
) {
52 /** @type {Array<Array<Array<number>>>} */ this.varyings
= [varying0
, varying1
, varying2
]; //!< Vertex shader outputs. Pointer will be NULL if there is no such vertex.
53 this.m_width
= 0xFFFFFFFF;
54 this.m_height
= 0xFFFFFFFF;
58 * @param {number} width
59 * @param {number} height
61 rrShadingContext
.FragmentShadingContext
.prototype.setSize = function(width
, height
) {
63 this.m_height
= height
;
66 rrShadingContext
.FragmentShadingContext
.prototype.getWidth = function() {
70 rrShadingContext
.FragmentShadingContext
.prototype.getHeight = function() {
77 * @param {rrFragmentOperations.Fragment} packet
78 * @param {rrShadingContext.FragmentShadingContext} context
79 * @param {number} varyingLoc
80 * @return {Array<number>} (Vector<T, 4>)
82 rrShadingContext
.readTriangleVarying = function(packet
, context
, varyingLoc
) {
83 var result
= deMath
.scale(
84 context
.varyings
[0][varyingLoc
],
88 if (context
.varyings
[1])
89 result
= deMath
.add(result
, deMath
.scale(
90 context
.varyings
[1][varyingLoc
],
94 if (context
.varyings
[2])
95 result
= deMath
.add(result
, deMath
.scale(
96 context
.varyings
[2][varyingLoc
],
104 * @param {rrFragmentOperations.Fragment} packet
105 * @param {rrShadingContext.FragmentShadingContext} context
106 * @param {number} varyingLoc
107 * @return {Array<number>} (Vector<T, 4>)
109 rrShadingContext
.readVarying = function(packet
, context
, varyingLoc
) {
110 return rrShadingContext
.readTriangleVarying(packet
, context
, varyingLoc
);