World: r3wp
[View] discuss view related issues
older newer | first last |
Maxim 23-Aug-2010 [10134x3] | yeah... was late (early) for me |
I think I just found an interesting way to optimise AGG on R2 :-D I'm doing Animation tests with some complex vector & projection math (rotating/translating/projecting shapes using floating point math exclusively). using AGG and a non-standard manual management of the window, I'm acheiving 0% CPU at 30fps FULL SCREEN (1440x900) | |
on a crappy 1.5GHz core2 duo. | |
Brock 23-Aug-2010 [10137] | Sounds like a great achievement Max, keep up the great work and post some samples or animations or something so we can see your work. |
Maxim 23-Aug-2010 [10138x4] | when the collision stuff is finished, later this evening, I'll prebol a little script for you guys to test and have fun with. :-D |
animated vector projection tests : http://www.pointillistic.com/open-REBOL/moa/files/ptest-preboled.r | |
notice that it follows the mouse even when the window isn't even activated :-) | |
updated it (much more mesmerizing now ;-) -now supports shape dragging (while everything still animates). -shape also rotates more quickly -animation is capped to 50 fps, but may go as high as 200 fps on your system while dragging, if you change the refresh-rate in the script begining. | |
AdrianS 23-Aug-2010 [10142] | how fast does it go if you don't output the progress dots? |
Maxim 23-Aug-2010 [10143] | it doesn't change the speed, since there are no newlines. |
AdrianS 23-Aug-2010 [10144x2] | this looks double buffered - does REBOL use this by default? |
I would think that any console text output would significantly slow down animated graphics | |
Maxim 23-Aug-2010 [10146x2] | the refresh is manually limited to 50 fps, which occurs when dragging, and uses less than 1% cpu on my 5 year old machine. |
no, what kills the speed is when you do newlines, especially if the lines are long. | |
AdrianS 23-Aug-2010 [10148x2] | what about the dubble buffering? |
double | |
Maxim 23-Aug-2010 [10150x2] | the system I am using now, is doing double buffering. the AGG is rendered on the raster, and the call to show, tells view to update the window's bitmap so it reflects the changes to the raster. |
the raster being a pre-allocated image! which I use with the 'draw function. | |
AdrianS 23-Aug-2010 [10152] | looked flicker-free, so I assumed it was |
Maxim 23-Aug-2010 [10153x2] | cool thing is that if we don't blank the bg manually, we actually get a persistent buffer, and can do things like winamp visualizers easily. |
but that means using face effects (and hence going thru view and back) which will kill the speed pretty quickly :-( | |
AdrianS 23-Aug-2010 [10155x3] | why would this kill speed? |
is it view being slow or just doing these kinds of effects in REBOL that is not so fast? | |
I thought I remembered some pretty fast animations (with effects) done by cyphre some years ago - he bypassed view effects for those? | |
Maxim 23-Aug-2010 [10158] | image processing requires a lot of CPU juice. we have to render the AGG, use the bitmap in a face, apply an effect on it, and then re-create a new bitmap out of it. we aren't just drawing/effecting over and over the same image memory area but creating a new image at every refresh. it would be nice if there was a complement to the 'draw function called 'effect. maybe its in R3, or maybe it should be. |
AdrianS 23-Aug-2010 [10159] | sure it's slow - especially at today's fullscreen resolutions - that's a lot of pixels to process per second - maybe a view extension for offloading some of that on the GPU is in the works |
Maxim 24-Aug-2010 [10160x2] | wrt console I/O killing gfx speed.... with my new high-performance chrono lib, here are the results for printing... compared to a single (average) call to sine. [print ""] 0:00:00.000792139 [prin "."] 0:00:00.000168666 [sine 45] 0:00:00.000001014 |
updated the animated vector projection tests script: -uses the chrono library for more precise time management. -now has option to prevent clearing the image at each refresh (feedback), press enter -you can also manually increase and decrease max frame-rate on mouse drag using arrows. http://www.pointillistic.com/open-REBOL/moa/files/ptest-preboled.r on my system, I can easily go up to a 100fps before feeling lag. | |
AdrianS 24-Aug-2010 [10162] | I get 32 fps - surprised it's not higher |
Sunanda 24-Aug-2010 [10163] | I also see current rate typically of 32fps/ current (max) rate shows as 40.00000000001 (plus or minus a zero) |
AdrianS 24-Aug-2010 [10164] | hmm, I'm guessing it's not a system dependent limit - hard to believe that we have exactly the same specs |
Brock 24-Aug-2010 [10165] | Not sure if I am doing something wrong, but I simply get a black screen when trying the latest update. I was able to view the initial demo. Tried view 2.7.6.3.1 and 2.7.7.3.1. |
AdrianS 24-Aug-2010 [10166x2] | still works here |
with 2.7.7.3.1 | |
Brock 24-Aug-2010 [10168] | worked fine on my work laptop, but not my older desktop PC. |
DideC 25-Aug-2010 [10169] | Same as brock : just a black screen. WinXP 32 SP2 / Rebol 2.7.7.3.1 |
AdrianS 25-Aug-2010 [10170] | interesting - I'm guessing it's the offscreen buffer - maybe can't be alocated or flipped to properly - maybe a video card/video driver issue. Brock/Didec, are the video cards you're using of the onboard type with shared memory? |
Brock 25-Aug-2010 [10171] | The desktop is not an on-board graphics card, the laptop would be. In both cases I'm not certain about the memory. |
JoshF 28-Aug-2010 [10172x4] | Hi! Hope this is the right place to ask... I'm using 2.7.7.3.1 (not that it should matter for this question)... |
I would like to use and re-use vid "panel" gui elements. Something like: view layout [style gint panel [text "label:" field 100 "0"] x: gint (x) y: gint (y)] | |
The idea is that somehow (magically?) the panel could specify an aggregate UI element so I could reuse just a few styles that have their formats baked in. Any ideas? Or should I come up with a better example? | |
Preferably, this would be done at view definition time as shown above. set-face seems to show a way to handle it, but it's clumsier than I would like and doesn't handle the text labels. | |
Sunanda 29-Aug-2010 [10176] | Does stylize provide what you need? http://www.rebol.com/docs/words/wstylize.html |
Anton 29-Aug-2010 [10177x4] | Hi JoshF, do you want a style (eg. your 'gint') that is simply replaced by two other styles (eg. a TEXT and a FIELD) as if you had simply specified them individually yourself, or do you want a panel each time (which contains the other faces) ? |
A simple approach that might work for you is to build your layout spec block before passing to LAYOUT. | |
make-gint: func [label int][compose [label (label) field 100 (mold int)]] window-spec: compose [title "Food calculator" (make-gint "Elephants to invite" 65536)] append window-spec make-gint "Peanuts/elephant" 5000 view layout window-spec | |
Check out this doc from 2007 as well. http://anton.wildit.net.au/rebol/doc/flatten-panel.txt | |
JoshF 29-Aug-2010 [10181] | Hi! Thanks for the replies! Sunanda, I am using stylize (as shown in the example below). Anton, I don't mind having a panel because I need to keep the data grouped to access it generically after the user has set values. Here is a better example showing what I'm trying to do. Essentially, I want to create an "aggregate" widget using a styled panel, then initialize its elements the same way as is done for the built-in VID styles: REBOL [Title: "Node Property Sheet" Author: oofoe] ; This example will not actually work as intended. s: stylize [ title: vtext red 256 label: text 64 gpath: panel [ across label "Path:" field 150 "Unspecified" button "..." 30] gint: panel [across label "Integer:" field 50 "0"] gnumber: panel [across label "Number:" field 75 "0.0"] ] view layout/size [ styles s title "Project Settings" gpath "main" %. ; <-- I want to just specify the label text and value. gint "width" 1024 gint "height" 768 gnumber "fps" 23.97 ] 384x256 The nice thing about this (from my perspective) is that I can iterate through the property panel fields, find any recongized styles and pickup their values (that have been set by the user) using a hacked version of get-face. Am I making sense? I just feel that there should be a way to set relevant panel values when you're using the style. Thanks! |
Anton 29-Aug-2010 [10182] | It definitely makes sense, and I wanted to do this many times myself, but I just never got around to doing it. |
JoshF 29-Aug-2010 [10183] | It seems like the "do-facets" section in the "layout" source is the key (or close to the key) for doing this. There *is* a generic system for handling this, but it's not documented (!) and the layout source is far too clever for me to easily figure it out... ; - ) |
older newer | first last |