1*03ce13f7SAndroid Build Coastguard Worker // Copyright 2016 The SwiftShader Authors. All Rights Reserved. 2*03ce13f7SAndroid Build Coastguard Worker // 3*03ce13f7SAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License"); 4*03ce13f7SAndroid Build Coastguard Worker // you may not use this file except in compliance with the License. 5*03ce13f7SAndroid Build Coastguard Worker // You may obtain a copy of the License at 6*03ce13f7SAndroid Build Coastguard Worker // 7*03ce13f7SAndroid Build Coastguard Worker // http://www.apache.org/licenses/LICENSE-2.0 8*03ce13f7SAndroid Build Coastguard Worker // 9*03ce13f7SAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software 10*03ce13f7SAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS, 11*03ce13f7SAndroid Build Coastguard Worker // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*03ce13f7SAndroid Build Coastguard Worker // See the License for the specific language governing permissions and 13*03ce13f7SAndroid Build Coastguard Worker // limitations under the License. 14*03ce13f7SAndroid Build Coastguard Worker 15*03ce13f7SAndroid Build Coastguard Worker #ifndef sw_Polygon_hpp 16*03ce13f7SAndroid Build Coastguard Worker #define sw_Polygon_hpp 17*03ce13f7SAndroid Build Coastguard Worker 18*03ce13f7SAndroid Build Coastguard Worker namespace sw { 19*03ce13f7SAndroid Build Coastguard Worker 20*03ce13f7SAndroid Build Coastguard Worker struct Polygon 21*03ce13f7SAndroid Build Coastguard Worker { Polygonsw::Polygon22*03ce13f7SAndroid Build Coastguard Worker Polygon(const float4 *P0, const float4 *P1, const float4 *P2) 23*03ce13f7SAndroid Build Coastguard Worker { 24*03ce13f7SAndroid Build Coastguard Worker P[0][0] = P0; 25*03ce13f7SAndroid Build Coastguard Worker P[0][1] = P1; 26*03ce13f7SAndroid Build Coastguard Worker P[0][2] = P2; 27*03ce13f7SAndroid Build Coastguard Worker 28*03ce13f7SAndroid Build Coastguard Worker n = 3; 29*03ce13f7SAndroid Build Coastguard Worker i = 0; 30*03ce13f7SAndroid Build Coastguard Worker b = 0; 31*03ce13f7SAndroid Build Coastguard Worker } 32*03ce13f7SAndroid Build Coastguard Worker Polygonsw::Polygon33*03ce13f7SAndroid Build Coastguard Worker Polygon(const float4 *P, int n) 34*03ce13f7SAndroid Build Coastguard Worker { 35*03ce13f7SAndroid Build Coastguard Worker for(int i = 0; i < n; i++) 36*03ce13f7SAndroid Build Coastguard Worker { 37*03ce13f7SAndroid Build Coastguard Worker this->P[0][i] = &P[i]; 38*03ce13f7SAndroid Build Coastguard Worker } 39*03ce13f7SAndroid Build Coastguard Worker 40*03ce13f7SAndroid Build Coastguard Worker this->n = n; 41*03ce13f7SAndroid Build Coastguard Worker this->i = 0; 42*03ce13f7SAndroid Build Coastguard Worker this->b = 0; 43*03ce13f7SAndroid Build Coastguard Worker } 44*03ce13f7SAndroid Build Coastguard Worker 45*03ce13f7SAndroid Build Coastguard Worker float4 B[16]; // Buffer for clipped vertices 46*03ce13f7SAndroid Build Coastguard Worker const float4 *P[16][16]; // Pointers to clipped polygon's vertices 47*03ce13f7SAndroid Build Coastguard Worker 48*03ce13f7SAndroid Build Coastguard Worker int n; // Number of vertices 49*03ce13f7SAndroid Build Coastguard Worker int i; // Level of P to use 50*03ce13f7SAndroid Build Coastguard Worker int b; // Next available new vertex 51*03ce13f7SAndroid Build Coastguard Worker }; 52*03ce13f7SAndroid Build Coastguard Worker 53*03ce13f7SAndroid Build Coastguard Worker } // namespace sw 54*03ce13f7SAndroid Build Coastguard Worker 55*03ce13f7SAndroid Build Coastguard Worker #endif // sw_Polygon_hpp 56