OSDN Git Service

Add SwiftShader source to repo
[android-x86/external-swiftshader.git] / src / Shader / ShaderCore.hpp
1 // SwiftShader Software Renderer\r
2 //\r
3 // Copyright(c) 2005-2011 TransGaming Inc.\r
4 //\r
5 // All rights reserved. No part of this software may be copied, distributed, transmitted,\r
6 // transcribed, stored in a retrieval system, translated into any human or computer\r
7 // language by any means, or disclosed to third parties without the explicit written\r
8 // agreement of TransGaming Inc. Without such an agreement, no rights or licenses, express\r
9 // or implied, including but not limited to any patent rights, are granted to you.\r
10 //\r
11 \r
12 #ifndef sw_ShaderCore_hpp\r
13 #define sw_ShaderCore_hpp\r
14 \r
15 #include "Shader.hpp"\r
16 #include "Reactor/Reactor.hpp"\r
17 \r
18 namespace sw\r
19 {\r
20         class ShaderCore\r
21         {\r
22                 typedef Shader::Instruction::Operation::Control Control;\r
23                 typedef Shader::Instruction::Operation Op;\r
24 \r
25         public:\r
26                 void mov(Color4f &dst, Color4f &src, bool floorToInteger = false);\r
27                 void add(Color4f &dst, Color4f &src0, Color4f &src1);\r
28                 void sub(Color4f &dst, Color4f &src0, Color4f &src1);\r
29                 void mad(Color4f &dst, Color4f &src0, Color4f &src1, Color4f &src2);\r
30                 void mul(Color4f &dst, Color4f &src0, Color4f &src1);\r
31                 void rcp(Color4f &dst, Color4f &src, bool pp = false);\r
32                 void rsq(Color4f &dst, Color4f &src, bool pp = false);\r
33                 void dp3(Color4f &dst, Color4f &src0, Color4f &src1);\r
34                 void dp4(Color4f &dst, Color4f &src0, Color4f &src1);\r
35                 void min(Color4f &dst, Color4f &src0, Color4f &src1);\r
36                 void max(Color4f &dst, Color4f &src0, Color4f &src1);\r
37                 void slt(Color4f &dst, Color4f &src0, Color4f &src1);\r
38                 void sge(Color4f &dst, Color4f &src0, Color4f &src1);\r
39                 void exp(Color4f &dst, Color4f &src, bool pp = false);\r
40                 void log(Color4f &dst, Color4f &src, bool pp = false);\r
41                 void lit(Color4f &dst, Color4f &src);\r
42                 void dst(Color4f &dst, Color4f &src0, Color4f &src1);\r
43                 void lrp(Color4f &dst, Color4f &src0, Color4f &src1, Color4f &src2);\r
44                 void frc(Color4f &dst, Color4f &src);\r
45                 void pow(Color4f &dst, Color4f &src0, Color4f &src1, bool pp = false);\r
46                 void crs(Color4f &dst, Color4f &src0, Color4f &src1);\r
47                 void sgn(Color4f &dst, Color4f &src);\r
48                 void abs(Color4f &dst, Color4f &src);\r
49                 void nrm(Color4f &dst, Color4f &src, bool pp = false);\r
50                 void sincos(Color4f &dst, Color4f &src, bool pp = false);\r
51                 void expp(Color4f &dst, Color4f &src, unsigned short version);\r
52                 void logp(Color4f &dst, Color4f &src, unsigned short version);\r
53                 void cmp(Color4f &dst, Color4f &src0, Color4f &src1, Color4f &src2);\r
54                 void dp2add(Color4f &dst, Color4f &src0, Color4f &src1, Color4f &src2);\r
55                 void setp(Color4f &dst, Color4f &src0, Color4f &src1, Control control);\r
56 \r
57         private:\r
58                 void sgn(Float4 &dst, Float4 &src);\r
59                 void cmp(Float4 &dst, Float4 &src0, Float4 &src1, Float4 &src2);\r
60         };\r
61 }\r
62 \r
63 #endif   // sw_ShaderCore_hpp\r