From 53effc35a68bf304f71f05706bb6484c3c65ced4 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Sun, 13 Jan 2008 19:06:16 -0800 Subject: [PATCH] Get multiline working again and use it in cel-shading --- extra/cel-shading/cel-shading.factor | 82 +++++++++++++-------------- extra/multiline/multiline-docs.factor | 3 +- extra/multiline/multiline.factor | 2 +- 3 files changed, 44 insertions(+), 43 deletions(-) diff --git a/extra/cel-shading/cel-shading.factor b/extra/cel-shading/cel-shading.factor index e21638b75b..20b392195a 100644 --- a/extra/cel-shading/cel-shading.factor +++ b/extra/cel-shading/cel-shading.factor @@ -1,5 +1,5 @@ USING: arrays bunny io io.files kernel - math math.functions math.vectors + math math.functions math.vectors multiline namespaces opengl opengl.gl prettyprint @@ -47,47 +47,47 @@ M: cel-shading-gadget pref-dim* ( gadget -- dim ) FOV-RATIO NEAR-PLANE FOV / v*n first2 [ -+ ] 2apply NEAR-PLANE FAR-PLANE ; -: cel-shading-vertex-shader-source - { - "varying vec3 position, normal;" - "" - "void" - "main()" - "{" - "gl_Position = ftransform();" - "" - "position = gl_Vertex.xyz;" - "normal = gl_Normal;" - "}" - } "\n" join ; +STRING: cel-shading-vertex-shader-source +varying vec3 position, normal; -: cel-shading-fragment-shader-source - { - "varying vec3 position, normal;" - "uniform vec3 light_direction;" - "uniform vec4 color;" - "uniform vec4 ambient, diffuse;" - "" - "float" - "smooth_modulate(vec3 direction, vec3 normal)" - "{" - "return clamp(dot(direction, normal), 0.0, 1.0);" - "}" - "" - "float" - "modulate(vec3 direction, vec3 normal)" - "{" - "float m = smooth_modulate(direction, normal);" - "return smoothstep(0.0, 0.01, m) * 0.4 + smoothstep(0.49, 0.5, m) * 0.5;" - "}" - "" - "void" - "main()" - "{" - "vec3 direction = normalize(light_direction - position);" - "gl_FragColor = ambient + diffuse * color * vec4(vec3(modulate(direction, normal)), 1); " - "}" - } "\n" join ; +void +main() +{ + gl_Position = ftransform(); + + position = gl_Vertex.xyz; + normal = gl_Normal; +} + +; + +STRING: cel-shading-fragment-shader-source +varying vec3 position, normal; +uniform vec3 light_direction; +uniform vec4 color; +uniform vec4 ambient, diffuse; + +float +smooth_modulate(vec3 direction, vec3 normal) +{ + return clamp(dot(direction, normal), 0.0, 1.0); +} + +float +modulate(vec3 direction, vec3 normal) +{ + float m = smooth_modulate(direction, normal); + return smoothstep(0.0, 0.01, m) * 0.4 + smoothstep(0.49, 0.5, m) * 0.5; +} + +void +main() +{ + vec3 direction = normalize(light_direction - position); + gl_FragColor = ambient + diffuse * color * vec4(vec3(modulate(direction, normal)), 1); +} + +; : cel-shading-program ( -- program ) cel-shading-vertex-shader-source check-gl-shader diff --git a/extra/multiline/multiline-docs.factor b/extra/multiline/multiline-docs.factor index 7e7375cfad..0c0eb5e9dd 100644 --- a/extra/multiline/multiline-docs.factor +++ b/extra/multiline/multiline-docs.factor @@ -1,4 +1,5 @@ -USING: help.markup help.syntax multiline ; +USING: help.markup help.syntax ; +IN: multiline HELP: STRING: { $syntax "STRING: name\nfoo\n;" } diff --git a/extra/multiline/multiline.factor b/extra/multiline/multiline.factor index 89a6e06053..e8063fc759 100644 --- a/extra/multiline/multiline.factor +++ b/extra/multiline/multiline.factor @@ -16,7 +16,7 @@ IN: multiline : STRING: CREATE dup reset-generic - parse-here 1quotation define-compound ; parsing + [ parse-here 1quotation define ] keep make-inline ; parsing : (parse-multiline-string) ( start-index end-text -- end-index ) lexer get line-text 2dup start