Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - AeroShark333

Pages: 1 [2]
16
Support / Could not link shader program error
« on: April 30, 2017, 02:35:00 pm »
Hello,

I have a weird crash that I can't really explain since the logs don't give me enough information nor does the error stacktrace...
Stacktrace:
Code: [Select]
java.lang.RuntimeException: [ 1493390702610 ] - ERROR: Could not link shader program:
at com.threed.jpct.Logger.log(Logger.java:206)
at com.threed.jpct.GLSLShader.createProgram(GLSLShader.java:1131)
at com.threed.jpct.GLSLShader.loadProgram(GLSLShader.java:1113)
at com.threed.jpct.GLSLShader.preInit(GLSLShader.java:301)
at com.threed.jpct.GL20.setShader(GL20.java:388)
at com.threed.jpct.GLRenderer.setShader(GLRenderer.java:567)
at com.threed.jpct.CompiledInstance.render(CompiledInstance.java:191)
at com.threed.jpct.GLRenderer.drawVertexArray(GLRenderer.java:2472)
at com.threed.jpct.World.draw(World.java:1426)
at com.threed.jpct.World.draw(World.java:1109)
at com.aeroshark333.artofearthify.lw.LiveWallpaperRenderer.onDrawFrame(LiveWallpaperRenderer.java:1188)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1524)
at android.opengl.
I am using custom shaders and they do seem to work fine on most devices...
The only device that gave me this error happens to be my brother's phone (Samsung Galaxy S3 mini).
It works fine on my phone and enough other phones, however...

Thanks in advance :)

17
Support / Why does jPCT-AE need to keep the texture in the VM memory?
« on: December 01, 2016, 04:59:09 am »
Hello,

Well I guess the title explains all...
I wondered because when textures get uploaded to the GPU (even when pixeldata is kept so it should be safe for any context change) why does it still need the texture data in the VM memory?

Is it possible to not have the textures in VM memory but uploaded to the GPU only?

Cheers,
AeroShark333

18
Projects / Earthify 3D
« on: October 20, 2016, 12:16:45 am »
Hello everyone,

I would like to share my live wallpaper app here which I made using some amazing 3D engine called jPCT-AE! :D



This app has been out for a while now actually but I never really published it here because it's actually still not finished...
I decided to publish it already so people can already use/enjoy the live wallpaper.
I'm really proud of my work although it's probably not nearly the best live wallpaper out there.
That's not my aim either but I guess I'm a little of a perfectionist so I will try to keep improving it.

I'm not really a programmer, it's just an hobby for me. (I have a busy life as an Applied Physics student so I don't spend that much time on programming)
This is not my first app using this library, my most popular app is Skin Viewer 3D (in my forum signature) which is more than a year old now already.
The GLSL Shader language was rather new to me when I began this project but I managed to learn it a little from examples mainly! :)
The custom shaders are based on the default shaders but they have mainly be written by myself (and with a lot of help from the internet/Google).
My biggest problem is probably to support a large range of devices since I'm not really able to test on a lot of devices myself.

What I like most about my own live wallpaper is that it is very customizable.
And it's quite funny to see how the live wallpaper changed over the passed few months.
I tried my best to optimize the wallpaper as much as possible to reduce battery usage...
(usually people say Live Wallpapers are battery consuming but in my opinion it just depends HOW you use your live wallpaper... if you're playing with it constantly on your homescreen then it sort of makes sense to me I guess)
Not all features of the app work properly yet but I'm still working on that.

Screenshots:
https://dl.dropboxusercontent.com/u/47988037/Android/Earthify%203D/v3.9.0/scrns/Screenshot_2016-10-19-21-13-53.jpg
https://dl.dropboxusercontent.com/u/47988037/Android/Earthify%203D/v3.9.0/scrns/Screenshot_2016-10-19-21-19-22.jpg
https://dl.dropboxusercontent.com/u/47988037/Android/Earthify%203D/v3.9.0/scrns/Screenshot_2016-10-19-23-11-46.jpg
https://dl.dropboxusercontent.com/u/47988037/Android/Earthify%203D/v3.9.0/scrns/Screenshot_2016-10-19-23-12-25.jpg
https://dl.dropboxusercontent.com/u/47988037/Android/Earthify%203D/v3.9.0/scrns/Screenshot_2016-10-19-23-12-57.jpg
https://dl.dropboxusercontent.com/u/47988037/Android/Earthify%203D/v3.9.0/scrns/Screenshot_2016-10-19-23-13-24.jpg
https://dl.dropboxusercontent.com/u/47988037/Android/Earthify%203D/v3.9.0/scrns/Screenshot_2016-10-19-23-13-37.jpg
https://dl.dropboxusercontent.com/u/47988037/Android/Earthify%203D/v3.9.0/scrns/Screenshot_2016-10-19-23-14-01.jpg
https://dl.dropboxusercontent.com/u/47988037/Android/Earthify%203D/v3.9.0/scrns/Screenshot_2016-10-19-23-15-53.jpg
https://dl.dropboxusercontent.com/u/47988037/Android/Earthify%203D/v3.9.0/scrns/Screenshot_2016-10-19-23-17-32.jpg

Google Play Store link:
https://play.google.com/store/apps/details?id=com.aeroshark333.earthify3d

Special thanks:
EgonOlsen - For making this amazing 3D library and for providing quick support on the forums! :)

Feel free to comment! :)

Cheers,
Abiram
(AeroShark333)

19
Support / Strange Fatal Error
« on: October 08, 2016, 08:10:11 pm »
Hello,

So I've been trying to develop a new app, though I have just one major issue with it...

Code: [Select]
10-08 17:52:19.684: W/google-breakpad(18652): ### ### ### ### ### ### ### ### ### ### ### ### ###
10-08 17:52:19.684: W/google-breakpad(18652): Chrome build fingerprint:
10-08 17:52:19.684: W/google-breakpad(18652): 3.8
10-08 17:52:19.684: W/google-breakpad(18652): 16
10-08 17:52:19.684: W/google-breakpad(18652): ### ### ### ### ### ### ### ### ### ### ### ### ###
10-08 17:52:19.684: A/libc(18652): Fatal signal 11 (SIGSEGV), code 2, fault addr 0x749c3000 in tid 21230 (GLThread 3696)

So the app starts fine and the camera basically starts facing in the direction of the sunlight.
However, whenever I turn the camera (using touch or autorotation) towards the sun, the app simply just crashes However, it will not always crash...
So I tried using less objects and lower resolution textures.
Both seemed to have a small impact on the chance of this crash to happen.
However, disabling jPCT's LensFlare in my app seemed to fix the whole problem.
But, disabling most objects (and prevent their textures from being loaded) seemed to fix the problem as well.
Having both enabled just does not always work. (Maybe it will work 1 in 10 times, and once it does work, it won't crash when you look away from the sun and back)

EDIT: Nevermind, the crash can also happen with the LensFlare disabled...

20
Support / Texture resizing
« on: May 27, 2016, 08:20:19 am »
Hello,

So I have a small question...
Let's say I have an Android bitmap with the following resolution 1024x2048 (height x width) and I want to make it a 2048x2048 squared texture (to provide support for devices that don't support non-squared textures).
How can I scale the height in the most efficient way?
Bitmap.createScaledBitmap isn't that memory efficient I suppose... (There will be a moment when the original bitmap and the scaled bitmap are loaded in the memory, right? I would like to avoid this,because it could rise an OutOfMemoryError for some devices I guess)

So then, is it possible to do it with a Texture instance instead?
Basically pass the original 1024x2048 bitmap instance to a new texture instance and do Texture.scaleHeight(2);
(Texture.scaleWidth(0.5f); would be possible too of course...)
And when the texture is uploaded to the TextureManager, then the texture will be uploaded as a 2048x2048 texture to the GPU.
I don't know if this can be done... but I guess it would be quite memory efficient if this was possible.

Cheers,
Abiram

21
Support / TextureInfo multi-texture question
« on: April 04, 2016, 03:45:41 am »
Hello,

So I have a little problem...

Let's say I have an Object3D and I need to apply one texture with transparent parts on it.
Object3D.setTexture("textureName"); would apply the texture correctly.
The Object3D is a sphere.

But now I want to apply the same texture on a new texturelayer using TextureInfo.
Well okay, that works fine using TextureInfo.add(textureId, MODE);

But I would like to have the texture on stage 1 and I would like the same texture to have a rotation  (of let's say 90, 180 or 270 degrees) compared to the texture of stage 1 on stage 2.
The textures are squared (width=height) so a 90, 180, 270 degrees rotation should still give a squared texture...
If these rotations are possible, then I wonder if rotations like 30 degrees would work too...
And is it possible to 'translate' the texture for the new/second stage. So when you translate the texture with a certain amount of x, the texture will be shifted to the right (and what was on the right side will replace the 'empty' space  (caused by the translation) on the left)...
Sorry for the bad explanation, I can draw pictures to clarify it if needed...

Current solutions I have:
- I could also upload the rotated/translated texture and use that for the second stage... but the texture I use is rather big... I don't really want to waste memory if it is not needed... And I don't want OutOfMemoryError's obviously...
- (currently using this solution) I create another Object3D (and re-use the mesh of the original) and apply these 'texture rotations' I want by rotating the new Object3D in both the x-axis and the y-axis. And I can get these so called 'texture translations' by rotating the Object3D around the z-axis. Because both Object3D's are basically overlapping each other, it looks like one sphere. So okay, this solution seems fine but I noticed that using multiple texturelayers is much faster than having multiple Object3D's. The World.draw(FrameBuffer); method seems to execute faster when having one multitextured object instead of having multiple single-textured Object3D's.

Cheers,
Abiram

22
Bugs / Textures and the virtualizer
« on: November 07, 2015, 08:06:37 pm »
Hello,

But when I virtualize textures, then the textures shown on my Object3Ds are just black sometimes.

I use the virtualizer for my live wallpaper.
And it seems that when the textures do load properly for the actual live wallpaper of the homescreen, it does not work for the live wallpaper preview/apply screen.
And when it does work for the live wallpaper preview/apply screen, it does not work for the actual live wallpaper.
This is not always the case... but it is hard to reproduce this...

Is there some conflict perhaps between two different activities/services trying to virtualize?

Can this be fixed or am I doing something wrong?

Cheers,
AeroShark333

23
Support / Inversed lighting
« on: October 26, 2015, 05:39:23 pm »
Hello,

Is it possible for an Object3D to have inversed lighting?
Basically the part that is lit by an light source becomes a shadow and the rest of the Object3D looks lit.

Cheers,
Abiram

24
Support / Color bug
« on: September 09, 2015, 11:02:07 am »
Hello,

I got a bug with either the EGLConfig or the shader I think.
Basically, something is wrong with the colors.
The colors are displayed correctly on MOST devices.
However some devices show something similar to this:
https://drive.google.com/file/d/0ByAoxZrYMOphVnFQOE52b01WSkF0V2wzVHlkak5rY0l6Nmo0/view?usp=sharing

I hope that someone is able to help me here.
I am not sure which of both would be causing the bug...
Thanks in advance.

Cheers,
Abiram


25
Support / EGL_BAD_ALLOC error
« on: January 21, 2015, 05:38:51 pm »
Hello everyone,

I hope I can get some help with an odd error.
I am getting this error a lot lately in the Google Developers Console:
Code: [Select]
java.lang.RuntimeException: eglSwapBuffers failed: EGL_BAD_ALLOC
at android.opengl.GLSurfaceView$EglHelper.throwEglException(GLSurfaceView.java:1077)
at android.opengl.GLSurfaceView$EglHelper.swap(GLSurfaceView.java:1035)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1333)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1116)

I got three reports of this error.
I found it odd that all three reports came from Android 2.2 devices.
Devices:
Galaxy Mini (GT-S5570)
IDEOS S7 Slim (qsd8k_slim)
Galaxy Precedent (SCH-M828C)

I hope that I can get some help with this error! :)

Cheers,
Abiram

26
Projects / Skin Viewer 3D
« on: January 19, 2015, 11:01:58 am »
Hey guys,

I made an app called: Skin Viewer 3D.
It uses jPCT-AE for the 3D viewer and the live wallpaper! :)

This is how it looks like:


I don't think most of you people here would be interested in a Minecraft app but make sure to check it out if you are! :)

Some code I wanted to share (how I added rain and snow to the app):
(I don't know if this is neat code or not, but I hope it might be useful to some people. I am a beginning Java programmer ;p)

SkinActivity.java (incomplete!)
Code: [Select]
package com.aeroshark333.skinviewer;

import com.aeroshark333.skinviewer.weather.Rain;
import com.aeroshark333.skinviewer.weather.Snow;
import com.aeroshark333.skinviewer.weather.WeatherManager;

import com.threed.jpct.FrameBuffer;

import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;

import android.opengl.GLSurfaceView;

public class SkinActivity extends Activity {

class ViewerRenderer implements GLSurfaceView.Renderer {
private FrameBuffer frameBuffer;
private final WeatherManager wM;

public ViewerRenderer() {
this.wM = new WeatherManager();
}

@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
}

@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
if (frameBuffer != null) {
// don't reset.
return;
}
if (Build.VERSION.SDK_INT < 8) {
this.frameBuffer = new FrameBuffer(gl, width, height);
} else {
this.frameBuffer = new FrameBuffer(width, height);
}

//to add snow:
this.wM.setGroup(new Snow(this.frameBuffer
.getWidth(), this.frameBuffer.getHeight()));

//to add rain:
this.wM.setGroup(new Rain(this.frameBuffer
.getWidth(), this.frameBuffer.getHeight()));

//to reset:
this.wM.resetGroup();
}

@Override
public void onDrawFrame(GL10 gl) {
frameBuffer.clear();
wM.update(frameBuffer);
frameBuffer.display();
}

}
}

WeatherManager.java (complete)
Code: [Select]
package com.aeroshark333.skinviewer.weather;

import com.threed.jpct.FrameBuffer;
import com.threed.jpct.Texture;

public class WeatherManager {
private Weather group;

public WeatherManager() {

}

public void update(final FrameBuffer frameBuffer) {
if (group == null) {
return;
}

final Texture t1 = group.getTexture();
final int sWidth = frameBuffer.getWidth();
final int sHeight = frameBuffer.getHeight();

if (group instanceof Snow) {
// snow
for (int[] particle : group.getParticles()) {
frameBuffer.blit(t1, 50, 50, particle[0], particle[1], 50, 50,
particle[2], particle[2], -1, false);
particle[1] = particle[1] + 1;
final double random = Math.random();
if (random < 0.25d) {
particle[0] = particle[0] + 1;
}
if (random > 0.75d) {
particle[0] = particle[0] - 1;
}
if (particle[0] > sWidth) {
particle[0] = sWidth / 2;
}
if (particle[0] < 0) {
particle[0] = sWidth / 2;
}
if (particle[1] > sHeight) {
particle[1] = 0;
}
}
} else {
// rain
for (int[] particle : group.getParticles()) {
frameBuffer.blit(t1, 50, 50, particle[0], particle[1], 50, 50,
(particle[2] / 3) + 1, particle[2] * 3, -1, false);
particle[1] = particle[1] + 6;
final double random = Math.random();
particle[0] = particle[0] - 1;
if (random < 0.50d) {
particle[0] = particle[0] - 1;
}
if (random < 0.125d) {
particle[0] = particle[0] - 1;
}
if (particle[0] < 0) {
particle[0] = sWidth - 2;
}
if (particle[1] > sHeight) {
particle[1] = 0;
}
}
}
}

public void setGroup(Weather weathergroup) {
this.group = weathergroup;
}

public boolean hasGroup() {
if (this.group != null) {
return true;
}
return false;

}

public void resetGroup() {
this.group = null;
}
}

Weather.java (complete)
Code: [Select]
package com.aeroshark333.skinviewer.weather;

import java.util.ArrayList;

import com.threed.jpct.Texture;

public interface Weather {
public ArrayList<int[]> getParticles();
public void addParticles(final int amount);
public Texture getTexture();
}

Snow.java (complete)
Code: [Select]
package com.aeroshark333.skinviewer.weather;

import java.util.ArrayList;

import com.threed.jpct.Texture;
import com.threed.jpct.TextureManager;

public class Snow implements Weather {
// int[]{posX,posY,size}
final private ArrayList<int[]> snowParts;
final int width, height;
final Texture texture;

public Snow(int w, int h) {
snowParts = new ArrayList<int[]>();
this.height = h;
this.width = w;
this.texture = TextureManager.getInstance().getTexture("snow");

addParticles((h * w / 9999) * 6);

}

@Override
public void addParticles(final int amount) {

for (int x = 0; amount > x; x++) {
final int posX = width - ((int)(Math.random() * (double)width));
final int posY = height - ((int)(Math.random() * (double)height));
final int size = (int) ((Math.random()*(double)height * (double) width / 225000d)+ 2.25d);
snowParts.add(new int[] { posX, posY, size });
}
}
@Override
public ArrayList<int[]> getParticles() {
return snowParts;
}

@Override
public Texture getTexture() {
return this.texture;
}

}

Rain.java (complete)
Code: [Select]
package com.aeroshark333.skinviewer.weather;

import java.util.ArrayList;

import com.threed.jpct.Texture;
import com.threed.jpct.TextureManager;

public class Rain implements Weather {
// int[]{posX,posY,size}
final private ArrayList<int[]> rainParts;
final int width, height;
final Texture texture;

public Rain(int w, int h) {
rainParts = new ArrayList<int[]>();
this.height = h;
this.width = w;
this.texture = TextureManager.getInstance().getTexture("rain");

addParticles((h * w / 9999) * 9);

}

@Override
public void addParticles(final int amount) {

for (int x = 0; amount > x; x++) {
final int posX = width - ((int) (Math.random() * (double) width));
final int posY = height - ((int) (Math.random() * (double) height));
final int size = (int) ((Math.random() * (double) height
* (double) width / 225000d) + 2.25d);
rainParts.add(new int[] { posX, posY, size });
}
}

@Override
public ArrayList<int[]> getParticles() {
return rainParts;
}

@Override
public Texture getTexture() {
return this.texture;
}

}

Feel free to use this code.
This is not 3D snow though!

Cheers,
Abiram

27
Support / Object3D's transparency issue
« on: December 06, 2014, 12:07:56 pm »
Hey everyone,

I had a hard time trying to register to this forums, so I used my schoolemail...  :o
Anyway, I have an issue with 2 Object3D's...
Both objects are cubed. They have individual textures on each face.
Both objects have this transparency value:
Code: [Select]
this.setTransparency(300);
Box1 is in box2. (their center point is equal)
Box1's dimensions: 2f * 2f * 2f
Box2's dimensions: 2.2f * 2.2f * 2.2f
Box2 has more transparent area's than box1.
However, box2's non-transparent textures don't seem to be visible...
When I remove
Code: [Select]
this.setTransparency(300); from box1, then those non-transparent textures do show up... (but then I get black-ish areas on the box1 texture...)

How can I solve this problem?

Cheers,
Abiram

PS: This library is AWESOME   ;D

Pages: 1 [2]