Revision f94110ca
Added by Leszek Koltunski over 4 years ago
src/main/java/org/distorted/examples/mirror/MirrorRenderer.java | ||
---|---|---|
27 | 27 |
import org.distorted.library.effect.FragmentEffectBrightness; |
28 | 28 |
import org.distorted.library.effect.MatrixEffectMove; |
29 | 29 |
import org.distorted.library.effect.MatrixEffectScale; |
30 |
import org.distorted.library.effect.VertexEffectScale; |
|
30 | 31 |
import org.distorted.library.main.DistortedLibrary; |
31 | 32 |
import org.distorted.library.main.DistortedEffects; |
32 | 33 |
import org.distorted.library.main.DistortedFramebuffer; |
... | ... | |
62 | 63 |
private DistortedScreen mScreen; |
63 | 64 |
private MeshQuad mQuad1, mQuad2, mQuadMirror, mQuadHead; |
64 | 65 |
private Static3D mHeadPosition, mScaleMirror, mMoveOffscreen2, mScaleHead; |
66 |
private Static3D mScaleOffscreen1, mScaleOffscreen2; |
|
65 | 67 |
|
66 | 68 |
private int mX; |
67 | 69 |
private int mMirrorW, mMirrorH, mHeadW, mHeadH; |
... | ... | |
91 | 93 |
mScaleMirror = new Static3D(1,1,1); |
92 | 94 |
mMoveOffscreen2 = new Static3D(0,0,0); |
93 | 95 |
mScaleHead = new Static3D(1,1,1); |
96 |
mScaleOffscreen1 = new Static3D(1,1,1); |
|
97 |
mScaleOffscreen2 = new Static3D(1,1,1); |
|
94 | 98 |
|
95 |
mEffectsMirror.apply( new MatrixEffectScale(mScaleMirror)); |
|
99 |
mEffectsMirror.apply( new VertexEffectScale(mScaleMirror)); |
|
100 |
mEffectsScreen.apply( new VertexEffectScale(mScaleOffscreen1) ); |
|
101 |
mEffectsOffscreen1.apply( new VertexEffectScale(mScaleOffscreen1) ); |
|
96 | 102 |
mEffectsOffscreen1.apply( new MatrixEffectScale( new Static3D(MIRROR_SCALE,MIRROR_SCALE,MIRROR_SCALE))); |
103 |
mEffectsOffscreen2.apply( new VertexEffectScale(mScaleOffscreen2) ); |
|
97 | 104 |
mEffectsOffscreen2.apply( new MatrixEffectMove(mMoveOffscreen2) ); |
98 |
mEffectsHead.apply( new MatrixEffectScale(mScaleHead) );
|
|
105 |
mEffectsHead.apply( new VertexEffectScale(mScaleHead) );
|
|
99 | 106 |
mEffectsHead.apply( new MatrixEffectMove(mHeadPosition) ); |
100 | 107 |
mEffectsOffscreen1.apply(new FragmentEffectBrightness(new Static1D(MIRROR_BRIGHTNESS))); |
101 | 108 |
} |
... | ... | |
149 | 156 |
int offscreen2W = (int)(MIRROR_SCALE*mScreenW); |
150 | 157 |
int offscreen2H = (int)(MIRROR_SCALE*mScreenH); |
151 | 158 |
|
152 |
mQuad1.setStretch(offscreen1W, offscreen1H, 0);
|
|
153 |
mQuad2.setStretch(offscreen2W, offscreen2H, 0);
|
|
159 |
mScaleOffscreen1.set(offscreen1W, offscreen1H, 0);
|
|
160 |
mScaleOffscreen2.set(offscreen2W, offscreen2H, 0);
|
|
154 | 161 |
|
155 | 162 |
mOffScreen1 = new DistortedFramebuffer( offscreen1W, offscreen1H, 1, DistortedFramebuffer.NO_DEPTH_NO_STENCIL ); |
156 | 163 |
mOffScreen2 = new DistortedFramebuffer( offscreen2W, offscreen2H, 1, DistortedFramebuffer.NO_DEPTH_NO_STENCIL ); |
157 | 164 |
|
158 |
float headScale = HEAD_SCALE *mScreenH/ mHeadH; |
|
159 |
mScaleHead.set(headScale,headScale,headScale); |
|
160 |
|
|
161 |
float scaleW = (float)mScreenW/mMirrorW; |
|
162 |
float scaleH = (float)mScreenH/mMirrorH; |
|
163 |
|
|
164 |
mScaleMirror.set( scaleW, scaleH, 1.0f); |
|
165 |
float headScale = HEAD_SCALE *mScreenH; |
|
166 |
mScaleHead.set(headScale*mHeadW/mHeadH,headScale,0); |
|
167 |
mScaleMirror.set( mScreenW, mScreenH, 0); |
|
165 | 168 |
|
166 | 169 |
mMoveOffscreen2.set( (MIRROR_MOVE_H-0.5f+0.5f*MIRROR_SCALE)*mScreenW, (MIRROR_MOVE_V-0.5f+0.5f*MIRROR_SCALE)*mScreenH*mMirrorW/mMirrorH, 0); |
167 | 170 |
mHeadPosition.set1( (0.5f*HEAD_SCALE - 0.5f + MIRROR_MARGIN*mMirrorW/mMirrorH)*mScreenH ); |
... | ... | |
207 | 210 |
mHeadW = bitmapH.getWidth(); |
208 | 211 |
mHeadH = bitmapH.getHeight(); |
209 | 212 |
|
210 |
mQuadMirror.setStretch(mMirrorW,mMirrorH,0); |
|
211 |
mQuadHead.setStretch(mHeadW, mHeadH,0); |
|
212 |
|
|
213 | 213 |
if( mTextureMirror==null ) mTextureMirror = new DistortedTexture(); |
214 | 214 |
if( mTextureHead ==null ) mTextureHead = new DistortedTexture(); |
215 | 215 |
|
216 | 216 |
mTextureMirror.setTexture(bitmapM); |
217 | 217 |
mTextureHead.setTexture(bitmapH); |
218 | 218 |
|
219 |
VertexEffectScale.enable(); |
|
219 | 220 |
FragmentEffectBrightness.enable(); |
220 | 221 |
|
221 | 222 |
try |
Also available in: Unified diff
Convert Mirror to stretchless API.