Project

General

Profile

« Previous | Next » 

Revision 984dc935

Added by Leszek Koltunski almost 7 years ago

10% speedup with postprocessing.

View differences:

src/main/java/org/distorted/library/DistortedRenderState.java
164 164
    {
165 165
    if( cState.stencilTest!=1 )
166 166
      {
167
      sState.stencilTest = cState.stencilTest;
167 168
      cState.stencilTest = 1;
168 169
      //android.util.Log.d("State", "stencil test on");
169 170
      GLES30.glEnable(GLES30.GL_STENCIL_TEST);
170 171
      }
171 172
    if( cState.stencilFuncFunc!=GLES30.GL_ALWAYS || cState.stencilFuncRef!=1 || cState.stencilFuncMask!=STENCIL_MASK )
172 173
      {
174
      sState.stencilFuncFunc = cState.stencilFuncFunc;
175
      sState.stencilFuncRef  = cState.stencilFuncRef;
176
      sState.stencilFuncMask = cState.stencilFuncMask;
173 177
      cState.stencilFuncFunc = GLES30.GL_ALWAYS;
174 178
      cState.stencilFuncRef  = 1;
175 179
      cState.stencilFuncMask = STENCIL_MASK;
......
178 182
      }
179 183
    if( cState.stencilOpSfail!=GLES30.GL_KEEP || cState.stencilOpDpfail!=GLES30.GL_KEEP || cState.stencilOpDppass!=GLES30.GL_REPLACE )
180 184
      {
185
      sState.stencilOpSfail = cState.stencilOpSfail;
186
      sState.stencilOpDpfail= cState.stencilOpDpfail;
187
      sState.stencilOpDppass= cState.stencilOpDppass;
181 188
      cState.stencilOpSfail = GLES30.GL_KEEP;
182 189
      cState.stencilOpDpfail= GLES30.GL_KEEP;
183 190
      cState.stencilOpDppass= GLES30.GL_REPLACE;
......
186 193
      }
187 194
    if( cState.colorMaskR!=0 || cState.colorMaskG!=0 || cState.colorMaskB!=0 || cState.colorMaskA!=0 )
188 195
      {
196
      sState.colorMaskR = cState.colorMaskR;
197
      sState.colorMaskG = cState.colorMaskG;
198
      sState.colorMaskB = cState.colorMaskB;
199
      sState.colorMaskA = cState.colorMaskA;
189 200
      cState.colorMaskR = 0;
190 201
      cState.colorMaskG = 0;
191 202
      cState.colorMaskB = 0;
......
195 206
      }
196 207
    if( cState.depthMask!=0 )
197 208
      {
209
      sState.depthMask = cState.depthMask;
198 210
      cState.depthMask = 0;
199 211
      //android.util.Log.d("State", "switch off depth writing");
200 212
      GLES30.glDepthMask(false);
201 213
      }
202 214
    if( cState.stencilMask!= STENCIL_MASK )
203 215
      {
216
      sState.stencilMask = cState.stencilMask;
204 217
      cState.stencilMask = STENCIL_MASK;
205 218
      //android.util.Log.d("State", "stencil mask on");
206 219
      GLES30.glStencilMask(cState.stencilMask);
207 220
      }
208 221
    }
209 222

  
223
///////////////////////////////////////////////////////////////////////////////////////////////////
224

  
225
  static void unsetUpStencilMark()
226
    {
227
    if( sState.stencilTest!=cState.stencilTest )
228
      {
229
      cState.stencilTest = sState.stencilTest;
230

  
231
      if (cState.stencilTest == 0)
232
        {
233
        GLES30.glDisable(GLES30.GL_STENCIL_TEST);
234
        }
235
      else
236
        {
237
        GLES30.glEnable(GLES30.GL_STENCIL_TEST);
238
        }
239
      }
240
    if( sState.colorMaskR!=cState.colorMaskR || sState.colorMaskG!=cState.colorMaskG || sState.colorMaskB!=cState.colorMaskB || sState.colorMaskA!=cState.colorMaskA)
241
      {
242
      cState.colorMaskR = sState.colorMaskR;
243
      cState.colorMaskG = sState.colorMaskG;
244
      cState.colorMaskB = sState.colorMaskB;
245
      cState.colorMaskA = sState.colorMaskA;
246
      GLES30.glColorMask(cState.colorMaskR==1,cState.colorMaskG==1,cState.colorMaskB==1,cState.colorMaskA==1);
247
      }
248
    if( sState.depthMask!=cState.depthMask )
249
      {
250
      cState.depthMask = sState.depthMask;
251
      GLES30.glDepthMask(cState.depthMask==1);
252
      }
253
    if( sState.stencilMask!=cState.stencilMask )
254
      {
255
      cState.stencilMask = sState.stencilMask;
256
      GLES30.glStencilMask(cState.stencilMask);
257
      }
258
    }
259

  
210 260
///////////////////////////////////////////////////////////////////////////////////////////////////
211 261

  
212 262
  static void useStencilMark()

Also available in: Unified diff