Revision 73208cab
Added by Leszek Koltunski over 8 years ago
| src/main/java/org/distorted/library/effect/PostprocessEffectGlow.java | ||
|---|---|---|
| 150 | 150 |
} |
| 151 | 151 |
|
| 152 | 152 |
DistortedFramebuffer inBuffer = buffers[0]; |
| 153 |
DistortedFramebuffer outBuffer = buffers[mQualityLevel];
|
|
| 153 |
DistortedFramebuffer outBuffer = buffers[1];
|
|
| 154 | 154 |
|
| 155 | 155 |
float w1 = outBuffer.getWidth(); |
| 156 | 156 |
float h1 = outBuffer.getHeight(); |
| 157 |
float w2 = inBuffer.getWidth(); |
|
| 158 |
float h2 = inBuffer.getHeight(); |
|
| 157 | 159 |
float near= 1.0f - outBuffer.getNear(); |
| 158 | 160 |
|
| 159 | 161 |
int radius = (int)(uniforms[index]*mQualityScale); |
| ... | ... | |
| 162 | 164 |
|
| 163 | 165 |
int offset = radius + radius*radius/4; |
| 164 | 166 |
radius = (radius+1)/2; |
| 167 |
|
|
| 165 | 168 |
GLES30.glViewport(0, 0, (int)w1, (int)h1); |
| 166 | 169 |
|
| 167 | 170 |
// horizontal glow |
| ... | ... | |
| 169 | 172 |
|
| 170 | 173 |
mProgram1.useProgram(); |
| 171 | 174 |
outBuffer.setAsOutput(); |
| 172 |
outBuffer.bindForOutput(1);
|
|
| 175 |
outBuffer.bindForOutput(0);
|
|
| 173 | 176 |
inBuffer.setAsInput(0); |
| 174 | 177 |
|
| 175 | 178 |
GLES30.glUniform1f ( mProgram1.mUniform[0] , near); |
| ... | ... | |
| 181 | 184 |
GLES30.glVertexAttribPointer(mProgram1.mAttribute[0], POS_DATA_SIZE, GLES30.GL_FLOAT, false, 0, mQuadPositions); |
| 182 | 185 |
GLES30.glVertexAttribPointer(mProgram1.mAttribute[1], TEX_DATA_SIZE, GLES30.GL_FLOAT, false, 0, mQuadTexture); |
| 183 | 186 |
GLES30.glDrawArrays(GLES30.GL_TRIANGLE_STRIP, 0, 4); |
| 187 |
/* |
|
| 188 |
GLES30.glViewport(0, 0, (int)w2, (int)h2); |
|
| 184 | 189 |
|
| 185 | 190 |
// vertical glow |
| 186 | 191 |
for(int i=0; i<=radius; i++) mOffsets[i] = offsetsCache[offset+i]/h1; |
| ... | ... | |
| 199 | 204 |
GLES30.glVertexAttribPointer(mProgram2.mAttribute[0], POS_DATA_SIZE, GLES30.GL_FLOAT, false, 0, mQuadPositions); |
| 200 | 205 |
GLES30.glVertexAttribPointer(mProgram2.mAttribute[1], TEX_DATA_SIZE, GLES30.GL_FLOAT, false, 0, mQuadTexture); |
| 201 | 206 |
GLES30.glDrawArrays(GLES30.GL_TRIANGLE_STRIP, 0, 4); |
| 202 |
|
|
| 207 |
*/ |
|
| 203 | 208 |
return 2; |
| 204 | 209 |
} |
| 205 | 210 |
|
| src/main/java/org/distorted/library/main/DistortedEffects.java | ||
|---|---|---|
| 236 | 236 |
return mP.postprocess(surface); |
| 237 | 237 |
} |
| 238 | 238 |
|
| 239 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 240 |
|
|
| 241 |
int getNumRenders() |
|
| 242 |
{
|
|
| 243 |
return mP.getNumRenders(); |
|
| 244 |
} |
|
| 245 |
|
|
| 246 | 239 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 247 | 240 |
|
| 248 | 241 |
long getBucket() |
| src/main/java/org/distorted/library/main/DistortedOutputSurface.java | ||
|---|---|---|
| 183 | 183 |
{
|
| 184 | 184 |
mBuffer[j] = new DistortedFramebuffer(2,BOTH_DEPTH_STENCIL,TYPE_SYST, (int)(mWidth*mipmap), (int)(mHeight*mipmap) ); |
| 185 | 185 |
mBuffer[j].mMipmap = mipmap; |
| 186 |
mBuffer[j].mNear = mNear; // copy mNear as well (for blitting- see PostprocessEffectBlur.apply() )
|
|
| 186 |
mBuffer[j].mNear = mNear; // copy mNear as well (for blitting- see PostprocessEffect.apply() ) |
|
| 187 | 187 |
mBuffer[j].glClearColor(1.0f,1.0f,1.0f,0.0f); |
| 188 | 188 |
mipmap *= EffectQuality.MULTIPLIER; |
| 189 | 189 |
} |
| ... | ... | |
| 300 | 300 |
} |
| 301 | 301 |
|
| 302 | 302 |
numRenders += currEffects.postprocess(this); |
| 303 |
numRenders += blitWithDepth(time, mBuffer[quality]);
|
|
| 303 |
numRenders += blitWithDepth(time, mBuffer[1]);
|
|
| 304 | 304 |
} |
| 305 | 305 |
} |
| 306 | 306 |
|
| src/main/java/org/distorted/library/main/EffectQueuePostprocess.java | ||
|---|---|---|
| 90 | 90 |
return mNumEffects>0 ? ((PostprocessEffect)mEffects[0]).getQuality() : 0; |
| 91 | 91 |
} |
| 92 | 92 |
|
| 93 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 94 |
// TODO: for now, we assume each postprocessing effect issues 2 drawing calls (this is for statistical |
|
| 95 |
// purposes only anyway) |
|
| 96 |
|
|
| 97 |
int getNumRenders() |
|
| 98 |
{
|
|
| 99 |
return 2*mNumEffects; |
|
| 100 |
} |
|
| 101 |
|
|
| 102 | 93 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 103 | 94 |
|
| 104 | 95 |
int postprocess(DistortedOutputSurface surface) |
Also available in: Unified diff
Debugging Glow.