diff --git a/app/app-release.apk b/app/app-release.apk index 763e7b6..760e9c7 100644 Binary files a/app/app-release.apk and b/app/app-release.apk differ diff --git a/app/src/main/assets/frag_phong.glsl b/app/src/main/assets/frag_phong.glsl index 6ce67f4..3c67828 100644 --- a/app/src/main/assets/frag_phong.glsl +++ b/app/src/main/assets/frag_phong.glsl @@ -1,4 +1,5 @@ precision mediump float; +uniform samplerCube uCubemapInSampler; uniform vec3 uLightPos; uniform vec3 uEyePos; @@ -10,12 +11,18 @@ varying vec3 Normal; void main() { vec3 normal = normalize(Normal); - vec3 lightDir = normalize(uLightPos-FragPos); - vec3 eyeDir = normalize(uEyePos-FragPos); - vec3 reflectDir = reflect(-lightDir,normal); + vec3 lightDir = normalize(uLightPos-FragPos.xyz); + vec3 viewDir = normalize(uEyePos-FragPos.xyz); + vec3 lightReflect = normalize(reflect(-lightDir,normal)); + + vec3 I = normalize(FragPos.xyz-uEyePos); + vec3 viewReflect = normalize(reflect(I,normal)); + + vec4 reflSample = textureCube(uCubemapInSampler, viewReflect); float diffContrib = max(dot(normal, lightDir), 0.0); - float specContrib = max( pow( dot(eyeDir, reflectDir), 8.0), 0.0); + float specTerm = max( pow( dot(viewDir, lightReflect), 8.0), 0.0); + vec3 specContrib = reflSample.rgb*specTerm; gl_FragColor = vec4(Color.rgb*diffContrib+specContrib,1.0); } \ No newline at end of file diff --git a/app/src/main/java/org/xdd/cosmicdancer/CloudRenderer.java b/app/src/main/java/org/xdd/cosmicdancer/CloudRenderer.java index 4216889..989066e 100644 --- a/app/src/main/java/org/xdd/cosmicdancer/CloudRenderer.java +++ b/app/src/main/java/org/xdd/cosmicdancer/CloudRenderer.java @@ -32,10 +32,9 @@ public class CloudRenderer implements GLSurfaceView.Renderer private int mSkyboxCurrentID = 0; //Pointcloud - public PointCloudManager mCloudMgr; - private int mCloudProgID; - private int mCloudVaoID; - private int mInstanceVboID; + public PointCloudManager mCloudMgr; + private PointCloudManager.CloudData[] mPointClouds = new PointCloudManager.CloudData[S_NUM_CUBEMAPS]; + private int mPointCloudID = 0; //Misc world stuff private float mAspect; @@ -43,7 +42,7 @@ public class CloudRenderer implements GLSurfaceView.Renderer private float[] mLightPosition = new float[3]; private long mStartTime; - private PointCloudManager.CloudData mPointCloud; + public CloudRenderer(Context pContext) { @@ -72,49 +71,7 @@ public void onSurfaceCreated(GL10 gl, EGLConfig config) mCloudMgr = new PointCloudManager(mContext,mShaderMgr); SetupSkyboxes(); - - Random rgbGen = new Random(); - float[] instanceData = new float[1000*7]; - int id = 0; - - int numElements = 6; - float bound = 10.0f; - float step = (bound*2.0f)/(float)numElements; - for(int px=0;px0) { - glUniform1i(mLocCube, 0); - glActiveTexture(0); - glBindTexture(GL_TEXTURE_CUBE_MAP, pSkyboxTexID); - } + glUniform1i(mLocCube, 0); + glActiveTexture(0); + glBindTexture(GL_TEXTURE_CUBE_MAP, pSkyboxTexID); + glBindVertexArray(pCloudData.CloudVAO); if(pCloudData.IndexVBO>=0) { @@ -261,7 +260,7 @@ public void DrawCloud(CloudData pCloudData, float[] pLightPos, float[] pEyePos, else glDrawArraysInstanced(GL_TRIANGLES,0,pCloudData.ElementCount,pCloudData.InstanceCount); glBindVertexArray(0); - if(pSkyboxTexID>0) - glBindTexture(GL_TEXTURE_CUBE_MAP, 0); + glBindTexture(GL_TEXTURE_CUBE_MAP, 0); + glUseProgram(0); } } diff --git a/app/src/main/java/org/xdd/cosmicdancer/SceneManager.java b/app/src/main/java/org/xdd/cosmicdancer/SceneManager.java index ba709ca..7420e23 100644 --- a/app/src/main/java/org/xdd/cosmicdancer/SceneManager.java +++ b/app/src/main/java/org/xdd/cosmicdancer/SceneManager.java @@ -92,7 +92,7 @@ public static float[] GetCubeVerts() return meshData; } - public static void GetHedronVerts(float pMeshData[]) + public static float[] GetHedronVerts() { final int S_NUM_VERTS = 60; @@ -183,7 +183,7 @@ public static void GetHedronVerts(float pMeshData[]) vertices[m*6+5] = normals[m*3+2]; } - System.arraycopy(vertices,0,pMeshData,0,vertices.length); + return vertices; } public static void GetSphereVerts(float[] pMeshData, int[] pIndexData, float pRadius, int pSubdAxis, int pSubdHeight)