Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
56
Task/Image-noise/Nim/image-noise-1.nim
Normal file
56
Task/Image-noise/Nim/image-noise-1.nim
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
import times
|
||||
|
||||
import opengl
|
||||
import opengl/glut
|
||||
|
||||
const
|
||||
W = 320
|
||||
H = 240
|
||||
SLen = W * H div sizeof(int)
|
||||
|
||||
var
|
||||
frame = 0
|
||||
bits: array[SLen, uint]
|
||||
last, start: Time
|
||||
|
||||
#---------------------------------------------------------------------------------------------------
|
||||
|
||||
proc render() {.cdecl.} =
|
||||
## Render the window.
|
||||
|
||||
var r = bits[0] + 1
|
||||
for i in countdown(bits.high, 0):
|
||||
r *= 1103515245
|
||||
bits[i] = r xor bits[i] shr 16
|
||||
|
||||
glClear(GL_COLOR_BUFFER_BIT)
|
||||
glBitmap(W, H, 0, 0, 0, 0, cast[ptr GLubyte](bits.addr))
|
||||
glFlush()
|
||||
|
||||
inc frame
|
||||
if (frame and 15) == 0:
|
||||
let t = getTime()
|
||||
if t > last:
|
||||
last = t
|
||||
echo "fps: ", frame.float / (t - start).inSeconds.float
|
||||
|
||||
#---------------------------------------------------------------------------------------------------
|
||||
|
||||
proc initGfx(argc: ptr cint; argv: pointer) =
|
||||
## Initialize OpenGL rendering.
|
||||
|
||||
glutInit(argc, argv)
|
||||
glutInitDisplayMode(GLUT_RGB)
|
||||
glutInitWindowSize(W, H)
|
||||
glutIdleFunc(render)
|
||||
discard glutCreateWindow("Noise")
|
||||
glutDisplayFunc(render)
|
||||
loadExtensions()
|
||||
|
||||
#———————————————————————————————————————————————————————————————————————————————————————————————————
|
||||
|
||||
var argc: cint = 0
|
||||
initGfx(addr(argc), nil)
|
||||
start = getTime()
|
||||
last = start
|
||||
glutMainLoop()
|
||||
23
Task/Image-noise/Nim/image-noise-2.nim
Normal file
23
Task/Image-noise/Nim/image-noise-2.nim
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
import random
|
||||
|
||||
import rapid/gfx
|
||||
|
||||
var
|
||||
window = initRWindow()
|
||||
.size(320, 240)
|
||||
.title("Rosetta Code - image noise")
|
||||
.open()
|
||||
surface = window.openGfx()
|
||||
|
||||
surface.loop:
|
||||
draw ctx, step:
|
||||
ctx.clear(gray(0))
|
||||
ctx.begin()
|
||||
for y in 0..window.height:
|
||||
for x in 0..window.width:
|
||||
if rand(0..1) == 0:
|
||||
ctx.point((x.float, y.float))
|
||||
ctx.draw(prPoints)
|
||||
echo 1 / (step / 60)
|
||||
update step:
|
||||
discard step
|
||||
35
Task/Image-noise/Nim/image-noise-3.nim
Normal file
35
Task/Image-noise/Nim/image-noise-3.nim
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
import random
|
||||
|
||||
import rapid/gfx
|
||||
|
||||
var
|
||||
window = initRWindow()
|
||||
.size(320, 240)
|
||||
.title("Rosetta Code - image noise")
|
||||
.open()
|
||||
surface = window.openGfx()
|
||||
|
||||
let
|
||||
noiseShader = surface.newRProgram(RDefaultVshSrc, """
|
||||
uniform float time;
|
||||
|
||||
float rand(vec2 pos) {
|
||||
return fract(sin(dot(pos.xy + time, vec2(12.9898,78.233))) * 43758.5453123);
|
||||
}
|
||||
|
||||
vec4 rFragment(vec4 col, sampler2D tex, vec2 pos, vec2 uv) {
|
||||
return vec4(vec3(step(0.5, rand(uv))), 1.0);
|
||||
}
|
||||
""")
|
||||
|
||||
surface.vsync = false
|
||||
surface.loop:
|
||||
draw ctx, step:
|
||||
noiseShader.uniform("time", time())
|
||||
ctx.program = noiseShader
|
||||
ctx.begin()
|
||||
ctx.rect(0, 0, surface.width, surface.height)
|
||||
ctx.draw()
|
||||
echo 1 / (step / 60)
|
||||
update step:
|
||||
discard step
|
||||
Loading…
Add table
Add a link
Reference in a new issue