public abstract class BaseShaderContext extends BaseContext
A note about State objects... The JOGL architecture creates a GLContext for each GLDrawable (one GLContext per GLDrawable, and one GLDrawable per onscreen window). Resources such as textures and shaders can be shared between those GLContext instances, but other state (texture bindings, scissor rect, etc) cannot be shared. Therefore we need to maintain one State instance per GLContext instance, which means there may be more than one State instance per BaseShaderContext. The currentState variable holds the current State instance corresponding to the current RenderTarget, and is revalidated as part of the updateRenderTarget() method. The ES2 backend will create a new State instance for each window, but the D3D backend is free to create a single State instance that can be shared for the entire Screen.
Modifier and Type | Class and Description |
---|---|
static class |
BaseShaderContext.MaskType |
static class |
BaseShaderContext.SpecialShaderType |
static class |
BaseShaderContext.State |
Modifier and Type | Field and Description |
---|---|
private static int |
CHECK_CLEAR_OP_MASK |
private static int |
CHECK_CLIP |
private static int |
CHECK_COMPOSITE |
private static int |
CHECK_PAINT_OP_MASK |
private static int |
CHECK_SHADER |
private static int |
CHECK_TEXTURE_OP_MASK |
private static int |
CHECK_TRANSFORM |
private Shader |
externalShader |
private ShaderFactory |
factory |
private RTTexture |
lcdBuffer |
private static int |
NUM_STOCK_SHADER_SLOTS |
private Shader[] |
specialATShaders |
private Shader[] |
specialShaders |
private BaseShaderContext.State |
state |
private Shader[] |
stockATShaders |
private Shader[] |
stockShaders |
Modifier | Constructor and Description |
---|---|
protected |
BaseShaderContext(Screen screen,
ShaderFactory factory,
int vbQuads) |
Modifier and Type | Method and Description |
---|---|
abstract void |
blit(RTTexture srcRTT,
RTTexture dstRTT,
int srcX0,
int srcY0,
int srcX1,
int srcY1,
int dstX0,
int dstY0,
int dstX1,
int dstY1) |
private void |
checkState(BaseShaderGraphics g,
int checkFlags,
BaseTransform xform,
Shader shader) |
void |
disposeLCDBuffer() |
RTTexture |
getLCDBuffer() |
private Shader |
getPaintShader(boolean alphaTest,
BaseShaderContext.MaskType maskType,
Paint paint) |
private Shader |
getSpecialShader(BaseGraphics g,
BaseShaderContext.SpecialShaderType sst) |
private static int |
getStockShaderIndex(BaseShaderContext.MaskType maskType,
Paint paint) |
protected void |
init() |
void |
initLCDBuffer(int width,
int height) |
boolean |
isSuperShaderEnabled() |
protected void |
releaseRenderTarget() |
protected void |
resetLastClip(BaseShaderContext.State state) |
(package private) void |
setExternalShader(BaseShaderGraphics g,
Shader shader) |
protected void |
setPerspectiveTransform(GeneralTransform3D transform) |
protected void |
setRenderTarget(RenderTarget target,
NGCamera camera,
boolean depthTest,
boolean state3D) |
private void |
setTexture(int texUnit,
Texture tex) |
protected abstract void |
updateClipRect(Rectangle clipRect) |
protected abstract void |
updateCompositeMode(CompositeMode mode) |
private void |
updatePaintShader(BaseShaderGraphics g,
Shader shader,
BaseShaderContext.MaskType maskType,
Paint paint,
float bx,
float by,
float bw,
float bh) |
private void |
updatePerVertexColor(Paint paint,
float extraAlpha) |
protected abstract BaseShaderContext.State |
updateRenderTarget(RenderTarget target,
NGCamera camera,
boolean depthTest) |
protected abstract void |
updateShaderTransform(Shader shader,
BaseTransform xform) |
protected abstract void |
updateTexture(int texUnit,
Texture tex) |
protected abstract void |
updateWorldTransform(BaseTransform xform) |
void |
validateClearOp(BaseGraphics g) |
void |
validateLCDBuffer(RenderTarget renderTarget) |
Shader |
validateLCDOp(BaseShaderGraphics g,
BaseTransform xform,
Texture tex0,
Texture tex1,
boolean firstPass,
Paint fillColor) |
(package private) Shader |
validateMaskTextureOp(BaseShaderGraphics g,
BaseTransform xform,
Texture tex0,
Texture tex1,
PixelFormat format) |
void |
validatePaintOp(BaseGraphics g,
BaseTransform xform,
Texture maskTex,
float bx,
float by,
float bw,
float bh) |
(package private) Shader |
validatePaintOp(BaseShaderGraphics g,
BaseTransform xform,
BaseShaderContext.MaskType maskType,
float bx,
float by,
float bw,
float bh) |
(package private) Shader |
validatePaintOp(BaseShaderGraphics g,
BaseTransform xform,
BaseShaderContext.MaskType maskType,
float bx,
float by,
float bw,
float bh,
float k1,
float k2,
float k3,
float k4,
float k5,
float k6) |
(package private) Shader |
validatePaintOp(BaseShaderGraphics g,
BaseTransform xform,
BaseShaderContext.MaskType maskType,
Texture maskTex,
float bx,
float by,
float bw,
float bh) |
(package private) Shader |
validatePaintOp(BaseShaderGraphics g,
BaseTransform xform,
BaseShaderContext.MaskType maskType,
Texture maskTex,
float bx,
float by,
float bw,
float bh,
float k1,
float k2,
float k3,
float k4,
float k5,
float k6) |
(package private) Shader |
validatePaintOp(BaseShaderGraphics g,
BaseTransform xform,
Texture maskTex,
float bx,
float by,
float bw,
float bh) |
void |
validateTextureOp(BaseGraphics g,
BaseTransform xform,
Texture tex0,
PixelFormat format) |
(package private) Shader |
validateTextureOp(BaseShaderGraphics g,
BaseTransform xform,
Texture[] textures,
PixelFormat format) |
(package private) Shader |
validateTextureOp(BaseShaderGraphics g,
BaseTransform xform,
Texture tex0,
Texture tex1,
PixelFormat format) |
clearGlyphCaches, drawQuads, flushMask, flushVertexBuffer, getAssociatedScreen, getGlyphCache, getGradientTexture, getOvalTexture, getPerspectiveTransformNoClone, getRectTexture, getRectTextureMaxSize, getResourceFactory, getVertexBuffer, getWrapRectTexture, renderQuads, setDeviceParametersFor2D, setDeviceParametersFor3D, setRenderTarget, updateMaskTexture, validateMaskTexture
private static final int CHECK_SHADER
private static final int CHECK_TRANSFORM
private static final int CHECK_CLIP
private static final int CHECK_COMPOSITE
private static final int CHECK_PAINT_OP_MASK
private static final int CHECK_TEXTURE_OP_MASK
private static final int CHECK_CLEAR_OP_MASK
private static final int NUM_STOCK_SHADER_SLOTS
private final Shader[] stockShaders
private final Shader[] stockATShaders
private final Shader[] specialShaders
private final Shader[] specialATShaders
private Shader externalShader
private RTTexture lcdBuffer
private final ShaderFactory factory
private BaseShaderContext.State state
protected BaseShaderContext(Screen screen, ShaderFactory factory, int vbQuads)
protected void init()
protected void setPerspectiveTransform(GeneralTransform3D transform)
setPerspectiveTransform
in class BaseContext
protected void resetLastClip(BaseShaderContext.State state)
protected abstract BaseShaderContext.State updateRenderTarget(RenderTarget target, NGCamera camera, boolean depthTest)
protected abstract void updateTexture(int texUnit, Texture tex)
protected abstract void updateShaderTransform(Shader shader, BaseTransform xform)
protected abstract void updateWorldTransform(BaseTransform xform)
protected abstract void updateClipRect(Rectangle clipRect)
protected abstract void updateCompositeMode(CompositeMode mode)
private static int getStockShaderIndex(BaseShaderContext.MaskType maskType, Paint paint)
private Shader getPaintShader(boolean alphaTest, BaseShaderContext.MaskType maskType, Paint paint)
private void updatePaintShader(BaseShaderGraphics g, Shader shader, BaseShaderContext.MaskType maskType, Paint paint, float bx, float by, float bw, float bh)
private Shader getSpecialShader(BaseGraphics g, BaseShaderContext.SpecialShaderType sst)
public boolean isSuperShaderEnabled()
isSuperShaderEnabled
in class BaseContext
private void updatePerVertexColor(Paint paint, float extraAlpha)
public void validateClearOp(BaseGraphics g)
validateClearOp
in class BaseContext
public void validatePaintOp(BaseGraphics g, BaseTransform xform, Texture maskTex, float bx, float by, float bw, float bh)
validatePaintOp
in class BaseContext
Shader validatePaintOp(BaseShaderGraphics g, BaseTransform xform, BaseShaderContext.MaskType maskType, float bx, float by, float bw, float bh)
Shader validatePaintOp(BaseShaderGraphics g, BaseTransform xform, BaseShaderContext.MaskType maskType, float bx, float by, float bw, float bh, float k1, float k2, float k3, float k4, float k5, float k6)
Shader validatePaintOp(BaseShaderGraphics g, BaseTransform xform, BaseShaderContext.MaskType maskType, Texture maskTex, float bx, float by, float bw, float bh, float k1, float k2, float k3, float k4, float k5, float k6)
Shader validatePaintOp(BaseShaderGraphics g, BaseTransform xform, Texture maskTex, float bx, float by, float bw, float bh)
Shader validatePaintOp(BaseShaderGraphics g, BaseTransform xform, BaseShaderContext.MaskType maskType, Texture maskTex, float bx, float by, float bw, float bh)
public void validateTextureOp(BaseGraphics g, BaseTransform xform, Texture tex0, PixelFormat format)
validateTextureOp
in class BaseContext
public Shader validateLCDOp(BaseShaderGraphics g, BaseTransform xform, Texture tex0, Texture tex1, boolean firstPass, Paint fillColor)
Shader validateTextureOp(BaseShaderGraphics g, BaseTransform xform, Texture[] textures, PixelFormat format)
Shader validateTextureOp(BaseShaderGraphics g, BaseTransform xform, Texture tex0, Texture tex1, PixelFormat format)
Shader validateMaskTextureOp(BaseShaderGraphics g, BaseTransform xform, Texture tex0, Texture tex1, PixelFormat format)
void setExternalShader(BaseShaderGraphics g, Shader shader)
private void checkState(BaseShaderGraphics g, int checkFlags, BaseTransform xform, Shader shader)
private void setTexture(int texUnit, Texture tex)
public void initLCDBuffer(int width, int height)
public void disposeLCDBuffer()
public RTTexture getLCDBuffer()
getLCDBuffer
in class BaseContext
public void validateLCDBuffer(RenderTarget renderTarget)
public abstract void blit(RTTexture srcRTT, RTTexture dstRTT, int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1)
protected void setRenderTarget(RenderTarget target, NGCamera camera, boolean depthTest, boolean state3D)
setRenderTarget
in class BaseContext
protected void releaseRenderTarget()
releaseRenderTarget
in class BaseContext