diff options
| -rw-r--r-- | shaders/test.fs | 72 | ||||
| -rw-r--r-- | src/main.zig | 15 |
2 files changed, 12 insertions, 75 deletions
diff --git a/shaders/test.fs b/shaders/test.fs index 44a912e..16cf7c3 100644 --- a/shaders/test.fs +++ b/shaders/test.fs @@ -1,65 +1,4 @@ #version 330 -/* -//if ((pix % 3) == 2) -//black pixel -//else -//get color of floor(pix / 3) -//end - -//uniform vec2 resolution; -//uniform sampler2D backbuffer; -// -//void main( void ) { -// vec2 position = ( gl_FragCoord.xy / resolution.xy ); -// vec4 color = texture2D(backbuffer, position); -// // ... do something with it ... -//} - - -// Input vertex attributes (from vertex shader) -in vec2 fragTexCoord; -in vec4 fragColor; - -// Input uniform values -uniform sampler2D texture0; -uniform vec4 colDiffuse; - -// Output fragment color -out vec4 finalColor; - -// NOTE: Add here your custom variables - -// NOTE: Render size values should be passed from code -uniform float renderWidth = 800; -uniform float renderHeight = 450; - -float radius = 250.0; -float angle = 0.8; - -uniform vec2 center = vec2(200.0, 200.0); - -void main() -{ - //vec2 newcoord = vec2(fragTexCoord.x + 10, fragTexCoord.y + 10); - //vec2 position = ( mod(gl_FragCoord.x,3), mod(gl_FragCoord.y, 3) ); - //if ( position.x == 2 ) || ( position.y == 2 ) - //{ - // gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); - //} - //else - //{ - // vec2 position_new = (floor(gl_FragCoord.xy)); - // gl_FragColor = texture2D(texture0, position_new); - //} - //gl_FragColor = vec4(0.5, 0.5, 0.5, 1.0); - - vec2 p = fragTexCoord; - p.x = fragTexCoord.x + 100000; - - - gl_FragColor = texture(texture0, p); -} -*/ // Input vertex attributes (from vertex shader) @@ -74,21 +13,24 @@ uniform vec4 colDiffuse; out vec4 finalColor; // NOTE: Add here your custom variables -vec2 textureResolution = vec2(64.0*3.0, 32.0*3.0); -vec2 onePixel = vec2(1.0, 1.0) / textureResolution; +uniform float renderWidth; +uniform float renderHeight; +vec2 textureResolution = vec2(renderWidth, renderHeight); +uniform float grid_size; +//vec2 onePixel = vec2(1.0, 1.0) / textureResolution; vec2 pixelCoor = fragTexCoord * textureResolution; void main() { vec4 texelColor = vec4(0.0, 0.0, 0.0, 0.0); // Texel color fetching from texture sampler - if ((mod(floor(pixelCoor.x), 3) == 2.0) || (mod(floor(pixelCoor.y), 3) == 2.0)) + if ((mod(floor(pixelCoor.x), grid_size + 1.0) == grid_size) || (mod(floor(pixelCoor.y), grid_size + 1.0) == grid_size)) { texelColor = vec4(0.0, 0.0, 0.0, 1.0); } else { pixelCoor.y = -pixelCoor.y; - pixelCoor = pixelCoor / 3.0; + pixelCoor = pixelCoor / (grid_size + 1.0); texelColor = texture(texture0, (pixelCoor /textureResolution)); } //if ((pix % 3) == 2) diff --git a/src/main.zig b/src/main.zig index 608b67f..63e98d6 100644 --- a/src/main.zig +++ b/src/main.zig @@ -16,6 +16,7 @@ var shader: ray.Shader = undefined; var swirl_center_loc: c_int = undefined; var renderPoint_renderWidth: c_int = undefined; var renderPoint_renderHeight: c_int = undefined; +var shader_gridsize: f32 = 2.0; var swirl_center = [_]u32{ screenWidth / 2, screenHeight / 2 }; @@ -178,27 +179,20 @@ pub fn main() !void { } } -fn pow(base: u32, power: u32) u32 { - var iter: u32 = 0; - var result: u32 = base; - while (iter < power) : (iter += 1) { - result = result * base; - } - return result; -} - fn get_coords(x: u32, y: u32) u32 { return y * 64 + x; } fn setup_graphics() void { ray.InitWindow(screenWidth, screenHeight, "raylib [core] example - basic window"); - chip8_screen = ray.LoadRenderTexture(64 * 3, 32 * 3); + chip8_screen = ray.LoadRenderTexture(64 * @floatToInt(c_int, shader_gridsize + 1), 32 * @floatToInt(c_int, shader_gridsize + 1)); //shader = ray.LoadShader(0, "shaders/glsl330/swirl.fs"); shader = ray.LoadShader(0, "shaders/test.fs"); //swirl_center_loc = ray.GetShaderLocation(shader, "center"); renderPoint_renderHeight = ray.GetShaderLocation(shader, "renderHeight"); renderPoint_renderWidth = ray.GetShaderLocation(shader, "renderWidth"); + var shader_gridsizeLocation = ray.GetShaderLocation(shader, "grid_size"); + var renderVar_renderWidth: f32 = @intToFloat(f32, chip8_screen.texture.width); var renderVar_renderHeight: f32 = @intToFloat(f32, chip8_screen.texture.height); //ray.SetShaderValue(shader, swirl_center_loc, swirlCenter, ray.SHADER_UNIFORM_VEC2); @@ -206,6 +200,7 @@ fn setup_graphics() void { //ray.SetShaderValue(shader, renderPoint_renderWidth, &chip8_screen.texture.width, ray.SHADER_UNIFORM_FLOAT); ray.SetShaderValue(shader, renderPoint_renderWidth, &renderVar_renderWidth, ray.SHADER_UNIFORM_FLOAT); ray.SetShaderValue(shader, renderPoint_renderHeight, &renderVar_renderHeight, ray.SHADER_UNIFORM_FLOAT); + ray.SetShaderValue(shader, shader_gridsizeLocation, &shader_gridsize, ray.SHADER_UNIFORM_FLOAT); //ray.SetShaderValue(shader, renderPoint_renderHeight, chip8_screen.texture.height, ray.SHADER_UNIFORM_FLOAT); ray.SetTargetFPS(60); } |
