It is shown up at the bottom, because we have a habit of top posting. Fri, 28 Feb 2020, Raul Miller написал(а): > And... this shows up in the forum archive -- not as an attachment, but > as the tail end of my post. > > http://jsoftware.com/pipermail/programming/2020-February/055196.html > > So, that's promising. > > Thanks, > > -- > Raul > > On Fri, Feb 28, 2020 at 1:15 PM Raul Miller <rauldmil...@gmail.com> wrote: > > > > I attached an .ijs > > > > Here's the same file with a .txt extension. > > > > Thanks, > > > > > > -- > > Raul > > > > On Fri, Feb 28, 2020 at 12:31 PM 'robert therriault' via Programming > > <programm...@jsoftware.com> wrote: > > > > > > Hey Raul, > > > > > > I think that Bill was suggesting that you convert the .ijs file to .txt > > > before attaching. Did you attach a .txt version or the .ijs version of > > > the file. > > > > > > Cheers, bob > > > > > > > On Feb 28, 2020, at 09:23, Raul Miller <rauldmil...@gmail.com> wrote: > > > > > > > > And... I do not see the attachment at > > > > http://jsoftware.com/pipermail/programming/2020-February/055193.html > > > > > > > > The other copy seems to indicate that my attachment got the mime type > > > > "application/octet-stream", despite it being text content (I was > > > > hoping for "text/plain".) > > > > > > > > That said, ... I should probably be experimenting on the chat forum. > > > > But, also, I'm using gmail which does not seem to give me control over > > > > the mime type of attachments (and researching this issue has lead me > > > > into a maze of conflicting statements on the subject). > > > > > > > > So, anyways... while I haven't eliminated the possibility that forum > > > > .ijs attachments might work, I am slightly sceptical at this point. > > > > > > > > Thanks, > > > > > > > > -- > > > > Raul > > > > > > > > > > > > > > > > On Fri, Feb 28, 2020 at 12:15 PM Raul Miller <rauldmil...@gmail.com> > > > > wrote: > > > >> > > > >> Hmm... > > > >> > > > >> I am attaching an example .ijs file to this response. > > > >> > > > >> I am also bcc'ing a copy of this message to an alternate email > > > >> address, so that I can see how it gets treated outside the forums. > > > >> > > > >> Will the attachment show up at > > > >> http://jsoftware.com/pipermail/programming/2020-February/date.html? (I > > > >> will see, soon...) > > > >> > > > >> Thanks, > > > >> > > > >> -- > > > >> Raul > > > >> > > > >> On Fri, Feb 28, 2020 at 11:58 AM bill lam <bbill....@gmail.com> wrote: > > > >>> > > > >>> I think J forum actually accept text file attachments. > > > >>> Attach .ijs file as .txt file probably work if email > > > >>> client set mime type correctly. > > > >>> > > > >>> Fri, 28 Feb 2020, Raul Miller написал(а): > > > >>>> This is getting to be long enough that it might help to use a > > > >>>> resource > > > >>>> like github (either a repository or a gist) or even pastebin (rather > > > >>>> than email) to distribute it. > > > >>>> > > > >>>> (I'm still getting going for today, and haven't actually tried this, > > > >>>> yet. But I'm anticipating some difficulties separating text from code > > > >>>> and maybe chasing down implied pieces.) > > > >>>> > > > >>>> Thanks, > > > >>>> > > > >>>> -- > > > >>>> Raul > > > >>>> > > > >>>> On Fri, Feb 28, 2020 at 8:52 AM Brian Schott > > > >>>> <schott.br...@gmail.com> wrote: > > > >>>>> > > > >>>>> Bill, especially (Thomas, Raul, and others), > > > >>>>> > > > >>>>> Your comment regarding trying a simpler figure and simplifying the > > > >>>>> color > > > >>>>> has led me to consider several alternatives. Below I show a revised > > > >>>>> script > > > >>>>> which uses a tetrahedron (4 faces) and some color changes. I think > > > >>>>> the > > > >>>>> tetrahedron is mostly working for me but I am really confused about > > > >>>>> the > > > >>>>> colors. > > > >>>>> > > > >>>>> I apologize for the length of this email, but I have many questions. > > > >>>>> > > > >>>>> As an aside, I have discovered an error in the shader.ijs in the > > > >>>>> qtdemo's. > > > >>>>> The last 0 in the following line should be a 1 because it's the > > > >>>>> alpha > > > >>>>> value. (Coincidentally, there is another line in shader.ijs which > > > >>>>> also > > > >>>>> addresses ClearColor, but it is ignored, I think, and it separates > > > >>>>> the > > > >>>>> integers with ;'s .) Correcting that alpha value creates a black > > > >>>>> background, which can be effective. > > > >>>>> > > > >>>>> glClearColor 0 0 0 0 > > > >>>>> > > > >>>>> Btw, I have left 2 glClearColor's in the script so it's easy to > > > >>>>> swap them: > > > >>>>> white 1 1 1 1 and > > > >>>>> black 0 0 0 1 . > > > >>>>> > > > >>>>> The major changes I have made to the script are the following. > > > >>>>> > > > >>>>> NB. changed cube to a mirrored sphenoid(?) > > > >>>>> NB. (eg, see > > > >>>>> https://en.wikipedia.org/wiki/Architectonic_and_catoptric_tessellation) > > > >>>>> > > > >>>>> rt=: (|.@:{)`[`]} NB. rotates vertices of xth face for winding > > > >>>>> order > > > >>>>> vertexData=: 1&fc ,1 rt 3 rt 4 3 3$ %&10, 0&". ;._2 [ 0 : 0 > > > >>>>> _3 _9 _4 > > > >>>>> 3 _9 _4 > > > >>>>> 0 0 2 > > > >>>>> 0 8 _4 > > > >>>>> ) > > > >>>>> > > > >>>>> I discovered that the verb `rt` (or something like it) is required > > > >>>>> to make > > > >>>>> the tetrahedron work because of face winding issues. The original > > > >>>>> cube was > > > >>>>> adjusted another way, apparently. > > > >>>>> With `vertexData` defined either as above OR without `1&fc` > > > >>>>> prepended I get > > > >>>>> the SAME --mostly desirable-- results. The inclusion and exclusion > > > >>>>> of > > > >>>>> `1&fc` giving the same result is confusing, by itself, and begs the > > > >>>>> question, "Why is `1&fc` used?" > > > >>>>> > > > >>>>> I said "mostly desirable" above, instead of "desirable" because of > > > >>>>> the next > > > >>>>> 2 issues. > > > >>>>> > > > >>>>> v0) The 10 in the first line of the definition of vertexData is > > > >>>>> used to > > > >>>>> simplify data entry and I have also used it to experiment with > > > >>>>> scaling the > > > >>>>> size of the tetrahedron. This has led to another surprise, that no > > > >>>>> scaling > > > >>>>> seems to result from increasing the 10 to 80 or so. Why? > > > >>>>> > > > >>>>> v1) I have been disillusioned by the face coloring of the > > > >>>>> tetrahedron, even > > > >>>>> in the simplest situations because when the tetrahedron is rotated > > > >>>>> in > > > >>>>> certain directions, the black or white background seems to bleed > > > >>>>> through > > > >>>>> one of the edges. What causes that? > > > >>>>> > > > >>>>> Now, moving on to coloring. I have no idea how the face COLORing > > > >>>>> works > > > >>>>> using almost any version of `colorData` below. I can generalize > > > >>>>> though on > > > >>>>> one thing: if I leave out the `1&fc`, no colors work on ANY version > > > >>>>> of `colorData` . > > > >>>>> > > > >>>>> The first version below seems to give a complete tetrahedron except > > > >>>>> for the > > > >>>>> background color bleeding through one edge. And as mentioned > > > >>>>> earlier, it > > > >>>>> only works with vertices rotated with the rt verb. > > > >>>>> > > > >>>>> colorData=: 1&fc ,1 rt 3 rt 4 3 3$ , 0&". ;._2 [ 0 : 0 > > > >>>>> 0 0 1 > > > >>>>> 1 1 1 > > > >>>>> 1 0 0 > > > >>>>> 0 1 0 > > > >>>>> ) > > > >>>>> > > > >>>>> f0) If the 1's in the second row are changed to 0.9's, the > > > >>>>> background color > > > >>>>> no longer bleeds in. Why? > > > >>>>> > > > >>>>> f1) (This approach does not seem to work at all, and I have a > > > >>>>> replacement > > > >>>>> for it that works a little, but will send it in a new message) I > > > >>>>> want 2 of > > > >>>>> the faces in the tetrahedron to have the same color and each of the > > > >>>>> other 2 > > > >>>>> to have a different color (3 colors altogether). I devised the > > > >>>>> following > > > >>>>> NONWORKING scheme of colors to accomplish this result. By > > > >>>>> nonworking I mean > > > >>>>> only the background color shows in the graphics pane, no > > > >>>>> tetrahedron. Why? > > > >>>>> > > > >>>>> colorData=: 1&fc ,_3]\3#"2] 0&". ;._2 [ 0 : 0 > > > >>>>> 0 0 1 > > > >>>>> 1 1 1 > > > >>>>> 1 0 0 > > > >>>>> 0 1 0 > > > >>>>> ) > > > >>>>> > > > >>>>> To demonstrate the result above consider the following result which > > > >>>>> makes > > > >>>>> each of the 4 faces, represented by the boxes' contents below, has 3 > > > >>>>> identical rows. > > > >>>>> ;/_3]\3#"2] 0&". ;._2 [ 0 : 0 > > > >>>>> 0 0 1 > > > >>>>> 1 1 1 > > > >>>>> 1 0 0 > > > >>>>> 0 1 0 > > > >>>>> ) > > > >>>>> +-----+-----+-----+-----+ > > > >>>>> |0 0 1|1 1 1|1 0 0|0 1 0| > > > >>>>> |0 0 1|1 1 1|1 0 0|0 1 0| > > > >>>>> |0 0 1|1 1 1|1 0 0|0 1 0| > > > >>>>> +-----+-----+-----+-----+ > > > >>>>> > > > >>>>> > > > >>>>> > > > >>>>> ***************my revised slider.ijs script is below************ > > > >>>>> > > > >>>>> cocurrent 'demoshader' > > > >>>>> > > > >>>>> mp=: (+/ . *)"2 > > > >>>>> rt=: (|.@:{)`[`]}NB. rotates vertices of xth face for winding order > > > >>>>> sprog=: 0 > > > >>>>> GLSL=: 0 > > > >>>>> STOP=: 0 > > > >>>>> > > > >>>>> A=: 0 : 0 > > > >>>>> pc a; > > > >>>>> minwh 300 300;cc g opengl flush; > > > >>>>> rem form end; > > > >>>>> ) > > > >>>>> > > > >>>>> a_run=: 3 : 0 > > > >>>>> NB. if. -. checkrequire_qtdemo_ 'gles';'api/gles' do. return. end. > > > >>>>> require 'gl2' > > > >>>>> coinsert 'jgl2' > > > >>>>> require 'gles' > > > >>>>> coinsert 'jgles' > > > >>>>> require '~addons/ide/qt/opengl.ijs' > > > >>>>> coinsert 'qtopengl' > > > >>>>> STEPS=: 100 > > > >>>>> R=: 20 30 0 > > > >>>>> EYE=: 0 0 1 > > > >>>>> LR=: UD=: IO=: 0 > > > >>>>> UP=: 0 1 0 > > > >>>>> wd A > > > >>>>> HD=: ".wd'qhwndc g' > > > >>>>> wd 'ptimer 100' > > > >>>>> wd 'pshow' > > > >>>>> ) > > > >>>>> > > > >>>>> a_g_initialize=: 3 : 0 > > > >>>>> if. p=. >@{. glGetString GL_VERSION do. smoutput 'GL_VERSION: ', > > > >>>>> memr 0 _1 > > > >>>>> 2,~ p end. > > > >>>>> if. 0=p do. smoutput 'cannot retrieve GL_VERSION' return. end. > > > >>>>> if. p=. >@{. glGetString GL_VENDOR do. smoutput 'GL_VENDOR: ', memr > > > >>>>> 0 _1 > > > >>>>> 2,~ p end. > > > >>>>> if. p=. >@{. glGetString GL_RENDERER do. smoutput 'GL_RENDERER: ', > > > >>>>> memr 0 > > > >>>>> _1 2,~ p end. > > > >>>>> if. p=. >@{. glGetString GL_SHADING_LANGUAGE_VERSION do. smoutput > > > >>>>> 'GL_SHADING_LANGUAGE_VERSION: ', memr 0 _1 2,~ p end. > > > >>>>> GLSL=: wglGLSL'' > > > >>>>> > > > >>>>> wglPROC'' > > > >>>>> sprog=: 0 > > > >>>>> if. GLSL>120 do. > > > >>>>> vsrc=. vsrc2 > > > >>>>> fsrc=. fsrc2 > > > >>>>> else. > > > >>>>> vsrc=. vsrc1 > > > >>>>> fsrc=. fsrc1 > > > >>>>> if. 0=GLES_VERSION_jgles_ do. > > > >>>>> vsrc=. vsrc,~ '#define lowp', LF, '#define mediump', LF, '#define > > > >>>>> highp', LF > > > >>>>> fsrc=. fsrc,~ '#define lowp', LF, '#define mediump', LF, '#define > > > >>>>> highp', LF > > > >>>>> end. > > > >>>>> end. > > > >>>>> vsrc=. '#version ',(":GLSL),((GLSL>:300)#(*GLES_VERSION){::' core';' > > > >>>>> es'),LF,vsrc > > > >>>>> fsrc=. '#version ',(":GLSL),((GLSL>:300)#(*GLES_VERSION){::' core';' > > > >>>>> es'),LF,fsrc > > > >>>>> if.(GLSL>:300)*.0~:GLES_VERSION_jgles_ do. > > > >>>>> fsrc=. ('void main';'out vec4 gl_FragColor;',LF,'void main') > > > >>>>> stringreplace fsrc > > > >>>>> end. > > > >>>>> smoutput vsrc > > > >>>>> smoutput fsrc > > > >>>>> 'err program'=. gl_makeprogram vsrc;fsrc > > > >>>>> if. #err do. smoutput err return. end. > > > >>>>> > > > >>>>> vertexAttr=: >@{. glGetAttribLocation program;'vertex' > > > >>>>> assert. _1~: vertexAttr > > > >>>>> colorAttr=: >@{. glGetAttribLocation program;'color' > > > >>>>> assert. _1~: colorAttr > > > >>>>> mvpUni=: >@{. glGetUniformLocation program;'mvp' > > > >>>>> assert. _1~: mvpUni > > > >>>>> > > > >>>>> glGenBuffers 2;vbo=: 2#_1 > > > >>>>> glBindBuffer GL_ARRAY_BUFFER; {.vbo > > > >>>>> glBufferData GL_ARRAY_BUFFER; (#vertexData); (symdat <'vertexData'); > > > >>>>> GL_STATIC_DRAW > > > >>>>> glBindBuffer GL_ARRAY_BUFFER; {:vbo > > > >>>>> glBufferData GL_ARRAY_BUFFER; (#colorData); (symdat <'colorData'); > > > >>>>> GL_STATIC_DRAW > > > >>>>> glBindBuffer GL_ARRAY_BUFFER; 0 > > > >>>>> > > > >>>>> sprog=: program > > > >>>>> > > > >>>>> NB. glClearColor 0; 0; 1; 1 > > > >>>>> ) > > > >>>>> > > > >>>>> a_g_char=: 3 : 0 > > > >>>>> if. 0=#sysdata do. return. end. > > > >>>>> R=: 360 | R + 2 * 'xyz' = 0 { sysdata > > > >>>>> k=. 0{sysdata > > > >>>>> STEPS=: 200 <. STEPS + 's' = k > > > >>>>> STEPS=: 3 >. STEPS - 'a' = k > > > >>>>> LR=: LR - 0.01*'l'=k > > > >>>>> LR=: LR + 0.01*'r'=k > > > >>>>> gl_paint '' > > > >>>>> ) > > > >>>>> > > > >>>>> a_timer=: 3 : 0 > > > >>>>> if. 0=STOP do. return. end. > > > >>>>> R=: 360 | R + 2 * 1 1 1 > > > >>>>> gl_sel HD > > > >>>>> gl_paint'' > > > >>>>> ) > > > >>>>> > > > >>>>> a_g_paint=: 3 : 0 > > > >>>>> if. 0=sprog do. return. end. > > > >>>>> > > > >>>>> wh=. gl_qwh'' > > > >>>>> glClearColor 1 1 1 1 > > > >>>>> glClearColor 0 0 0 1 NB. this is new > > > >>>>> glClear GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT > > > >>>>> > > > >>>>> glUseProgram sprog > > > >>>>> glEnable GL_DEPTH_TEST > > > >>>>> glEnable GL_CULL_FACE > > > >>>>> > > > >>>>> NB. matrix convention: current matrix on the left > > > >>>>> NB. note pre-multiplication > > > >>>>> > > > >>>>> NB. model-view > > > >>>>> mvp=: (gl_Rotate (0{R), 1 0 0 ) mp (gl_Rotate (1{R), 0 1 0) mp > > > >>>>> (gl_Rotate > > > >>>>> (2{R), 0 0 1) mp (gl_Scale STEPS%100) mp (gl_Translate 0 0 _8) mp > > > >>>>> glu_LookAt EYE,LR,UD,IO,UP > > > >>>>> > > > >>>>> NB. projection > > > >>>>> mvp=: mvp mp gl_Perspective 30, (%/wh),1 10 > > > >>>>> > > > >>>>> NB. note GL_FALSE, no transpose > > > >>>>> glUniformMatrix4fv mvpUni; 1; GL_FALSE; mvp > > > >>>>> > > > >>>>> glBindBuffer GL_ARRAY_BUFFER; {.vbo > > > >>>>> glEnableVertexAttribArray vertexAttr > > > >>>>> glVertexAttribPointer vertexAttr; 3; GL_FLOAT; 0; 0; 0 > > > >>>>> > > > >>>>> glBindBuffer GL_ARRAY_BUFFER; {:vbo > > > >>>>> glEnableVertexAttribArray colorAttr > > > >>>>> glVertexAttribPointer colorAttr; 3; GL_FLOAT; 0; 0; 0 > > > >>>>> > > > >>>>> glDrawArrays GL_TRIANGLES; 0; 12 NB. 36 was for cubes ******* > > > >>>>> > > > >>>>> glBindBuffer GL_ARRAY_BUFFER; 0 > > > >>>>> glDisableVertexAttribArray colorAttr > > > >>>>> glDisableVertexAttribArray vertexAttr > > > >>>>> > > > >>>>> glDisable GL_DEPTH_TEST > > > >>>>> glDisable GL_CULL_FACE > > > >>>>> > > > >>>>> glUseProgram 0 > > > >>>>> > > > >>>>> gl_clear '' > > > >>>>> gl_rgb 255 255 255 > > > >>>>> gl_textcolor '' > > > >>>>> gl_textxy 10 30 > > > >>>>> gl_text 'keys: x y z a s l r F4' > > > >>>>> gl_textxy 10 50 > > > >>>>> gl_text 'scale: ',":STEPS%100 > > > >>>>> gl_textxy 10 70 > > > >>>>> gl_text 'angle: ',":R > > > >>>>> gl_textxy 10 90 > > > >>>>> if. 0=sprog do. return. end. > > > >>>>> gl_text 'matrix:' > > > >>>>> for_i. i.4 do. > > > >>>>> gl_textxy 10, 105+i*15 > > > >>>>> gl_text 6j2": i{mvp > > > >>>>> end. > > > >>>>> ) > > > >>>>> > > > >>>>> a_f4_fkey=: 3 : 0 > > > >>>>> STOP=: -.STOP > > > >>>>> NB. gl_paint '' > > > >>>>> ) > > > >>>>> > > > >>>>> a_cancel=: a_close > > > >>>>> > > > >>>>> a_close=: 3 : 0 > > > >>>>> STOP=: 0 > > > >>>>> wd 'ptimer 0' > > > >>>>> glDeleteBuffers ::0: 2; vbo > > > >>>>> glDeleteProgram ::0: sprog > > > >>>>> wd 'pclose' > > > >>>>> ) > > > >>>>> > > > >>>>> NB. Mirrored sphenoid? > > > >>>>> vertexData=: 1&fc ,1 rt 3 rt 4 3 3$ %&80, 0&". ;._2 [ 0 : 0 > > > >>>>> _3 _9 _4 > > > >>>>> 3 _9 _4 > > > >>>>> 0 0 2 > > > >>>>> 0 8 _4 > > > >>>>> ) > > > >>>>> > > > >>>>> colorData=: 1&fc ,1 rt 3 rt 4 3 3$ , 0&". ;._2 [ 0 : 0 > > > >>>>> 0 0 1 > > > >>>>> 1 1 1 > > > >>>>> 1 0 0 > > > >>>>> 0 1 0 > > > >>>>> ) > > > >>>>> > > > >>>>> > > > >>>>> NB. ========================================================= > > > >>>>> vsrc1=: 0 : 0 > > > >>>>> attribute highp vec3 vertex; > > > >>>>> attribute lowp vec3 color; > > > >>>>> varying lowp vec4 v_color; > > > >>>>> uniform mat4 mvp; > > > >>>>> void main(void) > > > >>>>> { > > > >>>>> gl_Position = mvp * vec4(vertex,1.0); > > > >>>>> v_color = vec4(color,1.0); > > > >>>>> } > > > >>>>> ) > > > >>>>> > > > >>>>> fsrc1=: 0 : 0 > > > >>>>> varying lowp vec4 v_color; > > > >>>>> void main(void) > > > >>>>> { > > > >>>>> gl_FragColor = v_color; > > > >>>>> } > > > >>>>> ) > > > >>>>> > > > >>>>> NB. ========================================================= > > > >>>>> vsrc2=: 0 : 0 > > > >>>>> in vec3 vertex; > > > >>>>> in vec3 color; > > > >>>>> out vec4 v_color; > > > >>>>> uniform mat4 mvp; > > > >>>>> void main(void) > > > >>>>> { > > > >>>>> gl_Position = mvp * vec4(vertex,1.0); > > > >>>>> v_color = vec4(color,1.0); > > > >>>>> } > > > >>>>> ) > > > >>>>> > > > >>>>> fsrc2=: 0 : 0 > > > >>>>> in vec4 v_color; > > > >>>>> void main(void) > > > >>>>> { > > > >>>>> gl_FragColor = v_color; > > > >>>>> } > > > >>>>> ) > > > >>>>> > > > >>>>> NB. ========================================================= > > > >>>>> a_run'' > > > >>>>> > > > >>>>> On Fri, Feb 14, 2020 at 7:19 PM bill lam <bbill....@gmail.com> > > > >>>>> wrote: > > > >>>>> > > > >>>>>> If you intended to run turtle graphics only, then drawing cube is > > > >>>>>> over > > > >>>>>> skilled. Drawing triangles is much simpler. eg a triangle with > > > >>>>>> vertices > > > >>>>>> 0 1 0, 1 _1 0, _1 _1 0 > > > >>>>>> then use different scale, translate and rotate to place them into > > > >>>>>> different > > > >>>>>> positions and orientations. > > > >>>>>> > > > >>>>>> Also only a constant solid color from fragment shader is > > > >>>>>> sufficient. > > > >>>>>> > > > >>>>>> On Sat, Feb 15, 2020, 7:19 AM Brian Schott > > > >>>>>> <schott.br...@gmail.com> wrote: > > > >>>>>> > > > >>>>>> -- > > > >>>>> (B=) > > > >>>>> ---------------------------------------------------------------------- > > > >>>>> For information about J forums see > > > >>>>> http://www.jsoftware.com/forums.htm > > > >>>> ---------------------------------------------------------------------- > > > >>>> For information about J forums see > > > >>>> http://www.jsoftware.com/forums.htm > > > >>> > > > >>> -- > > > >>> regards, > > > >>> ==================================================== > > > >>> GPG key 1024D/4434BAB3 2008-08-24 > > > >>> gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3 > > > >>> ---------------------------------------------------------------------- > > > >>> For information about J forums see http://www.jsoftware.com/forums.htm > > > > ---------------------------------------------------------------------- > > > > For information about J forums see http://www.jsoftware.com/forums.htm > > > > > > ---------------------------------------------------------------------- > > > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm
-- regards, ==================================================== GPG key 1024D/4434BAB3 2008-08-24 gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm