enum\r
{\r
OUTLINE_RESOLUTION = 4096, // Maximum vertical resolution of the render target\r
- MIPMAP_LEVELS = 14\r
+ MIPMAP_LEVELS = 14,\r
+ TEXTURE_IMAGE_UNITS = 16,\r
+ VERTEX_TEXTURE_IMAGE_UNITS = 4,\r
+ TOTAL_IMAGE_UNITS = TEXTURE_IMAGE_UNITS + VERTEX_TEXTURE_IMAGE_UNITS,\r
+ FRAGMENT_UNIFORM_VECTORS = 224,\r
+ VERTEX_UNIFORM_VECTORS = 256,\r
+ MAX_UNIFORM_BLOCKS_COMPONENTS = 49152,\r
+ MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = MAX_UNIFORM_BLOCKS_COMPONENTS + 4 * FRAGMENT_UNIFORM_VECTORS,\r
+ MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = MAX_UNIFORM_BLOCKS_COMPONENTS + 4 * VERTEX_UNIFORM_VECTORS,\r
};\r
\r
#endif // sw_Config_hpp\r
\r
void Device::setPixelShaderConstantF(unsigned int startRegister, const float *constantData, unsigned int count)\r
{\r
- for(unsigned int i = 0; i < count && startRegister + i < 224; i++)\r
+ for(unsigned int i = 0; i < count && startRegister + i < FRAGMENT_UNIFORM_VECTORS; i++)\r
{\r
pixelShaderConstantF[startRegister + i][0] = constantData[i * 4 + 0];\r
pixelShaderConstantF[startRegister + i][1] = constantData[i * 4 + 1];\r
\r
void Device::setVertexShaderConstantF(unsigned int startRegister, const float *constantData, unsigned int count)\r
{\r
- for(unsigned int i = 0; i < count && startRegister + i < 256; i++)\r
+ for(unsigned int i = 0; i < count && startRegister + i < VERTEX_UNIFORM_VECTORS; i++)\r
{\r
vertexShaderConstantF[startRegister + i][0] = constantData[i * 4 + 0];\r
vertexShaderConstantF[startRegister + i][1] = constantData[i * 4 + 1];\r
bool vertexShaderDirty;\r
unsigned int vertexShaderConstantsFDirty;\r
\r
- float pixelShaderConstantF[224][4];\r
- float vertexShaderConstantF[256][4];\r
+ float pixelShaderConstantF[FRAGMENT_UNIFORM_VECTORS][4];\r
+ float vertexShaderConstantF[VERTEX_UNIFORM_VECTORS][4];\r
\r
Image *renderTarget;\r
Image *depthStencil;\r
UNIMPLEMENTED();\r
*params = IMPLEMENTATION_MAX_COLOR_ATTACHMENTS;\r
break;\r
- case GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: // integer, at least 1\r
+ case GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: // integer, at least 50048\r
UNIMPLEMENTED();\r
- *params = 1;\r
+ *params = MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS;\r
break;\r
case GL_MAX_COMBINED_UNIFORM_BLOCKS: // integer, at least 70\r
UNIMPLEMENTED();\r
*params = 70;\r
break;\r
- case GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: // integer, at least 1\r
+ case GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: // integer, at least 50176\r
UNIMPLEMENTED();\r
- *params = 1;\r
+ *params = MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS;\r
break;\r
case GL_MAX_DRAW_BUFFERS: // integer, at least 8\r
UNIMPLEMENTED();\r
- *params = 8;\r
+ *params = IMPLEMENTATION_MAX_DRAW_BUFFERS;\r
break;\r
case GL_MAX_ELEMENT_INDEX: // integer, at least 16777215\r
UNIMPLEMENTED();\r
break;\r
case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: // integer, at least 4\r
UNIMPLEMENTED();\r
- *params = 4;\r
+ *params = IMPLEMENTATION_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS;\r
break;\r
case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: // integer, at least 4\r
UNIMPLEMENTED();\r
break;\r
case GL_MAX_UNIFORM_BUFFER_BINDINGS: // integer, at least 36\r
UNIMPLEMENTED();\r
- *params = 36;\r
+ *params = IMPLEMENTATION_MAX_UNIFORM_BUFFER_BINDINGS;\r
break;\r
case GL_MAX_VARYING_COMPONENTS: // integer, at least 60\r
UNIMPLEMENTED();\r
break;\r
case GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT: // integer, defaults to 1\r
UNIMPLEMENTED();\r
- *params = 1;\r
+ *params = IMPLEMENTATION_UNIFORM_BUFFER_OFFSET_ALIGNMENT;\r
break;\r
case GL_UNIFORM_BUFFER_SIZE: // indexed[n] 64-bit integer, initially 0\r
UNIMPLEMENTED();\r
{\r
MAX_VERTEX_ATTRIBS = 16,\r
MAX_UNIFORM_VECTORS = 256, // Device limit\r
- MAX_VERTEX_UNIFORM_VECTORS = 256 - 3, // Reserve space for gl_DepthRange\r
+ MAX_VERTEX_UNIFORM_VECTORS = VERTEX_UNIFORM_VECTORS - 3, // Reserve space for gl_DepthRange\r
MAX_VARYING_VECTORS = 10,\r
- MAX_TEXTURE_IMAGE_UNITS = 16,\r
- MAX_VERTEX_TEXTURE_IMAGE_UNITS = 4,\r
+ MAX_TEXTURE_IMAGE_UNITS = TEXTURE_IMAGE_UNITS,\r
+ MAX_VERTEX_TEXTURE_IMAGE_UNITS = VERTEX_TEXTURE_IMAGE_UNITS,\r
MAX_COMBINED_TEXTURE_IMAGE_UNITS = MAX_TEXTURE_IMAGE_UNITS + MAX_VERTEX_TEXTURE_IMAGE_UNITS,\r
- MAX_FRAGMENT_UNIFORM_VECTORS = 224 - 3, // Reserve space for gl_DepthRange\r
+ MAX_FRAGMENT_UNIFORM_VECTORS = FRAGMENT_UNIFORM_VECTORS - 3, // Reserve space for gl_DepthRange\r
MAX_DRAW_BUFFERS = 1,\r
};\r
\r
\r
void Device::setPixelShaderConstantF(unsigned int startRegister, const float *constantData, unsigned int count)\r
{\r
- for(unsigned int i = 0; i < count && startRegister + i < 224; i++)\r
+ for(unsigned int i = 0; i < count && startRegister + i < FRAGMENT_UNIFORM_VECTORS; i++)\r
{\r
pixelShaderConstantF[startRegister + i][0] = constantData[i * 4 + 0];\r
pixelShaderConstantF[startRegister + i][1] = constantData[i * 4 + 1];\r
\r
void Device::setVertexShaderConstantF(unsigned int startRegister, const float *constantData, unsigned int count)\r
{\r
- for(unsigned int i = 0; i < count && startRegister + i < 256; i++)\r
+ for(unsigned int i = 0; i < count && startRegister + i < VERTEX_UNIFORM_VECTORS; i++)\r
{\r
vertexShaderConstantF[startRegister + i][0] = constantData[i * 4 + 0];\r
vertexShaderConstantF[startRegister + i][1] = constantData[i * 4 + 1];\r
bool vertexShaderDirty;\r
unsigned int vertexShaderConstantsFDirty;\r
\r
- float pixelShaderConstantF[224][4];\r
- float vertexShaderConstantF[256][4];\r
+ float pixelShaderConstantF[FRAGMENT_UNIFORM_VECTORS][4];\r
+ float vertexShaderConstantF[VERTEX_UNIFORM_VECTORS][4];\r
\r
egl::Image *renderTarget;\r
egl::Image *depthStencil;\r
IMPLEMENTATION_MAX_COLOR_ATTACHMENTS = 8,\r
IMPLEMENTATION_MAX_DRAW_BUFFERS = 8,\r
IMPLEMENTATION_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 4,\r
+ IMPLEMENTATION_MAX_UNIFORM_BUFFER_BINDINGS = 36,\r
+ IMPLEMENTATION_UNIFORM_BUFFER_OFFSET_ALIGNMENT = 1,\r
};\r
\r
class Texture : public egl::Texture\r
\r
void Device::setPixelShaderConstantF(unsigned int startRegister, const float *constantData, unsigned int count)\r
{\r
- for(unsigned int i = 0; i < count && startRegister + i < 224; i++)\r
+ for(unsigned int i = 0; i < count && startRegister + i < FRAGMENT_UNIFORM_VECTORS; i++)\r
{\r
pixelShaderConstantF[startRegister + i][0] = constantData[i * 4 + 0];\r
pixelShaderConstantF[startRegister + i][1] = constantData[i * 4 + 1];\r
\r
void Device::setVertexShaderConstantF(unsigned int startRegister, const float *constantData, unsigned int count)\r
{\r
- for(unsigned int i = 0; i < count && startRegister + i < 256; i++)\r
+ for(unsigned int i = 0; i < count && startRegister + i < VERTEX_UNIFORM_VECTORS; i++)\r
{\r
vertexShaderConstantF[startRegister + i][0] = constantData[i * 4 + 0];\r
vertexShaderConstantF[startRegister + i][1] = constantData[i * 4 + 1];\r
bool vertexShaderDirty;\r
unsigned int vertexShaderConstantsFDirty;\r
\r
- float pixelShaderConstantF[224][4];\r
- float vertexShaderConstantF[256][4];\r
+ float pixelShaderConstantF[FRAGMENT_UNIFORM_VECTORS][4];\r
+ float vertexShaderConstantF[VERTEX_UNIFORM_VECTORS][4];\r
\r
egl::Image *renderTarget;\r
egl::Image *depthStencil;\r
}
// Set vertex streams to null stream
- for(int i = 0; i < 16; i++)
+ for(int i = 0; i < TEXTURE_IMAGE_UNITS; i++)
{
input[i].defaults();
}
fogStart = 0.0f;
fogEnd = 1.0f;
- for(int i = 0; i < 16; i++) textureWrap[i] = 0;
+ for(int i = 0; i < TEXTURE_IMAGE_UNITS; i++) textureWrap[i] = 0;
for(int i = 0; i < 8; i++) texGen[i] = TEXGEN_PASSTHRU;
for(int i = 0; i < 8; i++) textureTransformCount[i] = 0;
for(int i = 0; i < 8; i++) textureTransformProject[i] = false;
int alphaReference;\r
\r
TextureStage textureStage[8];\r
- Sampler sampler[16 + 4];\r
+ Sampler sampler[TOTAL_IMAGE_UNITS];\r
\r
Format renderTargetInternalFormat(int index);\r
int colorWriteActive();\r
int colorWriteActive(int index);\r
bool colorUsed();\r
\r
- Resource *texture[16 + 4];\r
- Stream input[16];\r
+ Resource *texture[TOTAL_IMAGE_UNITS];\r
+ Stream input[TEXTURE_IMAGE_UNITS];\r
Resource *indexBuffer;\r
\r
bool preTransformed; // FIXME: Private\r
void computeIllumination();\r
\r
bool textureWrapActive;\r
- unsigned char textureWrap[16];\r
+ unsigned char textureWrap[TEXTURE_IMAGE_UNITS];\r
TexGen texGen[8];\r
bool localViewer;\r
bool normalizeNormals;\r
void PixelProcessor::setTextureFilter(unsigned int sampler, FilterType textureFilter)
{
- if(sampler < 16)
+ if(sampler < TEXTURE_IMAGE_UNITS)
{
context->sampler[sampler].setTextureFilter(textureFilter);
}
void PixelProcessor::setMipmapFilter(unsigned int sampler, MipmapType mipmapFilter)
{
- if(sampler < 16)
+ if(sampler < TEXTURE_IMAGE_UNITS)
{
context->sampler[sampler].setMipmapFilter(mipmapFilter);
}
void PixelProcessor::setGatherEnable(unsigned int sampler, bool enable)
{
- if(sampler < 16)
+ if(sampler < TEXTURE_IMAGE_UNITS)
{
context->sampler[sampler].setGatherEnable(enable);
}
void PixelProcessor::setAddressingModeU(unsigned int sampler, AddressingMode addressMode)
{
- if(sampler < 16)
+ if(sampler < TEXTURE_IMAGE_UNITS)
{
context->sampler[sampler].setAddressingModeU(addressMode);
}
void PixelProcessor::setAddressingModeV(unsigned int sampler, AddressingMode addressMode)
{
- if(sampler < 16)
+ if(sampler < TEXTURE_IMAGE_UNITS)
{
context->sampler[sampler].setAddressingModeV(addressMode);
}
void PixelProcessor::setAddressingModeW(unsigned int sampler, AddressingMode addressMode)
{
- if(sampler < 16)
+ if(sampler < TEXTURE_IMAGE_UNITS)
{
context->sampler[sampler].setAddressingModeW(addressMode);
}
void PixelProcessor::setReadSRGB(unsigned int sampler, bool sRGB)
{
- if(sampler < 16)
+ if(sampler < TEXTURE_IMAGE_UNITS)
{
context->sampler[sampler].setReadSRGB(sRGB);
}
void PixelProcessor::setMipmapLOD(unsigned int sampler, float bias)
{
- if(sampler < 16)
+ if(sampler < TEXTURE_IMAGE_UNITS)
{
context->sampler[sampler].setMipmapLOD(bias);
}
void PixelProcessor::setBorderColor(unsigned int sampler, const Color<float> &borderColor)
{
- if(sampler < 16)
+ if(sampler < TEXTURE_IMAGE_UNITS)
{
context->sampler[sampler].setBorderColor(borderColor);
}
void PixelProcessor::setMaxAnisotropy(unsigned int sampler, float maxAnisotropy)
{
- if(sampler < 16)
+ if(sampler < TEXTURE_IMAGE_UNITS)
{
context->sampler[sampler].setMaxAnisotropy(maxAnisotropy);
}
TransparencyAntialiasing transparencyAntialiasing : BITS(TRANSPARENCY_LAST);\r
bool centroid : 1;\r
\r
- Sampler::State sampler[16];\r
+ Sampler::State sampler[TEXTURE_IMAGE_UNITS];\r
TextureStage::State textureStage[8];\r
\r
struct Interpolant\r
\r
// Shader constants\r
word4 cW[8][4];\r
- float4 c[224];\r
+ float4 c[FRAGMENT_UNIFORM_VECTORS];\r
int4 i[16];\r
bool b[16];\r
\r
draw->indexBuffer = context->indexBuffer;
- for(int sampler = 0; sampler < 20; sampler++)
+ for(int sampler = 0; sampler < TOTAL_IMAGE_UNITS; sampler++)
{
draw->texture[sampler] = 0;
}
- for(int sampler = 0; sampler < 16; sampler++)
+ for(int sampler = 0; sampler < TEXTURE_IMAGE_UNITS; sampler++)
{
if(pixelState.sampler[sampler].textureType != TEXTURE_NULL)
{
{
if(context->vertexShader->getVersion() >= 0x0300)
{
- for(int sampler = 0; sampler < 4; sampler++)
+ for(int sampler = 0; sampler < VERTEX_TEXTURE_IMAGE_UNITS; sampler++)
{
if(vertexState.samplerState[sampler].textureType != TEXTURE_NULL)
{
- draw->texture[16 + sampler] = context->texture[16 + sampler];
- draw->texture[16 + sampler]->lock(PUBLIC, PRIVATE);
+ draw->texture[TEXTURE_IMAGE_UNITS + sampler] = context->texture[TEXTURE_IMAGE_UNITS + sampler];
+ draw->texture[TEXTURE_IMAGE_UNITS + sampler]->lock(PUBLIC, PRIVATE);
- data->mipmap[16 + sampler] = context->sampler[16 + sampler].getTextureData();
+ data->mipmap[TEXTURE_IMAGE_UNITS + sampler] = context->sampler[TEXTURE_IMAGE_UNITS + sampler].getTextureData();
}
}
}
draw.depthStencil->unlockStencil();
}
- for(int i = 0; i < 16 + 4; i++)
+ for(int i = 0; i < TOTAL_IMAGE_UNITS; i++)
{
if(draw.texture[i])
{
}
}
- for(int i = 0; i < 16; i++)
+ for(int i = 0; i < TEXTURE_IMAGE_UNITS; i++)
{
if(draw.vertexStream[i])
{
void Renderer::setTextureResource(unsigned int sampler, Resource *resource)
{
- ASSERT(sampler < (16 + 4));
+ ASSERT(sampler < TOTAL_IMAGE_UNITS);
context->texture[sampler] = resource;
}
void Renderer::setTextureLevel(unsigned int sampler, unsigned int face, unsigned int level, Surface *surface, TextureType type)
{
- ASSERT(sampler < (16 + 4) && face < 6 && level < MIPMAP_LEVELS);
+ ASSERT(sampler < TOTAL_IMAGE_UNITS && face < 6 && level < MIPMAP_LEVELS);
context->sampler[sampler].setTextureLevel(face, level, surface, type);
}
{
const void *constants;
- const void *input[16];
- unsigned int stride[16];
- Texture mipmap[16 + 4];
+ const void *input[TEXTURE_IMAGE_UNITS];
+ unsigned int stride[TEXTURE_IMAGE_UNITS];
+ Texture mipmap[TOTAL_IMAGE_UNITS];
const void *indices;
struct VS
struct PS
{
word4 cW[8][4];
- float4 c[224];
+ float4 c[FRAGMENT_UNIFORM_VECTORS];
int4 i[16];
bool b[16];
};
int (*setupPrimitives)(Renderer *renderer, int batch, int count);
SetupProcessor::State setupState;
- Resource *vertexStream[16];
+ Resource *vertexStream[TEXTURE_IMAGE_UNITS];
Resource *indexBuffer;
Surface *renderTarget[4];
Surface *depthStencil;
- Resource *texture[16 + 4];
+ Resource *texture[TOTAL_IMAGE_UNITS];
int vsDirtyConstF;
int vsDirtyConstI;
void VertexProcessor::resetInputStreams(bool preTransformed)
{
- for(int i = 0; i < 16; i++)
+ for(int i = 0; i < TEXTURE_IMAGE_UNITS; i++)
{
context->input[i].defaults();
}
void VertexProcessor::setTextureWrap(unsigned int stage, int mask)
{
- if(stage < 16)
+ if(stage < TEXTURE_IMAGE_UNITS)
{
context->textureWrap[stage] = mask;
}
context->textureWrapActive = false;
- for(int i = 0; i < 16; i++)
+ for(int i = 0; i < TEXTURE_IMAGE_UNITS; i++)
{
context->textureWrapActive |= (context->textureWrap[i] != 0x00);
}
void VertexProcessor::setTextureFilter(unsigned int sampler, FilterType textureFilter)
{
- if(sampler < 4)
+ if(sampler < VERTEX_TEXTURE_IMAGE_UNITS)
{
- context->sampler[16 + sampler].setTextureFilter(textureFilter);
+ context->sampler[TEXTURE_IMAGE_UNITS + sampler].setTextureFilter(textureFilter);
}
else ASSERT(false);
}
void VertexProcessor::setMipmapFilter(unsigned int sampler, MipmapType mipmapFilter)
{
- if(sampler < 4)
+ if(sampler < VERTEX_TEXTURE_IMAGE_UNITS)
{
- context->sampler[16 + sampler].setMipmapFilter(mipmapFilter);
+ context->sampler[TEXTURE_IMAGE_UNITS + sampler].setMipmapFilter(mipmapFilter);
}
else ASSERT(false);
}
void VertexProcessor::setGatherEnable(unsigned int sampler, bool enable)
{
- if(sampler < 4)
+ if(sampler < VERTEX_TEXTURE_IMAGE_UNITS)
{
- context->sampler[16 + sampler].setGatherEnable(enable);
+ context->sampler[TEXTURE_IMAGE_UNITS + sampler].setGatherEnable(enable);
}
else ASSERT(false);
}
void VertexProcessor::setAddressingModeU(unsigned int sampler, AddressingMode addressMode)
{
- if(sampler < 4)
+ if(sampler < VERTEX_TEXTURE_IMAGE_UNITS)
{
- context->sampler[16 + sampler].setAddressingModeU(addressMode);
+ context->sampler[TEXTURE_IMAGE_UNITS + sampler].setAddressingModeU(addressMode);
}
else ASSERT(false);
}
void VertexProcessor::setAddressingModeV(unsigned int sampler, AddressingMode addressMode)
{
- if(sampler < 4)
+ if(sampler < VERTEX_TEXTURE_IMAGE_UNITS)
{
- context->sampler[16 + sampler].setAddressingModeV(addressMode);
+ context->sampler[TEXTURE_IMAGE_UNITS + sampler].setAddressingModeV(addressMode);
}
else ASSERT(false);
}
void VertexProcessor::setAddressingModeW(unsigned int sampler, AddressingMode addressMode)
{
- if(sampler < 4)
+ if(sampler < VERTEX_TEXTURE_IMAGE_UNITS)
{
- context->sampler[16 + sampler].setAddressingModeW(addressMode);
+ context->sampler[TEXTURE_IMAGE_UNITS + sampler].setAddressingModeW(addressMode);
}
else ASSERT(false);
}
void VertexProcessor::setReadSRGB(unsigned int sampler, bool sRGB)
{
- if(sampler < 4)
+ if(sampler < VERTEX_TEXTURE_IMAGE_UNITS)
{
- context->sampler[16 + sampler].setReadSRGB(sRGB);
+ context->sampler[TEXTURE_IMAGE_UNITS + sampler].setReadSRGB(sRGB);
}
else ASSERT(false);
}
void VertexProcessor::setMipmapLOD(unsigned int sampler, float bias)
{
- if(sampler < 4)
+ if(sampler < VERTEX_TEXTURE_IMAGE_UNITS)
{
- context->sampler[16 + sampler].setMipmapLOD(bias);
+ context->sampler[TEXTURE_IMAGE_UNITS + sampler].setMipmapLOD(bias);
}
else ASSERT(false);
}
void VertexProcessor::setBorderColor(unsigned int sampler, const Color<float> &borderColor)
{
- if(sampler < 4)
+ if(sampler < VERTEX_TEXTURE_IMAGE_UNITS)
{
- context->sampler[16 + sampler].setBorderColor(borderColor);
+ context->sampler[TEXTURE_IMAGE_UNITS + sampler].setBorderColor(borderColor);
}
else ASSERT(false);
}
void VertexProcessor::setMaxAnisotropy(unsigned int sampler, float maxAnisotropy)
{
- if(sampler < 4)
+ if(sampler < VERTEX_TEXTURE_IMAGE_UNITS)
{
- context->sampler[16 + sampler].setMaxAnisotropy(maxAnisotropy);
+ context->sampler[TEXTURE_IMAGE_UNITS + sampler].setMaxAnisotropy(maxAnisotropy);
}
else ASSERT(false);
}
state.superSampling = context->getSuperSampleCount() > 1;
state.multiSampling = context->getMultiSampleCount() > 1;
- for(int i = 0; i < 16; i++)
+ for(int i = 0; i < TEXTURE_IMAGE_UNITS; i++)
{
state.input[i].type = context->input[i].type;
state.input[i].count = context->input[i].count;
}
else
{
- for(unsigned int i = 0; i < 4; i++)
+ for(unsigned int i = 0; i < VERTEX_TEXTURE_IMAGE_UNITS; i++)
{
if(context->vertexShader->usesSampler(i))
{
- state.samplerState[i] = context->sampler[16 + i].samplerState();
+ state.samplerState[i] = context->sampler[TEXTURE_IMAGE_UNITS + i].samplerState();
}
}
}
\r
TextureState textureState[8];\r
\r
- Sampler::State samplerState[4];\r
+ Sampler::State samplerState[VERTEX_TEXTURE_IMAGE_UNITS];\r
\r
struct Input\r
{\r
};\r
};\r
\r
- Input input[16];\r
+ Input input[TEXTURE_IMAGE_UNITS];\r
Output output[12];\r
};\r
\r
PixelRoutine::~PixelRoutine()
{
- for(int i = 0; i < 16; i++)
+ for(int i = 0; i < TEXTURE_IMAGE_UNITS; i++)
{
delete sampler[i];
}
Long pipeTime = Ticks();
#endif
- for(int i = 0; i < 16; i++)
+ for(int i = 0; i < TEXTURE_IMAGE_UNITS; i++)
{
sampler[i] = new SamplerCore(r.constants, state.sampler[i]);
}
{
Int index = As<Int>(Float(reg(r, sampler).x.x));
- for(int i = 0; i < 16; i++)
+ for(int i = 0; i < TEXTURE_IMAGE_UNITS; i++)
{
if(shader->usesSampler(i))
{
const PixelShader *const shader;
private:
- SamplerCore *sampler[16];
+ SamplerCore *sampler[TEXTURE_IMAGE_UNITS];
bool perturbate;
bool luminance;
VertexProgram::~VertexProgram()
{
- for(int i = 0; i < 4; i++)
+ for(int i = 0; i < VERTEX_TEXTURE_IMAGE_UNITS; i++)
{
delete sampler[i];
}
void VertexProgram::pipeline(Registers &r)
{
- for(int i = 0; i < 4; i++)
+ for(int i = 0; i < VERTEX_TEXTURE_IMAGE_UNITS; i++)
{
sampler[i] = new SamplerCore(r.constants, state.samplerState[i]);
}
void sampleTexture(Registers &r, Vector4f &c, const Src &s, Float4 &u, Float4 &v, Float4 &w, Float4 &q);
- SamplerCore *sampler[4];
+ SamplerCore *sampler[VERTEX_TEXTURE_IMAGE_UNITS];
int ifDepth;
int loopRepDepth;
void VertexRoutine::readInput(Registers &r, UInt &index)
{
- for(int i = 0; i < 16; i++)
+ for(int i = 0; i < TEXTURE_IMAGE_UNITS; i++)
{
Pointer<Byte> input = *Pointer<Pointer<Byte> >(r.data + OFFSET(DrawData,input) + sizeof(void*) * i);
UInt stride = *Pointer<UInt>(r.data + OFFSET(DrawData,stride) + sizeof(unsigned int) * i);