beflix

35
BEFLIX Richard Thomson Director, Computer Graphics Museum @CGMuseum http://ComputerGraphicsMuseum.org [email protected]

Upload: richard-thomson

Post on 13-Apr-2017

170 views

Category:

Software


0 download

TRANSCRIPT

Page 1: BEFLIX

BEFLIX

Richard ThomsonDirector, Computer Graphics Museum

@CGMuseumhttp://[email protected]

Page 2: BEFLIX

BEFLIX First Publication

"A Computer Technique forProducing Animated Movies",Kenneth C. KnowltonAFIPS Conference Proceedings 25(Spring Joint Computer Conference 1964)

Page 3: BEFLIX

Hardware Environment

IBM 7090 computer Card keypunch Card reader Line printer Magnetic tape drive Disc drive Stromberg-Carlson 4020 microfilm recorder

Page 4: BEFLIX

IBM 7090 Computer

IBM's first transistor based mainframe First install November, 1959 Typical cost $2.9 million in 1960 Evolution of IBM 709 vacuum tube

mainframe Created for scientific/engineering markets NASA: Mercury, Gemini and Apollo JPL: Space Flight Operations Facility American Airlines: SABRE

Page 5: BEFLIX

IBM 7090 Computer

3 index registers 227 instructions single-precision floating-point (36-bits) 36-bit words 32,768 words of core memory 2.18 µs memory cycle time 4.36 µs floating-point add time 4.36-30.53 µs floating-point multiply time

Page 6: BEFLIX

IBM 7090 CPU and Memory

Page 7: BEFLIX

IBM 7090

Page 8: BEFLIX

IBM 7090

Page 9: BEFLIX

IBM 7090

Page 10: BEFLIX

Stromberg-Carlson 4020Microfilm Recorder

Magtape drive for input Charactron tube for creating image 16mm or 35mm film camera Character beam can be defocused Draw grayscale pixels as character blobs

Page 11: BEFLIX

Stromberg-Carlson SC4020

Page 12: BEFLIX

Language

BEFLIX is an Embedded DSLEmbedded

○ Embedded in another language○ Hosted in FORTRAN II environment○ Uses FAP (FORTRAN II Assembly Program) macro

language constructsDomain-Specific Language

○ Represent concepts from the problem domain directly

Page 13: BEFLIX

Programming Model

Memory organized into surfacesCoarse resolution: 126x92Fine resolution: 252x1843 bits/pixel12 pixels/wordEnough memory to hold 2 fine resolution frames

Page 14: BEFLIX

Fine Surface Designators

Fine resolution alternatives:

AA252x184

BB252x184

CC252x368

VV252x368

Page 15: BEFLIX

Coarse Surface Designators

Coarse resolution alternatives:

WW126x92

XX126x92

YY126x92

ZZ126x92

PP252x92

OO378x92

FF504x92

PP or WW, XXOO or WW, XX, YYFF or WW, XX, YY, ZZ

Page 16: BEFLIX

Coarse Surface Designators

Coarse resolution alternatives:

WW126x92

XX126x92

YY126x92

ZZ126x92

TT or YY, ZZSS or XX, YY, ZZEE or WW, XX, YY, ZZEE or AA

TT126x184

SS126x276

EE126x368

Page 17: BEFLIX

Scanners

Scanners are named A...Z Scanners live on a surface Scanners have:

A coordinate within the surfaceA value read from the surface

Manipulate a surface by conditionally performing operations on a scanner or between two scanners

Page 18: BEFLIX

Low Level Operations

Place a scanner at a location on a surfacePLACE sc, surf, x, y

Conditionally perform some operations and jumpIFxxx (c1)...(cN)T(o1)...(oM)labelEvaluate each condition c1...cNCombine them according to logical predicate xxxIf true, perform operations o1...oMOptionally jump to label

Page 19: BEFLIX

Low Level Operation Example

IFANY (B,R,10)(B,A,C)(A,E,7)T(A,T,B)(A,U,2)(A,W,3)LOC5

If any of the following are true: scanner B is Right of x=10 scanner B is Above scanner C scanner A is sitting on a number Equal to 7

Then the following operations are performed: scanner A moves To the same surface and pixel as scanner B scanner A moves Up 2 pixels scanner A Writes the number 3 to its pixel

Then control jumps to the label LOC5 in the program.

Page 20: BEFLIX

Scanner Conditions

Conditions are of the form (scnr,rel,quant)

scnr name of the scanner to be tested

rel relation between scanner and quant

quant can be a number or another scanner

Page 21: BEFLIX

Scanner Comparison Relations

Compare scanner position to a value

Compare positions of two scanners

Compare scanner pixel to a value

Compare pixel between scanners

Page 22: BEFLIX

Scanner Move Operations

Move to absolute X or Y coordinate Move relative along X or Y axis Move to surface and position of other scanner Move to X or Y coordinate of another scanner

without changing surfaces Move one square based other scanner's pixel Scanners wrap around surface boundaries in

a helix

Page 23: BEFLIX

Scanner Pixel Operations

Write pixel from value or other scanner's pixel

Write complement of other scanner's pixel Exchange pixels between two scanners +, -, *, / between two scanners (modulo 8) bitwise OR and AND between two scanners

Page 24: BEFLIX

Static and Dynamic Operations

Static operations happen immediately

Dynamic operations occur over multiple frames

Page 25: BEFLIX

High Level Operations

Output control and temporary storage of pictures

Drawing primitives (line, arc, polyline, text)

BitBlt like operations on rectangular areas

Dynamic operations on rectangular areas

Macros using low-level operations

Page 26: BEFLIX

Output Operations

CAMERA nFRAMES nFILTER nTABLE n,c0,...,c7AIM scSAMPLE nLINES nFILM

NOFILMUNTIL n,labelRESET nCOARSEFINESTORE surf,whereRETREV surf,where

Page 27: BEFLIX

Drawing Primitives

LINE sc1,sc2,mode,ns,width,speedARC sc1,ctr,d,mode,ns,w,speed,t1,w1,t2,q2TRACE lb1,len,sc,orient,mode,ns,width,speedTYPE lb2,sc,size,hspace,vspace,mode,nslb1 OCT n,(curve to be drawn by TRACE)lb2 BCI n,(text to be drawn by TYPE)

Page 28: BEFLIX

Instant Rectangle Operations

PAINT scTR,scBL,mode,nsBORDER scTR,scBL,width,mode,nsSHIFT scTR,scBL,dir,amountROTATE scTR,scBL,dir,amount[,n]EXPAND scTR,scBL,dir,rep1,rep2SQUASH scTR,scBL,dir,del,kpCOPY scTR,scBL,mode,orient,sc3,sc4[,n]CENTER scTR,scBLGROW scTR,scBL,ns1,ns2,ns3,labelSMOOTH scTR,scBL

Page 29: BEFLIX

Dynamic Rectangle Operations

DISOLV scTR,scBL,sc3,patZOOMIN scTR,scBL,fctrREDUCE scTR,scBL,fctrSTRECH scTR,scBL,dir,fctrPRESS scTR,scBL,dir,fctr

Page 30: BEFLIX

The Master Film

The SC2040 produces a master film

Duplicate frames are output only once

A repeat count is written above the frame

Repeated frames are duplicated by optical printing when the film is developed

Page 31: BEFLIX

Workflow

1. Develop program in BEFLIX2. Preview output samples on printout3. Run program to create magtape4. Load magtape into microfilm recorder5. Produce master film6. Optical print/expand to create work print

Page 32: BEFLIX

Stan VanDerBeek

Artist Stan VanDerBeek collaborated with Ken Knowlton on a series of films: Poem Field No. 1 (1965) Poem Field No. 2 (1966) Poem Field No. 3 (1967) Poem Field No. 4 (no date) Poem Field No. 5 (1967) Poem Field No. 6 (no date) Poem Field No. 7 (1971) Poem Field No. 8 (no date) Collido-Oscope (1966) (VanDerBeek, Knowlton and Bosche) Man and His World, 1967 (Shown at Expo '67)

Page 33: BEFLIX

Poem Field No. 2

View the Video

Page 34: BEFLIX

Looking Back at BEFLIX

BEFLIX is considered an "esoteric" programming language

Its unique syntax depends on the macro facilities of FAP

Later FORTRAN IV version resembled more traditional subroutine library

First(?) language for procedural animation

Page 35: BEFLIX

Museum Exhibit Futures?

7090 simulation with BEFLIX implementationNo known source to BEFLIX exists?7090 simulation is boring7090 real experience was physicalVR exhibit?

BEFLIX IDEOpen source IDE to explore BEFLIX programsEvolve BEFLIX to a GPU oriented languageProduce procedural moves in real-time