mirror of
https://github.com/penpot/penpot.git
synced 2026-04-29 05:08:08 +00:00
wip
This commit is contained in:
parent
8525508c11
commit
f0d0529f58
@ -12,6 +12,11 @@
|
||||
(def default-vertex-shader (slurp "src/app/util/gl/shaders/default.v.glsl"))
|
||||
(def default-fragment-shader (slurp "src/app/util/gl/shaders/default.f.glsl"))
|
||||
|
||||
#_(def shaders (js/Map.))
|
||||
(def programs (js/Map.))
|
||||
#_(def textures (js/Map.))
|
||||
#_(def framebuffers (js/Map.))
|
||||
|
||||
(defn resize-canvas-to
|
||||
[canvas width height]
|
||||
(let [resized-width (not= (.-width canvas) width)
|
||||
@ -31,19 +36,26 @@
|
||||
|
||||
(defn prepare-gl
|
||||
[gl]
|
||||
(let [default-program (gl/create-program-from-sources gl default-vertex-shader default-fragment-shader)]))
|
||||
(let [default-program (gl/create-program-from-sources gl default-vertex-shader default-fragment-shader)]
|
||||
(.set programs "default" default-program)))
|
||||
|
||||
(defn render-gl
|
||||
[gl objects]
|
||||
(.clearColor gl 1.0 0.0 1.0 1.0)
|
||||
(.clearColor gl 0.0 0.0 0.0 0.0)
|
||||
(.clear gl (.-COLOR_BUFFER_BIT gl))
|
||||
|
||||
(.viewport gl 0 0 (.-width (.-canvas gl)) (.-height (.-canvas gl)))
|
||||
|
||||
(for [object objects]
|
||||
(.useProgram gl (.get programs "default"))
|
||||
(.uniform2f gl (.getUniformLocation gl (.get programs "default") "u_screenSize") (.-width (.-canvas gl)) (.-height (.-canvas gl)))
|
||||
|
||||
|
||||
(.drawArrays gl (.TRIANGLES gl) 0 4)))
|
||||
(println "objects vals" (vals objects))
|
||||
(doseq [[_ object] objects]
|
||||
(do
|
||||
(.uniform4f gl (.getUniformLocation gl (.get programs "default") "u_color") 1.0 0.0 0.0 1.0)
|
||||
(.uniform2f gl (.getUniformLocation gl (.get programs "default") "u_size") (:width object) (:height object))
|
||||
(.uniform2f gl (.getUniformLocation gl (.get programs "default") "u_position") (:x object) (:y object))
|
||||
(.drawArrays gl (.-TRIANGLE_STRIP gl) 0 4))))
|
||||
|
||||
(mf/defc canvas
|
||||
"A canvas element with a WebGL context."
|
||||
|
||||
@ -18,7 +18,8 @@
|
||||
(.shaderSource gl shader source)
|
||||
(.compileShader gl shader)
|
||||
(when-not (.getShaderParameter gl shader (.-COMPILE_STATUS gl))
|
||||
(throw (js/Error. (dm/str (get-shader-type gl type) " " (.getShaderInfoLog gl shader)))))))
|
||||
(throw (js/Error. (dm/str (get-shader-type gl type) " " (.getShaderInfoLog gl shader)))))
|
||||
shader))
|
||||
|
||||
(defn create-vertex-shader
|
||||
"Creates a vertex shader with the given source"
|
||||
|
||||
@ -2,9 +2,10 @@
|
||||
|
||||
precision highp float;
|
||||
|
||||
in vec2 v_texCoord;
|
||||
// in vec2 v_texCoord;
|
||||
|
||||
uniform sampler2D u_texture;
|
||||
// uniform sampler2D u_texture;
|
||||
uniform vec4 u_color;
|
||||
|
||||
out vec4 fragColor;
|
||||
|
||||
@ -12,5 +13,6 @@ void main() {
|
||||
// fragColor = texture(u_framebuffer, v_texCoord) + texture(u_texture, v_texCoord);
|
||||
// fragColor = texture(u_texture, v_texCoord);
|
||||
// Pintamos rosita
|
||||
fragColor = vec4(1.0, 0.0, 1.0, 1.0);
|
||||
fragColor = u_color;
|
||||
// fragColor = vec4(1.0, 0.0, 1.0, 1.0);
|
||||
}
|
||||
@ -6,7 +6,7 @@ uniform vec2 u_screenSize;
|
||||
uniform vec2 u_position;
|
||||
uniform vec2 u_size;
|
||||
|
||||
out vec2 v_texCoord;
|
||||
// out vec2 v_texCoord;
|
||||
|
||||
vec2 get_base_position(int id) {
|
||||
if(id == 0) {
|
||||
@ -22,6 +22,7 @@ vec2 get_base_position(int id) {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
vec2 get_tex_position(int id) {
|
||||
if(id == 0) {
|
||||
return vec2(0.0f, 1.0f);
|
||||
@ -35,8 +36,9 @@ vec2 get_tex_position(int id) {
|
||||
return vec2(0.0f, 0.0f);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
void main() {
|
||||
gl_Position = vec4((get_base_position(gl_VertexID) * u_size + u_position) / u_screenSize, 0.0f, 1.0f);
|
||||
v_texCoord = get_tex_position(gl_VertexID);
|
||||
// v_texCoord = get_tex_position(gl_VertexID);
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user