*/}}
Browse Source

Some debug changes for it to not crash

YimingWu 1 week ago
parent
commit
ace486c674
4 changed files with 38 additions and 30 deletions
  1. 3 3
      la_tns_kernel.c
  2. 17 17
      resources/la_tns_shaders.cpp
  3. 4 4
      resources/la_widgets.c
  4. 14 6
      resources/la_widgets_viewers.c

+ 3 - 3
la_tns_kernel.c

@@ -428,7 +428,7 @@ char* tnsEnsureShaderCommoms(const char* Content, const char* Library, const cha
     return c1;
 }
 int tnsCheckShaderCompileStatus(GLuint shader_object, char* name){
-    int status=0; char error[8192]={0};
+    int status=0; char error[65536]={0};
     glGetShaderiv(shader_object, GL_COMPILE_STATUS, &status);
     if (status == GL_FALSE){
         glGetShaderInfoLog(shader_object, sizeof(error), 0, error); logPrint("%s shader error:\n%s",name?name:"(unnamed)",error);
@@ -439,7 +439,7 @@ int tnsCheckShaderCompileStatus(GLuint shader_object, char* name){
     return 1;
 }
 int tnsCheckProgramLinkStatus(GLuint program_object, char* name){
-    int status=0; char error[8192]={0};
+    int status=0; char error[65536]={0};
     glGetProgramiv(program_object, GL_LINK_STATUS, &status);
     if (status == GL_FALSE){
         glGetProgramInfoLog(program_object, sizeof(error), 0, error); logPrintNew("%s program Linking error:\n%s",name?name:"(unnamed)",error); return 0;
@@ -516,7 +516,7 @@ tnsShader *tnsNewShaderProgram(int VertexShaderID, int FragmentShaderID, int Geo
     int gso = GeometryShaderID;
     tnsShader *tns = 0;
     int status = 0;
-    char error[8192];
+    char error[65536];
 
     if (!vso || !fso) return 0;
 

+ 17 - 17
resources/la_tns_shaders.cpp

@@ -589,7 +589,7 @@ vec4 halftone(vec4 color){
 )";
 
 
-extern "C" const char* TNS_VERTEX_SIMPLE_MATCAP = R"(#version 310 es
+extern "C" const char* TNS_VERTEX_SIMPLE_MATCAP = R"(#version 320 es
 precision highp float;
 uniform mat4 mProjection;
 uniform mat4 mModel;
@@ -605,7 +605,7 @@ void main(){
     fNormal = normalize(N);
 })";
 
-extern "C" const char* TNS_FRAGMENT_SIMPLE_MATCAP = R"(#version 310 es
+extern "C" const char* TNS_FRAGMENT_SIMPLE_MATCAP = R"(#version 320 es
 precision highp float;
 smooth in vec3 fNormal;
 out vec4 outColor;
@@ -622,7 +622,7 @@ void main(){
     outColor = vec4(vec3(0.84, 0.41, 0.16)*value,1);
 })";
 
-extern "C" const char* TNS_VERTEX_GRID = R"(#version 310 es
+extern "C" const char* TNS_VERTEX_GRID = R"(#version 320 es
 precision highp float;
 
 uniform mat4 mProjection;
@@ -642,7 +642,7 @@ void main(){
     uv = vUV;
 })";
 
-extern "C" const char* TNS_FRAGMENT_TRANSPARNT_GRID = R"(#version 310 es
+extern "C" const char* TNS_FRAGMENT_TRANSPARNT_GRID = R"(#version 320 es
 precision highp float;
 in vec4 fColor;
 in vec2 uv;
@@ -653,7 +653,7 @@ void main(){
     outColor = c;
 })";
 
-extern "C" const char* LA_IMM_VERTEX_SHADER = R"(#version 310 es
+extern "C" const char* LA_IMM_VERTEX_SHADER = R"(#version 320 es
 precision highp float;
 uniform mat4 mProjection;
 uniform mat4 mModel;
@@ -677,7 +677,7 @@ void main(){
     fNormal= normalize((mModel * vec4(vNormal,0.)).xyz);
 })";
 
-extern "C" const char* LA_IMM_FRAGMENT_SHADER = R"(#version 310 es
+extern "C" const char* LA_IMM_FRAGMENT_SHADER = R"(#version 320 es
 #extension GL_ARB_shading_language_420pack : enable // uniform sampler binding
 precision highp float;
 precision highp int;
@@ -853,7 +853,7 @@ void main(){
     outGPos = fGPos;
 })";
 
-extern "C" const char* LA_OBJECT_FRAGMENT_SHADER = R"(#version 310 es
+extern "C" const char* LA_OBJECT_FRAGMENT_SHADER = R"(#version 320 es
 precision highp float;
 uniform int UseNormal;
 uniform float UseHalftone;
@@ -896,7 +896,7 @@ void main(){
     outColor = color; outGPos = fGPos;
 })";
 
-extern "C" const char* LA_FLOOR_VERTEX_SHADER = R"(#version 310 es
+extern "C" const char* LA_FLOOR_VERTEX_SHADER = R"(#version 320 es
 precision highp float;
 uniform mat4 mProjection;
 uniform mat4 mModel;
@@ -911,7 +911,7 @@ void main(){
 	fColor=vColor;
 })";
 
-extern "C" const char* LA_FLOOR_FRAGMENT_SHADER = R"(#version 310 es
+extern "C" const char* LA_FLOOR_FRAGMENT_SHADER = R"(#version 320 es
 precision highp float;
 uniform vec3 uViewPos;
 uniform float uFar;
@@ -923,7 +923,7 @@ void main(){
 	outColor=vec4(fColor.rgb,fColor.a*fac);
 })";
 
-extern "C" const char* LA_RAY_VERTEX_SHADER = R"(#version 310 es
+extern "C" const char* LA_RAY_VERTEX_SHADER = R"(#version 320 es
 precision highp float;
 in vec3 vUV;
 in vec4 vVertex;
@@ -977,7 +977,7 @@ vec4 fxaa(in sampler2D tex, vec2 uv, vec2 texsize) {
     return vec4(texture(tex, offuv).rgb,colm4.a);  
 })";
 
-extern "C" const char* LA_RAY_FRAGMENT_SHADER = R"(#version 310 es
+extern "C" const char* LA_RAY_FRAGMENT_SHADER = R"(#version 320 es
 precision highp float;
 uniform vec3 uViewDir;
 uniform vec3 uViewPos;
@@ -999,7 +999,7 @@ void main(){
     outColor = mul*color+buffer_color;
 })";
 
-extern "C" const char* LA_SCENE_VERTEX_SHADER = R"(#version 310 es
+extern "C" const char* LA_SCENE_VERTEX_SHADER = R"(#version 320 es
 precision highp float;
 uniform mat4 mProjection;
 uniform mat4 mModel;
@@ -1021,7 +1021,7 @@ void main(){
     fGPos= mShadow * mModel * vVertex;\
 })";
 
-extern "C" const char* LA_SCENE_FRAGMENT_SHADER = R"(#version 310 es
+extern "C" const char* LA_SCENE_FRAGMENT_SHADER = R"(#version 320 es
 precision highp float;
 uniform highp sampler2D TexColor;
 uniform highp sampler2DMS TexColorMS;\
@@ -1057,7 +1057,7 @@ void main(){
     outColor=GetShadow(fGPos)*fColor;
 })";
 
-extern "C" const char* LA_CASCADE_SHADOW_VERTEX_SHADER = R"(#version 310 es
+extern "C" const char* LA_CASCADE_SHADOW_VERTEX_SHADER = R"(#version 320 es
 precision highp float;
 in vec4 vVertex;
 uniform mat4 mModel;
@@ -1066,10 +1066,10 @@ void main(){
     gl_Position=mShadow*mModel*vVertex;
 })";
 
-extern "C" const char* LA_CASCADE_SHADOW_FRAGMENT_SHADER = "#version 310 es\n \
+extern "C" const char* LA_CASCADE_SHADOW_FRAGMENT_SHADER = "#version 320 es\n \
 precision highp float;\nvoid main(){gl_FragDepth = gl_FragCoord.z;}";
 
-extern "C" const char* LA_SELECTION_VERTEX_SHADER = R"(#version 310 es
+extern "C" const char* LA_SELECTION_VERTEX_SHADER = R"(#version 320 es
 precision highp float;
 in vec4 vVertex;
 in vec3 vColor;
@@ -1085,7 +1085,7 @@ void main(){
     fIdColor = vColor;
 })";
 
-extern "C" const char* LA_SELECTION_FRAGMENT_SHADER = R"(#version 310 es
+extern "C" const char* LA_SELECTION_FRAGMENT_SHADER = R"(#version 320 es
 precision highp float;
 flat in vec3 fIdColor;
 out vec4 outColor;

+ 4 - 4
resources/la_widgets.c

@@ -644,7 +644,7 @@ void la_IntDraw(laUiItem *ui, int h){
     int Len, i, Seg, W;
     char buf[48] = {0};
     char buf2[48] = {0};
-    char prefix[8][64] = {0};
+    char prefix[16][64] = {0};
     int Original=0;
     int Ranged;
     int min, max;
@@ -680,7 +680,7 @@ void la_IntDraw(laUiItem *ui, int h){
         }else{
             buf[0] = '\0'; buf2[0] = '\0';
             if(Len==1){ strcat(buf2, transLate(ui->PP.LastPs->p->Name)); }
-            if(i<8)strcat(Len==1?buf:buf2,&prefix[i]);
+            if(i<16)strcat(Len==1?buf:buf2,&prefix[i]);
             strPrintIntAfter(buf, 48, Data[i]);
             strAppend(buf, ui->PP.LastPs->p->Unit ? transLate(ui->PP.LastPs->p->Unit) : "");
         }
@@ -776,7 +776,7 @@ void la_FloatDraw(laUiItem *ui, int h){
     int Len, i, W, Seg;
     char buf[48] = {0};
     char buf2[48] = {0};
-    char prefix[8][64] = {0};
+    char prefix[16][64] = {0};
     int Original;
     int Ranged;
     real min, max;
@@ -809,7 +809,7 @@ void la_FloatDraw(laUiItem *ui, int h){
 
         buf[0] = '\0'; buf2[0] = '\0';
         if(Len==1){ strcat(buf2, transLate(ui->PP.LastPs->p->Name)); }
-        if(i<8)strcat(Len==1?buf:buf2, &prefix[i]);
+        if(i<16)strcat(Len==1?buf:buf2, &prefix[i]);
         strPrintFloatAfter(buf, 48, 3, IsRad?deg(Data[i]):Data[i]);
         strAppend(buf, ui->PP.LastPs->p->Unit ? transLate(ui->PP.LastPs->p->Unit) : "");
 

+ 14 - 6
resources/la_widgets_viewers.c

@@ -889,6 +889,14 @@ int OPCHK_Is2DViewExtra(laPropPack *This, laStringSplitor *ss){
     //if (This && (This->LastPs->p->SubProp == _LA_PROP_2D_EXTRA)) return 1;
     return 0;
 }
+static const real scales[11]={1.0f/32,1.0f/16,1.0f/8,1.0f/4,1.0f/2,1,2,4,8,16,32};
+real la_GetClampedZoom(real a,int dir){
+    for(int i=0;i<11;i++){ real fac=a/scales[i];
+        if(dir>0){ if(fac>0.85 && fac<1.1){ return scales[i]; } }
+        else     { if(fac>0.9 && fac<1.15){ return scales[i]; } }
+    }
+    return a;
+}
 int OPINV_CanvasZoom(laOperator *a, laEvent *e){
     laCanvasExtra *ex = a->This->EndInstance;
 
@@ -902,19 +910,19 @@ int OPINV_CanvasZoom(laOperator *a, laEvent *e){
     }
 
     if (strArgumentMatch(a->ExtraInstructionsP, "direction", "in")){
+        real zval=la_GetClampedZoom(ex->ZoomX*0.9,0);
         if (strArgumentMatch(a->ExtraInstructionsP, "axis", "x")){
-            ex->ZoomX *= 0.9;
+            ex->ZoomX = zval;
         }else{
-            ex->ZoomX *= 0.9;
-            ex->ZoomY *= 0.9;
+            ex->ZoomX = ex->ZoomY = zval;
         }
         laRedrawCurrentPanel();
     }elif (strArgumentMatch(a->ExtraInstructionsP, "direction", "out")){
+        real zval=la_GetClampedZoom(ex->ZoomX*1.1,1);
         if (strArgumentMatch(a->ExtraInstructionsP, "axis", "x")){
-            ex->ZoomX *= 1.1;
+            ex->ZoomX = zval;
         }else{
-            ex->ZoomX *= 1.1;
-            ex->ZoomY *= 1.1;
+            ex->ZoomX = ex->ZoomY = zval;
         }
         laRedrawCurrentPanel();
     }