From e8ad6b404fcbc45131368a7707d2c75f123554d3 Mon Sep 17 00:00:00 2001 From: 106- Date: Wed, 28 May 2025 04:53:54 +0900 Subject: [PATCH 01/23] =?UTF-8?q?=E3=82=AF=E3=83=A9=E3=82=B9=E5=90=8D?= =?UTF-8?q?=E3=81=8C=E9=96=93=E9=81=95=E3=81=A3=E3=81=A6=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3482499..18b6db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ android:label="@string/app_name" android:theme="@style/AppTheme" > @@ -27,7 +27,7 @@ From 6ce4a8624797c239ae7757376468da7fa6dd3e4c Mon Sep 17 00:00:00 2001 From: 106- Date: Wed, 28 May 2025 05:06:31 +0900 Subject: [PATCH 02/23] =?UTF-8?q?SettingsActivity=E5=90=8D=E3=81=8C?= =?UTF-8?q?=E9=81=95=E3=81=A3=E3=81=A6=E3=81=84=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/xml/wallpaper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/xml/wallpaper.xml b/app/src/main/res/xml/wallpaper.xml index 8b44506..1c6c633 100644 --- a/app/src/main/res/xml/wallpaper.xml +++ b/app/src/main/res/xml/wallpaper.xml @@ -3,5 +3,5 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:thumbnail="@drawable/nyan" android:description="@string/reference" - android:settingsActivity="net.t106.sinkerglwallpaper.SettingsActivity" + android:settingsActivity="net.t106.sinkerglwallpaper.ui.activities.SettingsActivity" /> \ No newline at end of file From 17b02b3845bff508925c6fe01fb0c065f5471fe0 Mon Sep 17 00:00:00 2001 From: 106- Date: Wed, 28 May 2025 05:08:13 +0900 Subject: [PATCH 03/23] =?UTF-8?q?=E6=A8=A9=E9=99=90=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 18b6db9..a533813 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -29,7 +29,7 @@ + android:exported="true"> From e842bb4eb276970d3283172ac376c9b3f12291cf Mon Sep 17 00:00:00 2001 From: 106- Date: Wed, 28 May 2025 05:11:37 +0900 Subject: [PATCH 04/23] =?UTF-8?q?=E5=8F=82=E7=85=A7=E3=81=AE=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/xml/pref.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/xml/pref.xml b/app/src/main/res/xml/pref.xml index 4c04b48..dd0c736 100644 --- a/app/src/main/res/xml/pref.xml +++ b/app/src/main/res/xml/pref.xml @@ -1,8 +1,8 @@ - + - - + + \ No newline at end of file From b06470ab176f4c507c65f58d8d7f5916e1519648 Mon Sep 17 00:00:00 2001 From: 106- Date: Wed, 28 May 2025 05:15:48 +0900 Subject: [PATCH 05/23] =?UTF-8?q?=E3=83=AC=E3=82=A4=E3=82=A2=E3=82=A6?= =?UTF-8?q?=E3=83=88=E4=BF=AE=E6=AD=A3=E3=81=AE=E3=81=AF=E3=81=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/activities/SettingsActivity.java | 3 ++- app/src/main/res/layout/activity_settings.xml | 12 ++++++++++++ app/src/main/res/values/styles.xml | 4 +++- 3 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 app/src/main/res/layout/activity_settings.xml diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/ui/activities/SettingsActivity.java b/app/src/main/java/net/t106/sinkerglwallpaper/ui/activities/SettingsActivity.java index e918588..2c111b5 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/ui/activities/SettingsActivity.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/ui/activities/SettingsActivity.java @@ -13,11 +13,12 @@ public class SettingsActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setContentView(R.layout.activity_settings); if (savedInstanceState == null) { getSupportFragmentManager() .beginTransaction() - .replace(android.R.id.content, new SettingsFragment()) + .replace(R.id.settings_container, new SettingsFragment()) .commit(); } } diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml new file mode 100644 index 0000000..ee9739f --- /dev/null +++ b/app/src/main/res/layout/activity_settings.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 830ea6b..2497422 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -4,7 +4,7 @@ Base application theme, dependent on API level. This theme is replaced by AppBaseTheme from res/values-vXX/styles.xml on newer devices. --> - \ No newline at end of file From f275ca8a2cea71b68dc0f1664c0a5a02b57e9842 Mon Sep 17 00:00:00 2001 From: 106- Date: Wed, 28 May 2025 05:19:31 +0900 Subject: [PATCH 06/23] =?UTF-8?q?=E6=9B=B4=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sinkerglwallpaper/ui/activities/SettingsActivity.java | 5 +++++ app/src/main/res/layout/activity_settings.xml | 7 +++++++ app/src/main/res/values/styles.xml | 4 +--- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/ui/activities/SettingsActivity.java b/app/src/main/java/net/t106/sinkerglwallpaper/ui/activities/SettingsActivity.java index 2c111b5..c54e4b4 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/ui/activities/SettingsActivity.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/ui/activities/SettingsActivity.java @@ -15,6 +15,11 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_settings); + androidx.appcompat.widget.Toolbar toolbar = findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + getSupportActionBar().setTitle(R.string.title_activity_settings); + if (savedInstanceState == null) { getSupportFragmentManager() .beginTransaction() diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index ee9739f..14a7eb9 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -4,6 +4,13 @@ android:layout_height="match_parent" android:orientation="vertical"> + + - \ No newline at end of file From 052876966dda116ba5cbc0cc0208cb8254c516f5 Mon Sep 17 00:00:00 2001 From: 106- Date: Wed, 28 May 2025 05:22:49 +0900 Subject: [PATCH 07/23] =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/preferences/SeekBarPreference.java | 9 +++++++++ .../ui/preferences/SizeChangePreference.java | 9 +++++++++ .../ui/preferences/TextBoxPreference.java | 5 +++++ 3 files changed, 23 insertions(+) diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/ui/preferences/SeekBarPreference.java b/app/src/main/java/net/t106/sinkerglwallpaper/ui/preferences/SeekBarPreference.java index c814a23..fa1ecf0 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/ui/preferences/SeekBarPreference.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/ui/preferences/SeekBarPreference.java @@ -25,6 +25,15 @@ public class SeekBarPreference extends DialogPreference{ public SeekBarPreference(Context context, AttributeSet attrs) { super(context, attrs); + init(context); + } + + public SeekBarPreference(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(context); + } + + private void init(Context context) { cxt = context; SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(cxt); col[0] = sp.getInt("col_R", 50); diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/ui/preferences/SizeChangePreference.java b/app/src/main/java/net/t106/sinkerglwallpaper/ui/preferences/SizeChangePreference.java index 24dd0bc..77f44dc 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/ui/preferences/SizeChangePreference.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/ui/preferences/SizeChangePreference.java @@ -23,6 +23,15 @@ public class SizeChangePreference extends DialogPreference { public SizeChangePreference(Context context, AttributeSet attrs) { super(context, attrs); + init(context); + } + + public SizeChangePreference(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(context); + } + + private void init(Context context) { cxt = context; SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(cxt); tmp_prog = sp.getInt("size", 200); diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/ui/preferences/TextBoxPreference.java b/app/src/main/java/net/t106/sinkerglwallpaper/ui/preferences/TextBoxPreference.java index e5050bd..916b1b9 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/ui/preferences/TextBoxPreference.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/ui/preferences/TextBoxPreference.java @@ -12,6 +12,11 @@ public TextBoxPreference(Context context, AttributeSet attrs) { setDialogLayoutResource(R.layout.textboxpref); } + public TextBoxPreference(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + setDialogLayoutResource(R.layout.textboxpref); + } + public void onBindDialogView(android.view.View view) { } From 9cd8909114af5c27666f4d3c41e08326f672a055 Mon Sep 17 00:00:00 2001 From: 106- Date: Wed, 28 May 2025 05:25:23 +0900 Subject: [PATCH 08/23] =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/values-v11/styles.xml | 2 +- app/src/main/res/values-v14/styles.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-v11/styles.xml b/app/src/main/res/values-v11/styles.xml index 6def607..e4c5eb7 100644 --- a/app/src/main/res/values-v11/styles.xml +++ b/app/src/main/res/values-v11/styles.xml @@ -4,7 +4,7 @@ Base application theme for API 11+. This theme completely replaces AppBaseTheme from res/values/styles.xml on API 11+ devices. --> - diff --git a/app/src/main/res/values-v14/styles.xml b/app/src/main/res/values-v14/styles.xml index 0a3271b..da940f2 100644 --- a/app/src/main/res/values-v14/styles.xml +++ b/app/src/main/res/values-v14/styles.xml @@ -5,7 +5,7 @@ AppBaseTheme from BOTH res/values/styles.xml and res/values-v11/styles.xml on API 14+ devices. --> - From 1d528fdc3f3ef817b736f9c5e64b16a269214cfd Mon Sep 17 00:00:00 2001 From: 106- Date: Wed, 28 May 2025 05:35:13 +0900 Subject: [PATCH 09/23] =?UTF-8?q?=E3=82=B9=E3=83=86=E3=83=BC=E3=83=88?= =?UTF-8?q?=E3=83=95=E3=83=AB=E3=81=AB=E3=81=AA=E3=81=A3=E3=81=A6=E3=81=84?= =?UTF-8?q?=E3=81=9D=E3=81=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rendering/services/SinkerService.java | 62 +++++++++++++++++-- 1 file changed, 57 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/services/SinkerService.java b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/services/SinkerService.java index a72301d..2e958b3 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/services/SinkerService.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/services/SinkerService.java @@ -69,6 +69,9 @@ public MyRenderer() @Override public void onDrawFrame(javax.microedition.khronos.opengles.GL10 gl) { + // Reset OpenGL state to known values + resetOpenGLState(); + // Clear screen GLES32.glClear(GLES32.GL_COLOR_BUFFER_BIT); @@ -83,11 +86,60 @@ public void onDrawFrame(javax.microedition.khronos.opengles.GL10 gl) { lf.Update(deltaTime); rf.Update(deltaTime); - // Draw objects - bgy.Draw(viewMatrix, projectionMatrix); - cgy.Draw(viewMatrix, projectionMatrix); - lf.Draw(viewMatrix, projectionMatrix); - rf.Draw(viewMatrix, projectionMatrix); + // Draw objects with state isolation + drawWithStateIsolation(() -> bgy.Draw(viewMatrix, projectionMatrix)); + drawWithStateIsolation(() -> cgy.Draw(viewMatrix, projectionMatrix)); + drawWithStateIsolation(() -> lf.Draw(viewMatrix, projectionMatrix)); + drawWithStateIsolation(() -> rf.Draw(viewMatrix, projectionMatrix)); + } + + private void resetOpenGLState() { + // Reset common OpenGL states to default values + GLES32.glUseProgram(0); + GLES32.glBindTexture(GLES32.GL_TEXTURE_2D, 0); + GLES32.glBindBuffer(GLES32.GL_ARRAY_BUFFER, 0); + GLES32.glBindBuffer(GLES32.GL_ELEMENT_ARRAY_BUFFER, 0); + GLES32.glDisable(GLES32.GL_BLEND); + GLES32.glDisable(GLES32.GL_DEPTH_TEST); + GLES32.glDisable(GLES32.GL_CULL_FACE); + + // Reset vertex attribute arrays + for (int i = 0; i < 8; i++) { + GLES32.glDisableVertexAttribArray(i); + } + } + + private void drawWithStateIsolation(Runnable drawCommand) { + // Save current OpenGL state (basic approach) + int[] currentProgram = new int[1]; + int[] currentTexture = new int[1]; + int[] currentArrayBuffer = new int[1]; + boolean blendEnabled = GLES32.glIsEnabled(GLES32.GL_BLEND); + + GLES32.glGetIntegerv(GLES32.GL_CURRENT_PROGRAM, currentProgram, 0); + GLES32.glGetIntegerv(GLES32.GL_TEXTURE_BINDING_2D, currentTexture, 0); + GLES32.glGetIntegerv(GLES32.GL_ARRAY_BUFFER_BINDING, currentArrayBuffer, 0); + + try { + // Execute draw command + drawCommand.run(); + } finally { + // Restore OpenGL state + GLES32.glUseProgram(currentProgram[0]); + GLES32.glBindTexture(GLES32.GL_TEXTURE_2D, currentTexture[0]); + GLES32.glBindBuffer(GLES32.GL_ARRAY_BUFFER, currentArrayBuffer[0]); + + if (blendEnabled) { + GLES32.glEnable(GLES32.GL_BLEND); + } else { + GLES32.glDisable(GLES32.GL_BLEND); + } + + // Reset vertex attribute arrays again + for (int i = 0; i < 8; i++) { + GLES32.glDisableVertexAttribArray(i); + } + } } @Override public void onSurfaceChanged(javax.microedition.khronos.opengles.GL10 gl, int wid, int hei) { From 19c65f3d6c6f801b8e00b58169476686689dcee5 Mon Sep 17 00:00:00 2001 From: 106- Date: Wed, 28 May 2025 05:38:54 +0900 Subject: [PATCH 10/23] =?UTF-8?q?=E9=80=8F=E9=81=8E=E3=81=8C=E3=81=86?= =?UTF-8?q?=E3=81=BE=E3=81=8F=E8=A1=8C=E3=82=8F=E3=82=8C=E3=81=A6=E3=81=AA?= =?UTF-8?q?=E3=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rendering/services/SinkerService.java | 29 +++++++------------ 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/services/SinkerService.java b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/services/SinkerService.java index 2e958b3..e162274 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/services/SinkerService.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/services/SinkerService.java @@ -86,23 +86,21 @@ public void onDrawFrame(javax.microedition.khronos.opengles.GL10 gl) { lf.Update(deltaTime); rf.Update(deltaTime); - // Draw objects with state isolation - drawWithStateIsolation(() -> bgy.Draw(viewMatrix, projectionMatrix)); - drawWithStateIsolation(() -> cgy.Draw(viewMatrix, projectionMatrix)); - drawWithStateIsolation(() -> lf.Draw(viewMatrix, projectionMatrix)); - drawWithStateIsolation(() -> rf.Draw(viewMatrix, projectionMatrix)); + // Draw objects - they should handle their own state properly + bgy.Draw(viewMatrix, projectionMatrix); + cgy.Draw(viewMatrix, projectionMatrix); + lf.Draw(viewMatrix, projectionMatrix); + rf.Draw(viewMatrix, projectionMatrix); } private void resetOpenGLState() { - // Reset common OpenGL states to default values + // Reset only binding states, not capabilities that objects need to control GLES32.glUseProgram(0); GLES32.glBindTexture(GLES32.GL_TEXTURE_2D, 0); GLES32.glBindBuffer(GLES32.GL_ARRAY_BUFFER, 0); GLES32.glBindBuffer(GLES32.GL_ELEMENT_ARRAY_BUFFER, 0); - GLES32.glDisable(GLES32.GL_BLEND); - GLES32.glDisable(GLES32.GL_DEPTH_TEST); - GLES32.glDisable(GLES32.GL_CULL_FACE); + // Don't reset blend, depth test, or cull face as objects may need them // Reset vertex attribute arrays for (int i = 0; i < 8; i++) { GLES32.glDisableVertexAttribArray(i); @@ -110,11 +108,10 @@ private void resetOpenGLState() { } private void drawWithStateIsolation(Runnable drawCommand) { - // Save current OpenGL state (basic approach) + // Save current OpenGL binding state (not capabilities) int[] currentProgram = new int[1]; int[] currentTexture = new int[1]; int[] currentArrayBuffer = new int[1]; - boolean blendEnabled = GLES32.glIsEnabled(GLES32.GL_BLEND); GLES32.glGetIntegerv(GLES32.GL_CURRENT_PROGRAM, currentProgram, 0); GLES32.glGetIntegerv(GLES32.GL_TEXTURE_BINDING_2D, currentTexture, 0); @@ -124,18 +121,12 @@ private void drawWithStateIsolation(Runnable drawCommand) { // Execute draw command drawCommand.run(); } finally { - // Restore OpenGL state + // Restore only binding states, let objects control their own capabilities GLES32.glUseProgram(currentProgram[0]); GLES32.glBindTexture(GLES32.GL_TEXTURE_2D, currentTexture[0]); GLES32.glBindBuffer(GLES32.GL_ARRAY_BUFFER, currentArrayBuffer[0]); - if (blendEnabled) { - GLES32.glEnable(GLES32.GL_BLEND); - } else { - GLES32.glDisable(GLES32.GL_BLEND); - } - - // Reset vertex attribute arrays again + // Reset vertex attribute arrays for (int i = 0; i < 8; i++) { GLES32.glDisableVertexAttribArray(i); } From 08636c109ff2a58453d2aed2520aaa0828b6de83 Mon Sep 17 00:00:00 2001 From: 106- Date: Wed, 28 May 2025 05:42:29 +0900 Subject: [PATCH 11/23] =?UTF-8?q?=E3=83=87=E3=83=90=E3=83=83=E3=82=B0?= =?UTF-8?q?=E7=94=A8=E3=83=AD=E3=82=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rendering/objects/CenterGraveyard.java | 14 ++++++++++++++ .../rendering/services/SinkerService.java | 3 +++ 2 files changed, 17 insertions(+) diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java index 593c45d..a24c002 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java @@ -38,6 +38,20 @@ protected void createShaderProgram() { @Override public void Draw(float[] viewMatrix, float[] projectionMatrix) { + // Debug: Check if shader and texture are valid + if (shaderProgram == 0) { + android.util.Log.e("CenterGraveyard", "Shader program is 0!"); + return; + } + if (SinkerService.textures[0] == 0) { + android.util.Log.e("CenterGraveyard", "Texture is 0!"); + return; + } + if (vao == 0) { + android.util.Log.e("CenterGraveyard", "VAO is 0!"); + return; + } + // Update MVP matrix with current rotation updateMVP(viewMatrix, projectionMatrix); diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/services/SinkerService.java b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/services/SinkerService.java index e162274..aeb89c1 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/services/SinkerService.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/services/SinkerService.java @@ -182,6 +182,9 @@ public void onSurfaceCreated(javax.microedition.khronos.opengles.GL10 gl, javax. if (newTextures != null) { textures[0] = newTextures[0]; // Original texture textures[1] = newTextures[1]; // Flipped texture + android.util.Log.d("SinkerService", "Textures loaded: " + textures[0] + ", " + textures[1]); + } else { + android.util.Log.e("SinkerService", "Failed to load textures!"); } // Set background color From 203fd85cd1277ec32090a0d7f8bbce8a6a0e30a1 Mon Sep 17 00:00:00 2001 From: 106- Date: Wed, 28 May 2025 05:48:14 +0900 Subject: [PATCH 12/23] =?UTF-8?q?=E6=9B=B4=E3=81=AB=E3=83=AD=E3=82=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rendering/objects/CenterGraveyard.java | 2 ++ .../rendering/objects/Graveyard.java | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java index a24c002..30e7637 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java @@ -38,6 +38,8 @@ protected void createShaderProgram() { @Override public void Draw(float[] viewMatrix, float[] projectionMatrix) { + android.util.Log.d("CenterGraveyard", "Draw() called"); + // Debug: Check if shader and texture are valid if (shaderProgram == 0) { android.util.Log.e("CenterGraveyard", "Shader program is 0!"); diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/Graveyard.java b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/Graveyard.java index b6b407b..e1b0036 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/Graveyard.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/Graveyard.java @@ -43,8 +43,16 @@ public Graveyard() { * Must be called after OpenGL context is created */ public void initGL() { + android.util.Log.d("Graveyard", getClass().getSimpleName() + " initGL() started"); + // Create shader program createShaderProgram(); + android.util.Log.d("Graveyard", getClass().getSimpleName() + " shader program: " + shaderProgram); + + if (shaderProgram == 0) { + android.util.Log.e("Graveyard", getClass().getSimpleName() + " failed to create shader program!"); + return; + } // Get uniform locations mvpMatrixLocation = ShaderUtils.getUniformLocation(shaderProgram, "u_mvpMatrix"); @@ -52,8 +60,14 @@ public void initGL() { colorLocation = ShaderUtils.getUniformLocation(shaderProgram, "u_color"); blendModeLocation = ShaderUtils.getUniformLocation(shaderProgram, "u_blendMode"); + android.util.Log.d("Graveyard", getClass().getSimpleName() + " uniform locations: mvp=" + mvpMatrixLocation + + ", texture=" + textureLocation + ", color=" + colorLocation + ", blend=" + blendModeLocation); + // Create VAO and VBOs createBuffers(); + android.util.Log.d("Graveyard", getClass().getSimpleName() + " VAO: " + vao); + + android.util.Log.d("Graveyard", getClass().getSimpleName() + " initGL() completed"); } /** From 39cf7f136b89919ef4231f63e0e759254f8a9133 Mon Sep 17 00:00:00 2001 From: 106- Date: Wed, 28 May 2025 05:51:53 +0900 Subject: [PATCH 13/23] change --- .../rendering/objects/CenterGraveyard.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java index 30e7637..edcba0e 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java @@ -38,7 +38,7 @@ protected void createShaderProgram() { @Override public void Draw(float[] viewMatrix, float[] projectionMatrix) { - android.util.Log.d("CenterGraveyard", "Draw() called"); + // android.util.Log.d("CenterGraveyard", "Draw() called"); // Debug: Check if shader and texture are valid if (shaderProgram == 0) { @@ -63,15 +63,15 @@ public void Draw(float[] viewMatrix, float[] projectionMatrix) { // Set texture TextureUtils.bindTexture(0, SinkerService.textures[0]); - // Set blend mode to additive (0) - ShaderUtils.setUniform1i(blendModeLocation, 0); + // Set blend mode to multiply (1) for testing + ShaderUtils.setUniform1i(blendModeLocation, 1); - // Set color (white for no tinting) - ShaderUtils.setUniform4f(colorLocation, 1.0f, 1.0f, 1.0f, 1.0f); + // Set color (bright red for testing visibility) + ShaderUtils.setUniform4f(colorLocation, 1.0f, 0.0f, 0.0f, 1.0f); - // Enable blending for additive effect + // Use normal alpha blending for testing GLES32.glEnable(GLES32.GL_BLEND); - GLES32.glBlendFunc(GLES32.GL_ONE, GLES32.GL_ONE); + GLES32.glBlendFunc(GLES32.GL_SRC_ALPHA, GLES32.GL_ONE_MINUS_SRC_ALPHA); // Bind VAO and draw BufferUtils.bindVAO(vao); From 8cc16973ba8e59dc9768f455722d08b9e7ec4757 Mon Sep 17 00:00:00 2001 From: 106- Date: Wed, 28 May 2025 05:56:26 +0900 Subject: [PATCH 14/23] =?UTF-8?q?=E3=83=96=E3=83=AC=E3=83=B3=E3=83=89?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/assets/shaders/blend_fragment.glsl | 5 +++-- .../rendering/objects/CenterGraveyard.java | 10 +++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/app/src/main/assets/shaders/blend_fragment.glsl b/app/src/main/assets/shaders/blend_fragment.glsl index 60ae3db..7eb9d1b 100644 --- a/app/src/main/assets/shaders/blend_fragment.glsl +++ b/app/src/main/assets/shaders/blend_fragment.glsl @@ -36,8 +36,9 @@ void main() { finalColor = texColor * blendColor; } else if (u_blendMode == BLEND_ALPHA) { - // Alpha blending: interpolate based on alpha - finalColor = mix(texColor, blendColor, blendColor.a); + // Alpha blending: combine texture and color properly + finalColor.rgb = mix(texColor.rgb, blendColor.rgb, blendColor.a); + finalColor.a = texColor.a * blendColor.a; } else if (u_blendMode == BLEND_XOR) { // XOR-like blending: absolute difference diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java index edcba0e..84eb747 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java @@ -63,13 +63,13 @@ public void Draw(float[] viewMatrix, float[] projectionMatrix) { // Set texture TextureUtils.bindTexture(0, SinkerService.textures[0]); - // Set blend mode to multiply (1) for testing - ShaderUtils.setUniform1i(blendModeLocation, 1); + // Set blend mode to alpha (2) for transparency + ShaderUtils.setUniform1i(blendModeLocation, 2); - // Set color (bright red for testing visibility) - ShaderUtils.setUniform4f(colorLocation, 1.0f, 0.0f, 0.0f, 1.0f); + // Set color with transparency (red with 50% alpha) + ShaderUtils.setUniform4f(colorLocation, 1.0f, 0.0f, 0.0f, 0.5f); - // Use normal alpha blending for testing + // Use normal alpha blending for transparency GLES32.glEnable(GLES32.GL_BLEND); GLES32.glBlendFunc(GLES32.GL_SRC_ALPHA, GLES32.GL_ONE_MINUS_SRC_ALPHA); From 5eb605c6f504b33edfa46144be0797bc8235edd6 Mon Sep 17 00:00:00 2001 From: 106- Date: Wed, 28 May 2025 06:00:43 +0900 Subject: [PATCH 15/23] =?UTF-8?q?=E9=80=8F=E9=81=8E=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/assets/shaders/blend_fragment.glsl | 11 ++++++++--- .../rendering/objects/CenterGraveyard.java | 4 ++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/app/src/main/assets/shaders/blend_fragment.glsl b/app/src/main/assets/shaders/blend_fragment.glsl index 7eb9d1b..42fe139 100644 --- a/app/src/main/assets/shaders/blend_fragment.glsl +++ b/app/src/main/assets/shaders/blend_fragment.glsl @@ -36,8 +36,8 @@ void main() { finalColor = texColor * blendColor; } else if (u_blendMode == BLEND_ALPHA) { - // Alpha blending: combine texture and color properly - finalColor.rgb = mix(texColor.rgb, blendColor.rgb, blendColor.a); + // Alpha blending: preserve texture transparency + finalColor.rgb = texColor.rgb * blendColor.rgb; finalColor.a = texColor.a * blendColor.a; } else if (u_blendMode == BLEND_XOR) { @@ -53,7 +53,12 @@ void main() { finalColor = texColor * blendColor; } - // Ensure alpha is reasonable + // Discard completely transparent pixels from texture + if (texColor.a < 0.01) { + discard; + } + + // Also discard if final alpha is too low if (finalColor.a < 0.01) { discard; } diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java index 84eb747..764fc05 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java @@ -66,8 +66,8 @@ public void Draw(float[] viewMatrix, float[] projectionMatrix) { // Set blend mode to alpha (2) for transparency ShaderUtils.setUniform1i(blendModeLocation, 2); - // Set color with transparency (red with 50% alpha) - ShaderUtils.setUniform4f(colorLocation, 1.0f, 0.0f, 0.0f, 0.5f); + // Set color (white to show texture as-is, with transparency) + ShaderUtils.setUniform4f(colorLocation, 1.0f, 1.0f, 1.0f, 1.0f); // Use normal alpha blending for transparency GLES32.glEnable(GLES32.GL_BLEND); From d94d3543507cec848e893434b97bee078d6c5ee2 Mon Sep 17 00:00:00 2001 From: 106- Date: Wed, 28 May 2025 06:05:33 +0900 Subject: [PATCH 16/23] change --- app/src/main/assets/shaders/blend_fragment.glsl | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/app/src/main/assets/shaders/blend_fragment.glsl b/app/src/main/assets/shaders/blend_fragment.glsl index 42fe139..272554f 100644 --- a/app/src/main/assets/shaders/blend_fragment.glsl +++ b/app/src/main/assets/shaders/blend_fragment.glsl @@ -26,6 +26,9 @@ void main() { vec4 blendColor = u_color; vec4 finalColor; + // Calculate luminance to detect dark areas (for black background transparency) + float luminance = dot(texColor.rgb, vec3(0.299, 0.587, 0.114)); + // Apply different blend modes if (u_blendMode == BLEND_ADD) { // Additive blending: add colors together @@ -53,7 +56,12 @@ void main() { finalColor = texColor * blendColor; } - // Discard completely transparent pixels from texture + // Discard dark pixels (black background) to create transparency + if (luminance < 0.1) { + discard; + } + + // Discard completely transparent pixels from texture alpha if (texColor.a < 0.01) { discard; } From a731ef6bba449290d02a04222f35eb964c28584e Mon Sep 17 00:00:00 2001 From: 106- Date: Wed, 28 May 2025 06:25:07 +0900 Subject: [PATCH 17/23] chaneg --- app/src/main/assets/shaders/blend_fragment.glsl | 5 +++-- .../rendering/objects/CenterGraveyard.java | 10 +++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/app/src/main/assets/shaders/blend_fragment.glsl b/app/src/main/assets/shaders/blend_fragment.glsl index 272554f..55cfa25 100644 --- a/app/src/main/assets/shaders/blend_fragment.glsl +++ b/app/src/main/assets/shaders/blend_fragment.glsl @@ -31,8 +31,9 @@ void main() { // Apply different blend modes if (u_blendMode == BLEND_ADD) { - // Additive blending: add colors together - finalColor = clamp(texColor + blendColor, 0.0, 1.0); + // Additive blending: multiply texture with color first, then add in framebuffer + finalColor.rgb = texColor.rgb * blendColor.rgb; + finalColor.a = texColor.a * blendColor.a; } else if (u_blendMode == BLEND_MULTIPLY) { // Multiplicative blending: multiply colors diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java index 764fc05..97f86e0 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java @@ -63,15 +63,15 @@ public void Draw(float[] viewMatrix, float[] projectionMatrix) { // Set texture TextureUtils.bindTexture(0, SinkerService.textures[0]); - // Set blend mode to alpha (2) for transparency - ShaderUtils.setUniform1i(blendModeLocation, 2); + // Set blend mode to additive (0) for beautiful color effects + ShaderUtils.setUniform1i(blendModeLocation, 0); - // Set color (white to show texture as-is, with transparency) + // Set color (white for no tinting) ShaderUtils.setUniform4f(colorLocation, 1.0f, 1.0f, 1.0f, 1.0f); - // Use normal alpha blending for transparency + // Use additive blending for glowing effects GLES32.glEnable(GLES32.GL_BLEND); - GLES32.glBlendFunc(GLES32.GL_SRC_ALPHA, GLES32.GL_ONE_MINUS_SRC_ALPHA); + GLES32.glBlendFunc(GLES32.GL_ONE, GLES32.GL_ONE); // Bind VAO and draw BufferUtils.bindVAO(vao); From b6aee36aa45735e2c04b59abad3a6c1e54fcb23a Mon Sep 17 00:00:00 2001 From: 106- Date: Wed, 28 May 2025 06:38:28 +0900 Subject: [PATCH 18/23] =?UTF-8?q?=E3=82=B7=E3=82=A7=E3=83=BC=E3=83=80?= =?UTF-8?q?=E3=83=BC=E8=A8=AD=E5=AE=9A=E3=82=92=E5=A4=89=E3=81=88=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/assets/shaders/color_fragment.glsl | 37 +++++++++++++++++++ .../opengl/shaders/ShaderLoader.java | 4 ++ .../rendering/filters/LeftFilter.java | 10 ++--- .../rendering/filters/RightFilter.java | 7 +--- 4 files changed, 48 insertions(+), 10 deletions(-) create mode 100644 app/src/main/assets/shaders/color_fragment.glsl diff --git a/app/src/main/assets/shaders/color_fragment.glsl b/app/src/main/assets/shaders/color_fragment.glsl new file mode 100644 index 0000000..d9bb388 --- /dev/null +++ b/app/src/main/assets/shaders/color_fragment.glsl @@ -0,0 +1,37 @@ +#version 320 es + +precision mediump float; + +// Input from vertex shader +in vec2 v_texCoord; + +// Uniforms +uniform vec4 u_color; +uniform int u_blendMode; + +// Output color +out vec4 fragColor; + +// Blend mode constants +const int BLEND_ADD = 0; +const int BLEND_MULTIPLY = 1; +const int BLEND_ALPHA = 2; +const int BLEND_XOR = 3; + +void main() { + // Use solid color (no texture) + vec4 finalColor = u_color; + + // For XOR mode, apply some color manipulation + if (u_blendMode == BLEND_XOR) { + // Enhance color for invert effect + finalColor.rgb = 1.0 - finalColor.rgb; + } + + // Discard completely transparent pixels + if (finalColor.a < 0.01) { + discard; + } + + fragColor = finalColor; +} \ No newline at end of file diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/opengl/shaders/ShaderLoader.java b/app/src/main/java/net/t106/sinkerglwallpaper/opengl/shaders/ShaderLoader.java index c405581..dcbb035 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/opengl/shaders/ShaderLoader.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/opengl/shaders/ShaderLoader.java @@ -73,5 +73,9 @@ public static int createBasicProgram(Context context) { public static int createBlendProgram(Context context) { return createProgramFromAssets(context, "basic_vertex.glsl", "blend_fragment.glsl"); } + + public static int createColorProgram(Context context) { + return createProgramFromAssets(context, "basic_vertex.glsl", "color_fragment.glsl"); + } } } \ No newline at end of file diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/LeftFilter.java b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/LeftFilter.java index 64874bc..f19c89c 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/LeftFilter.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/LeftFilter.java @@ -29,21 +29,21 @@ public LeftFilter() @Override protected void createShaderProgram() { - // Use blend shader program for customizable blending - shaderProgram = ShaderLoader.Programs.createBlendProgram(SinkerService.getContext()); + // Use color shader program for color-only rendering + shaderProgram = ShaderLoader.Programs.createColorProgram(SinkerService.getContext()); } @Override public void Draw(float[] viewMatrix, float[] projectionMatrix) { + android.util.Log.d("LeftFilter", "Draw() called, blend_type=" + SinkerService.blend_type + + ", col=[" + SinkerService.col[0] + "," + SinkerService.col[1] + "," + SinkerService.col[2] + "," + SinkerService.col[3] + "]"); + // Update MVP matrix (no rotation, just basic transformation) updateMVP(viewMatrix, projectionMatrix); // Bind shader and set uniforms bindShader(); - // No texture binding needed for color-only rendering - ShaderUtils.setUniform1i(textureLocation, 0); - // Set blend mode from user settings ShaderUtils.setUniform1i(blendModeLocation, SinkerService.blend_type); diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/RightFilter.java b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/RightFilter.java index c3fab38..b5d1095 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/RightFilter.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/RightFilter.java @@ -35,8 +35,8 @@ public RightFilter() @Override protected void createShaderProgram() { - // Use basic shader program without texture - shaderProgram = ShaderLoader.Programs.createBasicProgram(SinkerService.getContext()); + // Use color shader program for color-only rendering + shaderProgram = ShaderLoader.Programs.createColorProgram(SinkerService.getContext()); } @Override @@ -47,9 +47,6 @@ public void Draw(float[] viewMatrix, float[] projectionMatrix) { // Bind shader and set uniforms bindShader(); - // No texture binding needed for color-only rendering - ShaderUtils.setUniform1i(textureLocation, 0); - // Set blend mode to custom invert effect (can be simulated with XOR mode) ShaderUtils.setUniform1i(blendModeLocation, 3); // XOR mode From 43b8db181dca4b3cb722e364c5182a7600515cd2 Mon Sep 17 00:00:00 2001 From: 106- Date: Wed, 28 May 2025 06:55:04 +0900 Subject: [PATCH 19/23] =?UTF-8?q?=E8=89=B2=E3=82=92=E5=9B=BA=E5=AE=9A?= =?UTF-8?q?=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rendering/filters/LeftFilter.java | 41 ++++--------------- .../rendering/filters/RightFilter.java | 10 ++--- 2 files changed, 14 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/LeftFilter.java b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/LeftFilter.java index f19c89c..b6e918d 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/LeftFilter.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/LeftFilter.java @@ -44,42 +44,19 @@ public void Draw(float[] viewMatrix, float[] projectionMatrix) { // Bind shader and set uniforms bindShader(); - // Set blend mode from user settings - ShaderUtils.setUniform1i(blendModeLocation, SinkerService.blend_type); + // Set blend mode to fixed additive (0) + ShaderUtils.setUniform1i(blendModeLocation, 0); - // Set color from user settings (convert from 0-100 range to 0.0-1.0) - int[] col = SinkerService.col; - float red = col[0] / 100.0f; - float green = col[1] / 100.0f; - float blue = col[2] / 100.0f; - float alpha = col[3] / 100.0f; + // Set fixed blue-purple color like old.png + float red = 0.3f; // Less red + float green = 0.4f; // Some green + float blue = 1.0f; // Full blue for blue-purple color + float alpha = 0.6f; // Moderate transparency ShaderUtils.setUniform4f(colorLocation, red, green, blue, alpha); - // Enable blending with mode based on user settings + // Enable additive blending (fixed) GLES32.glEnable(GLES32.GL_BLEND); - - switch(SinkerService.blend_type) - { - // Additive - case 0: - GLES32.glBlendFunc(GLES32.GL_ONE, GLES32.GL_ONE); - break; - // Multiplicative - case 1: - GLES32.glBlendFunc(GLES32.GL_ZERO, GLES32.GL_SRC_COLOR); - break; - // Alpha - case 2: - GLES32.glBlendFunc(GLES32.GL_SRC_ALPHA, GLES32.GL_ONE); - break; - // XOR (Exclusive OR) - case 3: - GLES32.glBlendFunc(GLES32.GL_ONE_MINUS_DST_COLOR, GLES32.GL_ONE_MINUS_SRC_COLOR); - break; - default: - GLES32.glBlendFunc(GLES32.GL_SRC_ALPHA, GLES32.GL_ONE_MINUS_SRC_ALPHA); - break; - } + GLES32.glBlendFunc(GLES32.GL_ONE, GLES32.GL_ONE); // Bind VAO and draw BufferUtils.bindVAO(vao); diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/RightFilter.java b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/RightFilter.java index b5d1095..3b5bc71 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/RightFilter.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/RightFilter.java @@ -47,13 +47,13 @@ public void Draw(float[] viewMatrix, float[] projectionMatrix) { // Bind shader and set uniforms bindShader(); - // Set blend mode to custom invert effect (can be simulated with XOR mode) - ShaderUtils.setUniform1i(blendModeLocation, 3); // XOR mode + // Set blend mode to fixed XOR mode (3) + ShaderUtils.setUniform1i(blendModeLocation, 3); - // Set filter color (pinkish) - ShaderUtils.setUniform4f(colorLocation, RED, GREEN, BLUE, ALPHA); + // Set fixed pinkish color + ShaderUtils.setUniform4f(colorLocation, 1.0f, 0.5f, 0.5f, 0.5f); - // Enable special blending for invert effect + // Enable fixed special blending for invert effect GLES32.glEnable(GLES32.GL_BLEND); GLES32.glBlendFunc(GLES32.GL_ONE_MINUS_DST_COLOR, GLES32.GL_ZERO); From 6f5cec6dacfb6b2887d6df0a7c9306e094a0a42e Mon Sep 17 00:00:00 2001 From: 106- Date: Wed, 28 May 2025 07:09:30 +0900 Subject: [PATCH 20/23] =?UTF-8?q?=E8=AA=BF=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rendering/filters/LeftFilter.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/LeftFilter.java b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/LeftFilter.java index b6e918d..36f131b 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/LeftFilter.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/LeftFilter.java @@ -44,19 +44,19 @@ public void Draw(float[] viewMatrix, float[] projectionMatrix) { // Bind shader and set uniforms bindShader(); - // Set blend mode to fixed additive (0) - ShaderUtils.setUniform1i(blendModeLocation, 0); + // Set blend mode to fixed multiplicative (1) + ShaderUtils.setUniform1i(blendModeLocation, 1); - // Set fixed blue-purple color like old.png - float red = 0.3f; // Less red - float green = 0.4f; // Some green - float blue = 1.0f; // Full blue for blue-purple color - float alpha = 0.6f; // Moderate transparency + // Set original color (0.5, 0.5, 1.0, 0.5) + float red = 0.5f; + float green = 0.5f; + float blue = 1.0f; + float alpha = 0.5f; ShaderUtils.setUniform4f(colorLocation, red, green, blue, alpha); - // Enable additive blending (fixed) + // Enable fixed multiplicative blending GLES32.glEnable(GLES32.GL_BLEND); - GLES32.glBlendFunc(GLES32.GL_ONE, GLES32.GL_ONE); + GLES32.glBlendFunc(GLES32.GL_ZERO, GLES32.GL_SRC_COLOR); // Bind VAO and draw BufferUtils.bindVAO(vao); From 3aa85d784afb1c14ea7cf10eaf32ce1fc1060444 Mon Sep 17 00:00:00 2001 From: 106- Date: Wed, 28 May 2025 08:01:33 +0900 Subject: [PATCH 21/23] =?UTF-8?q?=E9=A0=86=E5=BA=8F=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sinkerglwallpaper/rendering/services/SinkerService.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/services/SinkerService.java b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/services/SinkerService.java index aeb89c1..af2685c 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/services/SinkerService.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/services/SinkerService.java @@ -86,11 +86,11 @@ public void onDrawFrame(javax.microedition.khronos.opengles.GL10 gl) { lf.Update(deltaTime); rf.Update(deltaTime); - // Draw objects - they should handle their own state properly + // Draw objects - filters first, then graveyards + rf.Draw(viewMatrix, projectionMatrix); + lf.Draw(viewMatrix, projectionMatrix); bgy.Draw(viewMatrix, projectionMatrix); cgy.Draw(viewMatrix, projectionMatrix); - lf.Draw(viewMatrix, projectionMatrix); - rf.Draw(viewMatrix, projectionMatrix); } private void resetOpenGLState() { From e1788eebb3eae12f7327c0245e5a53543a8fba00 Mon Sep 17 00:00:00 2001 From: 106- Date: Wed, 28 May 2025 10:59:30 +0900 Subject: [PATCH 22/23] =?UTF-8?q?=E8=83=8C=E6=99=AF=E3=81=AF=E3=82=82?= =?UTF-8?q?=E3=81=86=E7=A2=BA=E5=AE=9A=E3=81=A7=E3=81=84=E3=81=84=E3=81=AF?= =?UTF-8?q?=E3=81=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rendering/objects/BackgroundGraveyard.java | 8 +------- .../rendering/objects/CenterGraveyard.java | 5 +++-- .../rendering/services/SinkerService.java | 4 ++-- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/BackgroundGraveyard.java b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/BackgroundGraveyard.java index 90d7497..f9f63a8 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/BackgroundGraveyard.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/BackgroundGraveyard.java @@ -18,12 +18,6 @@ public class BackgroundGraveyard extends Graveyard { private static final float ROTATION_SPEED = 0.125f; // Positive rotation (opposite to center) private static final int MAX_COUNT = 2880; - // Color tint for background - private static final float RED = 0.375f; - private static final float GREEN = 0.04f; - private static final float BLUE = 0.09f; - private static final float ALPHA = 0.5f; - public BackgroundGraveyard() { super(); @@ -57,7 +51,7 @@ public void Draw(float[] viewMatrix, float[] projectionMatrix) { ShaderUtils.setUniform1i(blendModeLocation, 0); // Set color tint (reddish-brown tint) - ShaderUtils.setUniform4f(colorLocation, RED, GREEN, BLUE, ALPHA); + ShaderUtils.setUniform4f(colorLocation, 0.375f, 0.04f, 0.09f, 1.0f); // Enable blending for additive effect GLES32.glEnable(GLES32.GL_BLEND); diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java index 97f86e0..b7d0a50 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/objects/CenterGraveyard.java @@ -67,12 +67,13 @@ public void Draw(float[] viewMatrix, float[] projectionMatrix) { ShaderUtils.setUniform1i(blendModeLocation, 0); // Set color (white for no tinting) - ShaderUtils.setUniform4f(colorLocation, 1.0f, 1.0f, 1.0f, 1.0f); + ShaderUtils.setUniform4f(colorLocation, 0.37f, 1.0f, 1.0f, 1.0f); // Use additive blending for glowing effects GLES32.glEnable(GLES32.GL_BLEND); GLES32.glBlendFunc(GLES32.GL_ONE, GLES32.GL_ONE); - +// GLES32.glBlendFunc(GLES32.GL_SRC_ALPHA, GLES32.GL_ONE_MINUS_SRC_ALPHA); + // Bind VAO and draw BufferUtils.bindVAO(vao); BufferUtils.drawQuad(); diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/services/SinkerService.java b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/services/SinkerService.java index af2685c..7b9af82 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/services/SinkerService.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/services/SinkerService.java @@ -87,10 +87,10 @@ public void onDrawFrame(javax.microedition.khronos.opengles.GL10 gl) { rf.Update(deltaTime); // Draw objects - filters first, then graveyards - rf.Draw(viewMatrix, projectionMatrix); - lf.Draw(viewMatrix, projectionMatrix); bgy.Draw(viewMatrix, projectionMatrix); cgy.Draw(viewMatrix, projectionMatrix); + lf.Draw(viewMatrix, projectionMatrix); + rf.Draw(viewMatrix, projectionMatrix); } private void resetOpenGLState() { From 3f24f723cab58720f0ac87a0bcae3692ea8bde79 Mon Sep 17 00:00:00 2001 From: 106- Date: Thu, 29 May 2025 14:26:50 +0900 Subject: [PATCH 23/23] =?UTF-8?q?=E8=AA=BF=E6=95=B4=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rendering/filters/LeftFilter.java | 30 +++++-------------- .../rendering/filters/RightFilter.java | 19 ++++++------ 2 files changed, 17 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/LeftFilter.java b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/LeftFilter.java index 36f131b..5a63bcb 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/LeftFilter.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/LeftFilter.java @@ -35,35 +35,21 @@ protected void createShaderProgram() { @Override public void Draw(float[] viewMatrix, float[] projectionMatrix) { - android.util.Log.d("LeftFilter", "Draw() called, blend_type=" + SinkerService.blend_type + - ", col=[" + SinkerService.col[0] + "," + SinkerService.col[1] + "," + SinkerService.col[2] + "," + SinkerService.col[3] + "]"); - + // Update MVP matrix (no rotation, just basic transformation) updateMVP(viewMatrix, projectionMatrix); - + // Bind shader and set uniforms bindShader(); - - // Set blend mode to fixed multiplicative (1) - ShaderUtils.setUniform1i(blendModeLocation, 1); - - // Set original color (0.5, 0.5, 1.0, 0.5) - float red = 0.5f; - float green = 0.5f; - float blue = 1.0f; - float alpha = 0.5f; - ShaderUtils.setUniform4f(colorLocation, red, green, blue, alpha); - - // Enable fixed multiplicative blending + GLES32.glEnable(GLES32.GL_BLEND); - GLES32.glBlendFunc(GLES32.GL_ZERO, GLES32.GL_SRC_COLOR); - - // Bind VAO and draw + + ShaderUtils.setUniform4f(colorLocation, 0.2f, 0.4f, 0.60f, 0.4f); + GLES32.glBlendFunc(GLES32.GL_ONE, GLES32.GL_ONE); BufferUtils.bindVAO(vao); BufferUtils.drawQuad(); BufferUtils.unbindVAO(); - - // Disable blending + GLES32.glDisable(GLES32.GL_BLEND); } @@ -79,7 +65,7 @@ public void sizechange(boolean smollflg) // Update vertex data based on size if(smollflg) { - apex = new float[] { -0.5f, -1.5f, 0.5f, -1.5f, -0.5f, 1.5f, 0.5f, 1.5f, }; + apex = new float[] { -0.5f, -1.5f, 0.0f, -1.5f, -0.5f, 1.5f, 0.0f, 1.5f, }; } else { apex = new float[] { -0.7f, -1.5f, 0.7f, -1.5f, -0.7f, 1.5f, 0.7f, 1.5f, }; } diff --git a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/RightFilter.java b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/RightFilter.java index 3b5bc71..4d81c27 100644 --- a/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/RightFilter.java +++ b/app/src/main/java/net/t106/sinkerglwallpaper/rendering/filters/RightFilter.java @@ -46,18 +46,17 @@ public void Draw(float[] viewMatrix, float[] projectionMatrix) { // Bind shader and set uniforms bindShader(); - - // Set blend mode to fixed XOR mode (3) - ShaderUtils.setUniform1i(blendModeLocation, 3); - - // Set fixed pinkish color - ShaderUtils.setUniform4f(colorLocation, 1.0f, 0.5f, 0.5f, 0.5f); - - // Enable fixed special blending for invert effect + GLES32.glEnable(GLES32.GL_BLEND); + + ShaderUtils.setUniform4f(colorLocation, 0.2f, 0.4f, 0.60f, 0.4f); + GLES32.glBlendFunc(GLES32.GL_ZERO, GLES32.GL_SRC_COLOR); + BufferUtils.bindVAO(vao); + BufferUtils.drawQuad(); + BufferUtils.unbindVAO(); + + ShaderUtils.setUniform4f(colorLocation, 0.85f, 0.85f, 0.85f, 1.00f); GLES32.glBlendFunc(GLES32.GL_ONE_MINUS_DST_COLOR, GLES32.GL_ZERO); - - // Bind VAO and draw BufferUtils.bindVAO(vao); BufferUtils.drawQuad(); BufferUtils.unbindVAO();