diff --git a/README.md b/README.md index 9e3387b..4c76eab 100644 --- a/README.md +++ b/README.md @@ -26,8 +26,19 @@ pixelfloot was built during the 37c3. in its actual state, its just a mess. I ho - for drawing big areas, like 1280x720, use LARGE mode: `LARGE=true ./pixelfloot.sh floot images/xphg.jpg` - default field size are 64k lines. You can adjust it with LOLFIELDSIZE: `LOLFIELDSIZE=16000 LARGE=true ./pixelfloot.sh floot images/xphg.jpg` -- drawing an gif file with proper animation: `LARGE=true ./pixelfloot.sh floot images/dancing_banana.gif` - - Adjust the speed with FRAMETICKTIME in seconds: `FRAMETICKTIME=0.03 LARGE=true ./pixelfloot.sh floot images/shaking_cat.gif` +- drawing an gif file with proper animation: `ANIMATION=true ./pixelfloot.sh floot images/dancing_banana.gif` + - Adjust the speed with FRAMETICKTIME in seconds: `FRAMETICKTIME=0.03 ANIMATION=true ./pixelfloot.sh floot images/shaking_cat.gif` + +## tuning + +You can play around with some env vars to optimize your throughput. Most +obvious one is FLOOTFORKS whichs defines how many worker fors are +spawning / tcp sessions you use. Default is 1. + +When using more then one worker, it also worth to have a look to +SYNCFLOOTWORKER. This env var (bool) defines if all worker calculate +their own OFFSET or use all the same from `[worker 1]`. + ```shell $ ./pixelfloot.sh help diff --git a/pixelfloot.sh b/pixelfloot.sh index 474e49c..bf23914 100755 --- a/pixelfloot.sh +++ b/pixelfloot.sh @@ -24,7 +24,7 @@ SHUFMODE="$3" FLOOTSRUNNING=0 -test -z "$FLOOTFORKS" && FLOOTFORKS="2" +test -z "$FLOOTFORKS" && FLOOTFORKS="1" test -z $X_MAX && X_MAX=800 test -z $Y_MAX && Y_MAX=600 @@ -37,6 +37,8 @@ YDIR=0 test -z "$BOUNCESTEP" && BOUNCESTEP=2 ## end bounce +OFFSET_SHM="/dev/shm/pxlflt-offset" + ## ANIMATION # convert -coalesce animation.gif target.png -> produces target1.png, target2.png, .. # /dev/shm/foo to store frame counter @@ -346,18 +348,30 @@ flootworker() while true do - if [ $LARGE ] + # set offset + if [ $SYNCFLOOTWORKER ] then + if [ $iFLOOTWORKER == 1 ] + then + xymode + echo "$OFFSET" > $OFFSET_SHM + fi + echo "$(<${OFFSET_SHM})" + else xymode echo "$OFFSET" + fi + + if [ $LARGE ] + then for i in $(seq 0 $1 | shuf) do echo "${LOL[$i]}" done elif [ $ANIMATION ] then - xymode - echo "$OFFSET" + #~ xymode + #~ echo "$OFFSET" echo "${LOL[$(<${FRAMETOPICK_SHM})]}" #~ i=0 #~ while [ $i -le $1 ] @@ -366,9 +380,7 @@ flootworker() #~ i=$(($i+1)) #~ done else - xymode - echo "$OFFSET -${LOL[$1]}" + echo "${LOL[$1]}" fi done > /dev/tcp/$IPFLOOT/$FLOOTPORT || message warn "[worker ${YELLOW}$iFLOOTWORKER${ENDCOLOR}] transmission ${RED}failed${ENDCOLOR} - maybe you need to decrease ${YELLOW}FLOOTFORKS${ENDCOLOR} or expand/tune your uplink" } @@ -435,7 +447,7 @@ loadLOL() { do if [ -z "$ALPHACOLOR" ] then - message "shuffle pixels for [worker ${YELLOW}${i}${ENDCOLOR}}" + message "shuffle pixels for [worker ${YELLOW}${i}${ENDCOLOR}]" LOL[$i]="$(echo "$LOL_org" | shuf)" else message "remove aplha color ${YELLOW}${ALPHACOLOR}${ENDCOLOR} and shuffle pixels for [worker ${YELLOW}${i}${ENDCOLOR}]" @@ -541,6 +553,10 @@ floot() { message "starting ${YELLOW}${FLOOTFORKS}${ENDCOLOR} worker" + if [ -n "$SYNCFLOOTWORKER" ] && [ $FLOOTFORKS -gt 1 ] + then + message "SYNCFLOOTWORKER is enabled, all worker use OFFSET from [worker ${YELLOW}1${ENDCOLOR}]" + fi while true do @@ -659,7 +675,7 @@ case $1 in echo "SIZE(int), TEXT(string), FONTSIZE(int), BGCOLOR(hex), COLOR(hex)" echo "BORDERCOLOR(hex), X(int), Y(int), X_MAX(int), Y_MAX(int), H(int), W(int)" echo "RESIZE(int), ALPHACOLOR(hex), BOUNCESTEP(int), LARGE(bool), LOLFIELDSIZE(int)" - echo "ANIMATION(bool), FRAMETICKTIME(float)" + echo "ANIMATION(bool), FRAMETICKTIME(float), SYNCFLOOTWORKER(bool)" exit 1 ;;