{"id":3400,"date":"2023-03-15T04:15:51","date_gmt":"2023-03-15T04:15:51","guid":{"rendered":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/?page_id=3400"},"modified":"2023-04-26T13:03:29","modified_gmt":"2023-04-26T13:03:29","slug":"full-slider-image-falling-leaves","status":"publish","type":"page","link":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/full-slider-image-falling-leaves\/","title":{"rendered":"full slider image Falling Leaves"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3400\" class=\"elementor elementor-3400\">\n\t\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-99520c5 elementor-section-full_width elementor-section-content-middle bramha_header mobile_header elementor-section-height-default elementor-section-height-default\" data-id=\"99520c5\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-9791b6c\" data-id=\"9791b6c\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d6dafde elementor-widget elementor-widget-image\" data-id=\"d6dafde\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.9.2 - 21-12-2022 *\/\n.elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=\".svg\"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block}<\/style>\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"\/envato\/bramha\/preview\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"160\" height=\"40\" src=\"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-content\/uploads\/2023\/01\/Logo.png\" class=\"attachment-full size-full wp-image-36\" alt=\"\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-f8f905b\" data-id=\"f8f905b\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-519e823 menu-icon elementor-align-right elementor-widget__width-auto elementor-widget elementor-widget-button\" data-id=\"519e823\" data-element_type=\"widget\" id=\"open_offcanvas_mobile\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t<a class=\"elementor-button elementor-size-sm\" role=\"button\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-text\"><\/span>\n\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-d193033 elementor-section-full_width elementor-section-height-full elementor-section-items-stretch full-bg elementor-section-height-default\" data-id=\"d193033\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-007391b page-left content_main_left elementor-hidden-mobile\" data-id=\"007391b\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b35cf3e elementor-widget elementor-widget-image\" data-id=\"b35cf3e\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"\/envato\/bramha\/preview\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"40\" height=\"160\" src=\"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-content\/uploads\/2023\/01\/desktop-logo.png\" class=\"attachment-full size-full wp-image-508\" alt=\"\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-352e755 menu-icon elementor-widget elementor-widget-button\" data-id=\"352e755\" data-element_type=\"widget\" id=\"open_offcanvas\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t<a class=\"elementor-button elementor-size-sm\" role=\"button\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-text\"><\/span>\n\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2c57c3f social_icons elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"2c57c3f\" data-element_type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<link rel=\"stylesheet\" href=\"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-content\/uploads\/elementor\/css\/custom-widget-icon-list.min.css?ver=1676633232\">\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"#\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">FB<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"#\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">TW<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"#\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">IN<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-55e9b5a content_main_middle slider-content main-image-slider\" data-id=\"55e9b5a\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f39691b h-100 slider-custom elementor-absolute elementor-widget elementor-widget-html\" data-id=\"f39691b\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\r\n<div class=\"h_sidebar_slider h-100\">\r\n<div class=\"bg-image\" style=\"background-image: url('https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-content\/uploads\/2023\/03\/back_slider_1.png')\">\r\n    \r\n<\/div>\r\n<div class=\"bg-image\" style=\"background-image: url('https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-content\/uploads\/2023\/03\/back_slider_2.png')\">\r\n    \r\n<\/div>\r\n<div class=\"bg-image\" style=\"background-image: url('https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-content\/uploads\/2023\/03\/back_slider_3.png')\">\r\n     \r\n<\/div>\r\n<\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b1fbbe3 h-100 slider-custom elementor-absolute elementor-widget elementor-widget-html\" data-id=\"b1fbbe3\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"custom-overlay-class\">\n    \n<\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9c02c67 elementor-absolute elementor-widget elementor-widget-html\" data-id=\"9c02c67\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<script id=\"sakura_point_vsh\" type=\"x-shader\/x_vertex\">\nuniform mat4 uProjection;\nuniform mat4 uModelview;\nuniform vec3 uResolution;\nuniform vec3 uOffset;\nuniform vec3 uDOF;  \/\/x:focus distance, y:focus radius, z:max radius\nuniform vec3 uFade; \/\/x:start distance, y:half distance, z:near fade start\n\nattribute vec3 aPosition;\nattribute vec3 aEuler;\nattribute vec2 aMisc; \/\/x:size, y:fade\n\nvarying vec3 pposition;\nvarying float psize;\nvarying float palpha;\nvarying float pdist;\n\n\/\/varying mat3 rotMat;\nvarying vec3 normX;\nvarying vec3 normY;\nvarying vec3 normZ;\nvarying vec3 normal;\n\nvarying float diffuse;\nvarying float specular;\nvarying float rstop;\nvarying float distancefade;\n\nvoid main(void) {\n\/\/ Projection is based on vertical angle\nvec4 pos = uModelview * vec4(aPosition + uOffset, 1.0);\ngl_Position = uProjection * pos;\ngl_PointSize = aMisc.x * uProjection[1][1] \/ -pos.z * uResolution.y * 0.5;\n\npposition = pos.xyz;\npsize = aMisc.x;\npdist = length(pos.xyz);\npalpha = smoothstep(0.0, 1.0, (pdist - 0.1) \/ uFade.z);\n\nvec3 elrsn = sin(aEuler);\nvec3 elrcs = cos(aEuler);\nmat3 rotx = mat3(\n1.0, 0.0, 0.0,\n0.0, elrcs.x, elrsn.x,\n0.0, -elrsn.x, elrcs.x\n);\nmat3 roty = mat3(\nelrcs.y, 0.0, -elrsn.y,\n0.0, 1.0, 0.0,\nelrsn.y, 0.0, elrcs.y\n);\nmat3 rotz = mat3(\nelrcs.z, elrsn.z, 0.0, \n-elrsn.z, elrcs.z, 0.0,\n0.0, 0.0, 1.0\n);\nmat3 rotmat = rotx * roty * rotz;\nnormal = rotmat[2];\n\nmat3 trrotm = mat3(\nrotmat[0][0], rotmat[1][0], rotmat[2][0],\nrotmat[0][1], rotmat[1][1], rotmat[2][1],\nrotmat[0][2], rotmat[1][2], rotmat[2][2]\n);\nnormX = trrotm[0];\nnormY = trrotm[1];\nnormZ = trrotm[2];\n\nconst vec3 lit = vec3(0.6917144638660746, 0.6917144638660746, -0.20751433915982237);\n\nfloat tmpdfs = dot(lit, normal);\nif(tmpdfs < 0.0) {\nnormal = -normal;\ntmpdfs = dot(lit, normal);\n}\ndiffuse = 0.4 + tmpdfs;\n\nvec3 eyev = normalize(-pos.xyz);\nif(dot(eyev, normal) > 0.0) {\nvec3 hv = normalize(eyev + lit);\nspecular = pow(max(dot(hv, normal), 0.0), 20.0);\n}\nelse {\nspecular = 0.0;\n}\n\nrstop = clamp((abs(pdist - uDOF.x) - uDOF.y) \/ uDOF.z, 0.0, 1.0);\nrstop = pow(rstop, 0.5);\n\/\/-0.69315 = ln(0.5)\ndistancefade = min(1.0, exp((uFade.x - pdist) * 0.69315 \/ uFade.y));\n}\n<\/script>\n<script id=\"sakura_point_fsh\" type=\"x-shader\/x_fragment\">\n#ifdef GL_ES\n\/\/precision mediump float;\nprecision highp float;\n#endif\n\nuniform vec3 uDOF;  \/\/x:focus distance, y:focus radius, z:max radius\nuniform vec3 uFade; \/\/x:start distance, y:half distance, z:near fade start\n\nconst vec3 fadeCol = vec3(0.08, 0.03, 0.06);\n\nvarying vec3 pposition;\nvarying float psize;\nvarying float palpha;\nvarying float pdist;\n\n\/\/varying mat3 rotMat;\nvarying vec3 normX;\nvarying vec3 normY;\nvarying vec3 normZ;\nvarying vec3 normal;\n\nvarying float diffuse;\nvarying float specular;\nvarying float rstop;\nvarying float distancefade;\n\nfloat ellipse(vec2 p, vec2 o, vec2 r) {\nvec2 lp = (p - o) \/ r;\nreturn length(lp) - 1.0;\n}\n\nvoid main(void) {\nvec3 p = vec3(gl_PointCoord - vec2(0.5, 0.5), 0.0) * 2.0;\nvec3 d = vec3(0.0, 0.0, -1.0);\nfloat nd = normZ.z; \/\/dot(-normZ, d);\nif(abs(nd) < 0.0001) discard;\n\nfloat np = dot(normZ, p);\nvec3 tp = p + d * np \/ nd;\nvec2 coord = vec2(dot(normX, tp), dot(normY, tp));\n\n\/\/angle = 15 degree\nconst float flwrsn = 0.258819045102521;\nconst float flwrcs = 0.965925826289068;\nmat2 flwrm = mat2(flwrcs, -flwrsn, flwrsn, flwrcs);\nvec2 flwrp = vec2(abs(coord.x), coord.y) * flwrm;\n\nfloat r;\nif(flwrp.x < 0.0) {\nr = ellipse(flwrp, vec2(0.065, 0.024) * 0.5, vec2(0.36, 0.96) * 0.5);\n}\nelse {\nr = ellipse(flwrp, vec2(0.065, 0.024) * 0.5, vec2(0.58, 0.96) * 0.5);\n}\n\nif(r > rstop) discard;\n\nvec3 col = mix(vec3(1.0, 0.8, 0.75), vec3(1.0, 0.9, 0.87), r);\nfloat grady = mix(0.0, 1.0, pow(coord.y * 0.5 + 0.5, 0.35));\ncol *= vec3(1.0, grady, grady);\ncol *= mix(0.8, 1.0, pow(abs(coord.x), 0.3));\ncol = col * diffuse + specular;\n\ncol = mix(fadeCol, col, distancefade);\n\nfloat alpha = (rstop > 0.001)? (0.5 - r \/ (rstop * 2.0)) : 1.0;\nalpha = smoothstep(0.0, 1.0, alpha) * palpha;\n\ngl_FragColor = vec4(col * 0.5, alpha);\n}\n<\/script>\n<!-- effects -->\n<script id=\"fx_common_vsh\" type=\"x-shader\/x_vertex\">\nuniform vec3 uResolution;\nattribute vec2 aPosition;\n\nvarying vec2 texCoord;\nvarying vec2 screenCoord;\n\nvoid main(void) {\ngl_Position = vec4(aPosition, 0.0, 1.0);\ntexCoord = aPosition.xy * 0.5 + vec2(0.5, 0.5);\nscreenCoord = aPosition.xy * vec2(uResolution.z, 1.0);\n}\n<\/script>\n<script id=\"bg_fsh\" type=\"x-shader\/x_fragment\">\n#ifdef GL_ES\n\/\/precision mediump float;\nprecision highp float;\n#endif\n\nuniform vec2 uTimes;\n\nvarying vec2 texCoord;\nvarying vec2 screenCoord;\n\nvoid main(void) {\nvec3 col;\nfloat c;\nvec2 tmpv = texCoord * vec2(0.8, 1.0) - vec2(0.95, 1.0);\nc = exp(-pow(length(tmpv) * 1.8, 2.0));\ncol = mix(vec3(0.02, 0.0, 0.03), vec3(0.96, 0.98, 1.0) * 1.5, c);\ngl_FragColor = vec4(col * 0.5, 1.0);\n}\n<\/script>\n<script id=\"fx_brightbuf_fsh\" type=\"x-shader\/x_fragment\">\n#ifdef GL_ES\n\/\/precision mediump float;\nprecision highp float;\n#endif\nuniform sampler2D uSrc;\nuniform vec2 uDelta;\n\nvarying vec2 texCoord;\nvarying vec2 screenCoord;\n\nvoid main(void) {\nvec4 col = texture2D(uSrc, texCoord);\ngl_FragColor = vec4(col.rgb * 2.0 - vec3(0.5), 1.0);\n}\n<\/script>\n<script id=\"fx_dirblur_r4_fsh\" type=\"x-shader\/x_fragment\">\n#ifdef GL_ES\n\/\/precision mediump float;\nprecision highp float;\n#endif\nuniform sampler2D uSrc;\nuniform vec2 uDelta;\nuniform vec4 uBlurDir; \/\/dir(x, y), stride(z, w)\n\nvarying vec2 texCoord;\nvarying vec2 screenCoord;\n\nvoid main(void) {\nvec4 col = texture2D(uSrc, texCoord);\ncol = col + texture2D(uSrc, texCoord + uBlurDir.xy * uDelta);\ncol = col + texture2D(uSrc, texCoord - uBlurDir.xy * uDelta);\ncol = col + texture2D(uSrc, texCoord + (uBlurDir.xy + uBlurDir.zw) * uDelta);\ncol = col + texture2D(uSrc, texCoord - (uBlurDir.xy + uBlurDir.zw) * uDelta);\ngl_FragColor = col \/ 5.0;\n}\n<\/script>\n<!-- effect fragment shader template -->\n<script id=\"fx_common_fsh\" type=\"x-shader\/x_fragment\">\n#ifdef GL_ES\n\/\/precision mediump float;\nprecision highp float;\n#endif\nuniform sampler2D uSrc;\nuniform vec2 uDelta;\n\nvarying vec2 texCoord;\nvarying vec2 screenCoord;\n\nvoid main(void) {\ngl_FragColor = texture2D(uSrc, texCoord);\n}\n<\/script>\n<!-- post processing -->\n<script id=\"pp_final_vsh\" type=\"x-shader\/x_vertex\">\nuniform vec3 uResolution;\nattribute vec2 aPosition;\nvarying vec2 texCoord;\nvarying vec2 screenCoord;\nvoid main(void) {\ngl_Position = vec4(aPosition, 0.0, 1.0);\ntexCoord = aPosition.xy * 0.5 + vec2(0.5, 0.5);\nscreenCoord = aPosition.xy * vec2(uResolution.z, 1.0);\n}\n<\/script>\n<script id=\"pp_final_fsh\" type=\"x-shader\/x_fragment\">\n#ifdef GL_ES\n\/\/precision mediump float;\nprecision highp float;\n#endif\nuniform sampler2D uSrc;\nuniform sampler2D uBloom;\nuniform vec2 uDelta;\nvarying vec2 texCoord;\nvarying vec2 screenCoord;\nvoid main(void) {\nvec4 srccol = texture2D(uSrc, texCoord) * 2.0;\nvec4 bloomcol = texture2D(uBloom, texCoord);\nvec4 col;\ncol = srccol + bloomcol * (vec4(1.0) + srccol);\ncol *= smoothstep(1.0, 0.0, pow(length((texCoord - vec2(0.5)) * 2.0), 1.2) * 0.5);\ncol = pow(col, vec4(0.45454545454545)); \/\/(1.0 \/ 2.2)\n\ngl_FragColor = vec4(col.rgb, 1.0);\ngl_FragColor.a = 1.0;\n}\n<\/script>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-08d6819 elementor-absolute elementor-widget elementor-widget-html\" data-id=\"08d6819\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<script>\nvar $ = jQuery;\n\"use strict\";\n$(document).ready(function ()\n{\n\n\/\/ Utilities\nvar Vector3 = {};\nvar Matrix44 = {};\nVector3.create = function (x, y, z)\n{\nreturn { 'x': x, 'y': y, 'z': z };\n};\nVector3.dot = function (v0, v1)\n{\nreturn v0.x * v1.x + v0.y * v1.y + v0.z * v1.z;\n};\nVector3.cross = function (v, v0, v1)\n{\nv.x = v0.y * v1.z - v0.z * v1.y;\nv.y = v0.z * v1.x - v0.x * v1.z;\nv.z = v0.x * v1.y - v0.y * v1.x;\n};\nVector3.normalize = function (v)\n{\nvar l = v.x * v.x + v.y * v.y + v.z * v.z;\nif (l > 0.00001) {\nl = 1.0 \/ Math.sqrt(l);\nv.x *= l;\nv.y *= l;\nv.z *= l;\n}\n};\nVector3.arrayForm = function (v)\n{\nif (v.array) {\nv.array[0] = v.x;\nv.array[1] = v.y;\nv.array[2] = v.z;\n}\nelse {\nv.array = new Float32Array([v.x, v.y, v.z]);\n}\nreturn v.array;\n};\nMatrix44.createIdentity = function ()\n{\nreturn new Float32Array([1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0]);\n};\nMatrix44.loadProjection = function (m, aspect, vdeg, near, far)\n{\nvar h = near * Math.tan(vdeg * Math.PI \/ 180.0 * 0.5) * 2.0;\nvar w = h * aspect;\n\nm[0] = 2.0 * near \/ w;\nm[1] = 0.0;\nm[2] = 0.0;\nm[3] = 0.0;\n\nm[4] = 0.0;\nm[5] = 2.0 * near \/ h;\nm[6] = 0.0;\nm[7] = 0.0;\n\nm[8] = 0.0;\nm[9] = 0.0;\nm[10] = -(far + near) \/ (far - near);\nm[11] = -1.0;\n\nm[12] = 0.0;\nm[13] = 0.0;\nm[14] = -2.0 * far * near \/ (far - near);\nm[15] = 0.0;\n};\nMatrix44.loadLookAt = function (m, vpos, vlook, vup)\n{\nvar frontv = Vector3.create(vpos.x - vlook.x, vpos.y - vlook.y, vpos.z - vlook.z);\nVector3.normalize(frontv);\nvar sidev = Vector3.create(1.0, 0.0, 0.0);\nVector3.cross(sidev, vup, frontv);\nVector3.normalize(sidev);\nvar topv = Vector3.create(1.0, 0.0, 0.0);\nVector3.cross(topv, frontv, sidev);\nVector3.normalize(topv);\n\nm[0] = sidev.x;\nm[1] = topv.x;\nm[2] = frontv.x;\nm[3] = 0.0;\n\nm[4] = sidev.y;\nm[5] = topv.y;\nm[6] = frontv.y;\nm[7] = 0.0;\n\nm[8] = sidev.z;\nm[9] = topv.z;\nm[10] = frontv.z;\nm[11] = 0.0;\n\nm[12] = -(vpos.x * m[0] + vpos.y * m[4] + vpos.z * m[8]);\nm[13] = -(vpos.x * m[1] + vpos.y * m[5] + vpos.z * m[9]);\nm[14] = -(vpos.x * m[2] + vpos.y * m[6] + vpos.z * m[10]);\nm[15] = 1.0;\n};\n\n\/\/\nvar timeInfo = {\n'start': 0, 'prev': 0, \/\/ Date\n'delta': 0, 'elapsed': 0 \/\/ Number(sec)\n};\n\n\/\/\nvar gl;\nvar renderSpec = {\n'width': 0,\n'height': 0,\n'aspect': 1,\n'array': new Float32Array(3),\n'halfWidth': 0,\n'halfHeight': 0,\n'halfArray': new Float32Array(3)\n\/\/ and some render targets. see setViewport()\n};\nrenderSpec.setSize = function (w, h)\n{\nrenderSpec.width = w;\nrenderSpec.height = h;\nrenderSpec.aspect = renderSpec.width \/ renderSpec.height;\nrenderSpec.array[0] = renderSpec.width;\nrenderSpec.array[1] = renderSpec.height;\nrenderSpec.array[2] = renderSpec.aspect;\n\nrenderSpec.halfWidth = Math.floor(w \/ 2);\nrenderSpec.halfHeight = Math.floor(h \/ 2);\nrenderSpec.halfArray[0] = renderSpec.halfWidth;\nrenderSpec.halfArray[1] = renderSpec.halfHeight;\nrenderSpec.halfArray[2] = renderSpec.halfWidth \/ renderSpec.halfHeight;\n};\n\nfunction deleteRenderTarget (rt)\n{\ngl.deleteFramebuffer(rt.frameBuffer);\ngl.deleteRenderbuffer(rt.renderBuffer);\ngl.deleteTexture(rt.texture);\n}\n\nfunction createRenderTarget (w, h)\n{\nvar ret = {\n'width': w,\n'height': h,\n'sizeArray': new Float32Array([w, h, w \/ h]),\n'dtxArray': new Float32Array([1.0 \/ w, 1.0 \/ h])\n};\nret.frameBuffer = gl.createFramebuffer();\nret.renderBuffer = gl.createRenderbuffer();\nret.texture = gl.createTexture();\n\ngl.bindTexture(gl.TEXTURE_2D, ret.texture);\ngl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, w, h, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\ngl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\ngl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\ngl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\ngl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n\ngl.bindFramebuffer(gl.FRAMEBUFFER, ret.frameBuffer);\ngl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, ret.texture, 0);\n\ngl.bindRenderbuffer(gl.RENDERBUFFER, ret.renderBuffer);\ngl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, w, h);\ngl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, ret.renderBuffer);\n\ngl.bindTexture(gl.TEXTURE_2D, null);\ngl.bindRenderbuffer(gl.RENDERBUFFER, null);\ngl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\nreturn ret;\n}\n\nfunction compileShader (shtype, shsrc)\n{\nvar retsh = gl.createShader(shtype);\n\ngl.shaderSource(retsh, shsrc);\ngl.compileShader(retsh);\n\nif (!gl.getShaderParameter(retsh, gl.COMPILE_STATUS)) {\nvar errlog = gl.getShaderInfoLog(retsh);\ngl.deleteShader(retsh);\nconsole.error(errlog);\nreturn null;\n}\nreturn retsh;\n}\n\nfunction createShader (vtxsrc, frgsrc, uniformlist, attrlist)\n{\nvar vsh = compileShader(gl.VERTEX_SHADER, vtxsrc);\nvar fsh = compileShader(gl.FRAGMENT_SHADER, frgsrc);\n\nif (vsh == null || fsh == null) {\nreturn null;\n}\n\nvar prog = gl.createProgram();\ngl.attachShader(prog, vsh);\ngl.attachShader(prog, fsh);\n\ngl.deleteShader(vsh);\ngl.deleteShader(fsh);\n\ngl.linkProgram(prog);\nif (!gl.getProgramParameter(prog, gl.LINK_STATUS)) {\nvar errlog = gl.getProgramInfoLog(prog);\nconsole.error(errlog);\nreturn null;\n}\n\nif (uniformlist) {\nprog.uniforms = {};\nfor (var i = 0; i < uniformlist.length; i++) {\nprog.uniforms[uniformlist[i]] = gl.getUniformLocation(prog, uniformlist[i]);\n}\n}\n\nif (attrlist) {\nprog.attributes = {};\nfor (var i = 0; i < attrlist.length; i++) {\nvar attr = attrlist[i];\nprog.attributes[attr] = gl.getAttribLocation(prog, attr);\n}\n}\n\nreturn prog;\n}\n\nfunction useShader (prog)\n{\ngl.useProgram(prog);\nfor (var attr in prog.attributes) {\ngl.enableVertexAttribArray(prog.attributes[attr]);;\n}\n}\n\nfunction unuseShader (prog)\n{\nfor (var attr in prog.attributes) {\ngl.disableVertexAttribArray(prog.attributes[attr]);;\n}\ngl.useProgram(null);\n}\n\n\/\/\/\/\/\nvar projection = {\n'angle': 60,\n'nearfar': new Float32Array([0.1, 100.0]),\n'matrix': Matrix44.createIdentity()\n};\nvar camera = {\n'position': Vector3.create(0, 0, 100),\n'lookat': Vector3.create(0, 0, 0),\n'up': Vector3.create(0, 1, 0),\n'dof': Vector3.create(10.0, 4.0, 8.0),\n'matrix': Matrix44.createIdentity()\n};\n\nvar pointFlower = {};\nvar meshFlower = {};\nvar sceneStandBy = false;\n\nvar BlossomParticle = function ()\n{\nthis.velocity = new Array(3);\nthis.rotation = new Array(3);\nthis.position = new Array(3);\nthis.euler = new Array(3);\nthis.size = 1.0;\nthis.alpha = 1.0;\nthis.zkey = 0.0;\n};\n\nBlossomParticle.prototype.setVelocity = function (vx, vy, vz)\n{\nthis.velocity[0] = vx;\nthis.velocity[1] = vy;\nthis.velocity[2] = vz;\n};\n\nBlossomParticle.prototype.setRotation = function (rx, ry, rz)\n{\nthis.rotation[0] = rx;\nthis.rotation[1] = ry;\nthis.rotation[2] = rz;\n};\n\nBlossomParticle.prototype.setPosition = function (nx, ny, nz)\n{\nthis.position[0] = nx;\nthis.position[1] = ny;\nthis.position[2] = nz;\n};\n\nBlossomParticle.prototype.setEulerAngles = function (rx, ry, rz)\n{\nthis.euler[0] = rx;\nthis.euler[1] = ry;\nthis.euler[2] = rz;\n};\n\nBlossomParticle.prototype.setSize = function (s)\n{\nthis.size = s;\n};\n\nBlossomParticle.prototype.update = function (dt, et)\n{\nthis.position[0] += this.velocity[0] * dt;\nthis.position[1] += this.velocity[1] * dt;\nthis.position[2] += this.velocity[2] * dt;\n\nthis.euler[0] += this.rotation[0] * dt;\nthis.euler[1] += this.rotation[1] * dt;\nthis.euler[2] += this.rotation[2] * dt;\n};\n\nfunction createPointFlowers ()\n{\n\/\/ get point sizes\nvar prm = gl.getParameter(gl.ALIASED_POINT_SIZE_RANGE);\nrenderSpec.pointSize = { 'min': prm[0], 'max': prm[1] };\n\nvar vtxsrc = document.getElementById(\"sakura_point_vsh\").textContent;\nvar frgsrc = document.getElementById(\"sakura_point_fsh\").textContent;\n\npointFlower.program = createShader(\nvtxsrc, frgsrc,\n['uProjection', 'uModelview', 'uResolution', 'uOffset', 'uDOF', 'uFade'],\n['aPosition', 'aEuler', 'aMisc']\n);\n\nuseShader(pointFlower.program);\npointFlower.offset = new Float32Array([0.0, 0.0, 0.0]);\npointFlower.fader = Vector3.create(0.0, 10.0, 0.0);\n\n\/\/ paramerters: velocity[3], rotate[3]\npointFlower.numFlowers = 1600;\npointFlower.particles = new Array(pointFlower.numFlowers);\n\/\/ vertex attributes {position[3], euler_xyz[3], size[1]}\npointFlower.dataArray = new Float32Array(pointFlower.numFlowers * (3 + 3 + 2));\npointFlower.positionArrayOffset = 0;\npointFlower.eulerArrayOffset = pointFlower.numFlowers * 3;\npointFlower.miscArrayOffset = pointFlower.numFlowers * 6;\n\npointFlower.buffer = gl.createBuffer();\ngl.bindBuffer(gl.ARRAY_BUFFER, pointFlower.buffer);\ngl.bufferData(gl.ARRAY_BUFFER, pointFlower.dataArray, gl.DYNAMIC_DRAW);\ngl.bindBuffer(gl.ARRAY_BUFFER, null);\n\nunuseShader(pointFlower.program);\n\nfor (var i = 0; i < pointFlower.numFlowers; i++) {\npointFlower.particles[i] = new BlossomParticle();\n}\n}\n\nfunction initPointFlowers ()\n{\n\/\/area\npointFlower.area = Vector3.create(20.0, 20.0, 20.0);\npointFlower.area.x = pointFlower.area.y * renderSpec.aspect;\n\npointFlower.fader.x = 10.0; \/\/env fade start\npointFlower.fader.y = pointFlower.area.z; \/\/env fade half\npointFlower.fader.z = 0.1;  \/\/near fade start\n\n\/\/particles\nvar PI2 = Math.PI * 2.0;\nvar tmpv3 = Vector3.create(0, 0, 0);\nvar tmpv = 0;\nvar symmetryrand = function () { return (Math.random() * 2.0 - 1.0); };\nfor (var i = 0; i < pointFlower.numFlowers; i++) {\nvar tmpprtcl = pointFlower.particles[i];\n\n\/\/velocity\ntmpv3.x = symmetryrand() * 0.3 + 0.8;\ntmpv3.y = symmetryrand() * 0.2 - 1.0;\ntmpv3.z = symmetryrand() * 0.3 + 0.5;\nVector3.normalize(tmpv3);\ntmpv = 2.0 + Math.random() * 1.0;\ntmpprtcl.setVelocity(tmpv3.x * tmpv, tmpv3.y * tmpv, tmpv3.z * tmpv);\n\n\/\/rotation\ntmpprtcl.setRotation(\nsymmetryrand() * PI2 * 0.5,\nsymmetryrand() * PI2 * 0.5,\nsymmetryrand() * PI2 * 0.5\n);\n\n\/\/position\ntmpprtcl.setPosition(\nsymmetryrand() * pointFlower.area.x,\nsymmetryrand() * pointFlower.area.y,\nsymmetryrand() * pointFlower.area.z\n);\n\n\/\/euler\ntmpprtcl.setEulerAngles(\nMath.random() * Math.PI * 2.0,\nMath.random() * Math.PI * 2.0,\nMath.random() * Math.PI * 2.0\n);\n\n\/\/size\ntmpprtcl.setSize(0.9 + Math.random() * 0.1);\n}\n}\n\nfunction renderPointFlowers ()\n{\n\/\/update\nvar PI2 = Math.PI * 2.0;\nvar limit = [pointFlower.area.x, pointFlower.area.y, pointFlower.area.z];\nvar repeatPos = function (prt, cmp, limit)\n{\nif (Math.abs(prt.position[cmp]) - prt.size * 0.5 > limit) {\n\/\/out of area\nif (prt.position[cmp] > 0) {\nprt.position[cmp] -= limit * 2.0;\n}\nelse {\nprt.position[cmp] += limit * 2.0;\n}\n}\n};\nvar repeatEuler = function (prt, cmp)\n{\nprt.euler[cmp] = prt.euler[cmp] % PI2;\nif (prt.euler[cmp] < 0.0) {\nprt.euler[cmp] += PI2;\n}\n};\n\nfor (var i = 0; i < pointFlower.numFlowers; i++) {\nvar prtcl = pointFlower.particles[i];\nprtcl.update(timeInfo.delta, timeInfo.elapsed);\nrepeatPos(prtcl, 0, pointFlower.area.x);\nrepeatPos(prtcl, 1, pointFlower.area.y);\nrepeatPos(prtcl, 2, pointFlower.area.z);\nrepeatEuler(prtcl, 0);\nrepeatEuler(prtcl, 1);\nrepeatEuler(prtcl, 2);\n\nprtcl.alpha = 1.0;\/\/(pointFlower.area.z - prtcl.position[2]) * 0.5;\n\nprtcl.zkey = (camera.matrix[2] * prtcl.position[0]\n+ camera.matrix[6] * prtcl.position[1]\n+ camera.matrix[10] * prtcl.position[2]\n+ camera.matrix[14]);\n}\n\n\/\/ sort\npointFlower.particles.sort(function (p0, p1) { return p0.zkey - p1.zkey; });\n\n\/\/ update data\nvar ipos = pointFlower.positionArrayOffset;\nvar ieuler = pointFlower.eulerArrayOffset;\nvar imisc = pointFlower.miscArrayOffset;\nfor (var i = 0; i < pointFlower.numFlowers; i++) {\nvar prtcl = pointFlower.particles[i];\npointFlower.dataArray[ipos] = prtcl.position[0];\npointFlower.dataArray[ipos + 1] = prtcl.position[1];\npointFlower.dataArray[ipos + 2] = prtcl.position[2];\nipos += 3;\npointFlower.dataArray[ieuler] = prtcl.euler[0];\npointFlower.dataArray[ieuler + 1] = prtcl.euler[1];\npointFlower.dataArray[ieuler + 2] = prtcl.euler[2];\nieuler += 3;\npointFlower.dataArray[imisc] = prtcl.size;\npointFlower.dataArray[imisc + 1] = prtcl.alpha;\nimisc += 2;\n}\n\n\/\/draw\ngl.enable(gl.BLEND);\n\/\/gl.disable(gl.DEPTH_TEST);\ngl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);\n\nvar prog = pointFlower.program;\nuseShader(prog);\n\ngl.uniformMatrix4fv(prog.uniforms.uProjection, false, projection.matrix);\ngl.uniformMatrix4fv(prog.uniforms.uModelview, false, camera.matrix);\ngl.uniform3fv(prog.uniforms.uResolution, renderSpec.array);\ngl.uniform3fv(prog.uniforms.uDOF, Vector3.arrayForm(camera.dof));\ngl.uniform3fv(prog.uniforms.uFade, Vector3.arrayForm(pointFlower.fader));\n\ngl.bindBuffer(gl.ARRAY_BUFFER, pointFlower.buffer);\ngl.bufferData(gl.ARRAY_BUFFER, pointFlower.dataArray, gl.DYNAMIC_DRAW);\n\ngl.vertexAttribPointer(prog.attributes.aPosition, 3, gl.FLOAT, false, 0, pointFlower.positionArrayOffset * Float32Array.BYTES_PER_ELEMENT);\ngl.vertexAttribPointer(prog.attributes.aEuler, 3, gl.FLOAT, false, 0, pointFlower.eulerArrayOffset * Float32Array.BYTES_PER_ELEMENT);\ngl.vertexAttribPointer(prog.attributes.aMisc, 2, gl.FLOAT, false, 0, pointFlower.miscArrayOffset * Float32Array.BYTES_PER_ELEMENT);\n\n\/\/ doubler\nfor (var i = 1; i < 2; i++) {\nvar zpos = i * -2.0;\npointFlower.offset[0] = pointFlower.area.x * -1.0;\npointFlower.offset[1] = pointFlower.area.y * -1.0;\npointFlower.offset[2] = pointFlower.area.z * zpos;\ngl.uniform3fv(prog.uniforms.uOffset, pointFlower.offset);\ngl.drawArrays(gl.POINT, 0, pointFlower.numFlowers);\n\npointFlower.offset[0] = pointFlower.area.x * -1.0;\npointFlower.offset[1] = pointFlower.area.y * 1.0;\npointFlower.offset[2] = pointFlower.area.z * zpos;\ngl.uniform3fv(prog.uniforms.uOffset, pointFlower.offset);\ngl.drawArrays(gl.POINT, 0, pointFlower.numFlowers);\n\npointFlower.offset[0] = pointFlower.area.x * 1.0;\npointFlower.offset[1] = pointFlower.area.y * -1.0;\npointFlower.offset[2] = pointFlower.area.z * zpos;\ngl.uniform3fv(prog.uniforms.uOffset, pointFlower.offset);\ngl.drawArrays(gl.POINT, 0, pointFlower.numFlowers);\n\npointFlower.offset[0] = pointFlower.area.x * 1.0;\npointFlower.offset[1] = pointFlower.area.y * 1.0;\npointFlower.offset[2] = pointFlower.area.z * zpos;\ngl.uniform3fv(prog.uniforms.uOffset, pointFlower.offset);\ngl.drawArrays(gl.POINT, 0, pointFlower.numFlowers);\n}\n\n\/\/main\npointFlower.offset[0] = 0.0;\npointFlower.offset[1] = 0.0;\npointFlower.offset[2] = 0.0;\ngl.uniform3fv(prog.uniforms.uOffset, pointFlower.offset);\ngl.drawArrays(gl.POINT, 0, pointFlower.numFlowers);\n\ngl.bindBuffer(gl.ARRAY_BUFFER, null);\nunuseShader(prog);\n\ngl.enable(gl.DEPTH_TEST);\ngl.disable(gl.BLEND);\n}\n\n\/\/ effects\n\/\/common util\nfunction createEffectProgram (vtxsrc, frgsrc, exunifs, exattrs)\n{\nvar ret = {};\nvar unifs = ['uResolution', 'uSrc', 'uDelta'];\nif (exunifs) {\nunifs = unifs.concat(exunifs);\n}\nvar attrs = ['aPosition'];\nif (exattrs) {\nattrs = attrs.concat(exattrs);\n}\n\nret.program = createShader(vtxsrc, frgsrc, unifs, attrs);\nuseShader(ret.program);\n\nret.dataArray = new Float32Array([\n-1.0, -1.0,\n1.0, -1.0,\n-1.0, 1.0,\n1.0, 1.0\n]);\nret.buffer = gl.createBuffer();\ngl.bindBuffer(gl.ARRAY_BUFFER, ret.buffer);\ngl.bufferData(gl.ARRAY_BUFFER, ret.dataArray, gl.STATIC_DRAW);\n\ngl.bindBuffer(gl.ARRAY_BUFFER, null);\nunuseShader(ret.program);\n\nreturn ret;\n}\n\n\/\/ basic usage\n\/\/ useEffect(prog, srctex({'texture':texid, 'dtxArray':(f32)[dtx, dty]})); \/\/basic initialize\n\/\/ gl.uniform**(...); \/\/additional uniforms\n\/\/ drawEffect()\n\/\/ unuseEffect(prog)\n\/\/ TEXTURE0 makes src\nfunction useEffect (fxobj, srctex)\n{\nvar prog = fxobj.program;\nuseShader(prog);\ngl.uniform3fv(prog.uniforms.uResolution, renderSpec.array);\n\nif (srctex != null) {\ngl.uniform2fv(prog.uniforms.uDelta, srctex.dtxArray);\ngl.uniform1i(prog.uniforms.uSrc, 0);\n\ngl.activeTexture(gl.TEXTURE0);\ngl.bindTexture(gl.TEXTURE_2D, srctex.texture);\n}\n}\nfunction drawEffect (fxobj)\n{\ngl.bindBuffer(gl.ARRAY_BUFFER, fxobj.buffer);\ngl.vertexAttribPointer(fxobj.program.attributes.aPosition, 2, gl.FLOAT, false, 0, 0);\ngl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n}\nfunction unuseEffect (fxobj)\n{\nunuseShader(fxobj.program);\n}\n\nvar effectLib = {};\nfunction createEffectLib ()\n{\n\nvar vtxsrc, frgsrc;\n\/\/common\nvar cmnvtxsrc = document.getElementById(\"fx_common_vsh\").textContent;\n\n\/\/background\nfrgsrc = document.getElementById(\"bg_fsh\").textContent;\neffectLib.sceneBg = createEffectProgram(cmnvtxsrc, frgsrc, ['uTimes'], null);\n\n\/\/ make brightpixels buffer\nfrgsrc = document.getElementById(\"fx_brightbuf_fsh\").textContent;\neffectLib.mkBrightBuf = createEffectProgram(cmnvtxsrc, frgsrc, null, null);\n\n\/\/ direction blur\nfrgsrc = document.getElementById(\"fx_dirblur_r4_fsh\").textContent;\neffectLib.dirBlur = createEffectProgram(cmnvtxsrc, frgsrc, ['uBlurDir'], null);\n\n\/\/final composite\nvtxsrc = document.getElementById(\"pp_final_vsh\").textContent;\nfrgsrc = document.getElementById(\"pp_final_fsh\").textContent;\neffectLib.finalComp = createEffectProgram(vtxsrc, frgsrc, ['uBloom'], null);\n}\n\n\/\/ background\nfunction createBackground ()\n{\n\/\/console.log(\"create background\");\n}\nfunction initBackground ()\n{\n\/\/console.log(\"init background\");\n}\nfunction renderBackground ()\n{\ngl.disable(gl.DEPTH_TEST);\n\nuseEffect(effectLib.sceneBg, null);\ngl.uniform2f(effectLib.sceneBg.program.uniforms.uTimes, timeInfo.elapsed, timeInfo.delta);\ndrawEffect(effectLib.sceneBg);\nunuseEffect(effectLib.sceneBg);\ngl.enable(gl.DEPTH_TEST);\n}\n\n\/\/ post process\nvar postProcess = {};\nfunction createPostProcess ()\n{\n\/\/console.log(\"create post process\");\n}\nfunction initPostProcess ()\n{\n\/\/console.log(\"init post process\");\n}\n\nfunction renderPostProcess ()\n{\ngl.enable(gl.TEXTURE_2D);\ngl.disable(gl.DEPTH_TEST);\nvar bindRT = function (rt, isclear)\n{\ngl.bindFramebuffer(gl.FRAMEBUFFER, rt.frameBuffer);\ngl.viewport(0, 0, rt.width, rt.height);\nif (isclear) {\ngl.clearColor(0, 0, 0, 0);\ngl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n}\n};\n\n\/\/make bright buff\nbindRT(renderSpec.wHalfRT0, true);\nuseEffect(effectLib.mkBrightBuf, renderSpec.mainRT);\ndrawEffect(effectLib.mkBrightBuf);\nunuseEffect(effectLib.mkBrightBuf);\n\n\/\/ make bloom\nfor (var i = 0; i < 2; i++) {\nvar p = 1.5 + 1 * i;\nvar s = 2.0 + 1 * i;\nbindRT(renderSpec.wHalfRT1, true);\nuseEffect(effectLib.dirBlur, renderSpec.wHalfRT0);\ngl.uniform4f(effectLib.dirBlur.program.uniforms.uBlurDir, p, 0.0, s, 0.0);\ndrawEffect(effectLib.dirBlur);\nunuseEffect(effectLib.dirBlur);\n\nbindRT(renderSpec.wHalfRT0, true);\nuseEffect(effectLib.dirBlur, renderSpec.wHalfRT1);\ngl.uniform4f(effectLib.dirBlur.program.uniforms.uBlurDir, 0.0, p, 0.0, s);\ndrawEffect(effectLib.dirBlur);\nunuseEffect(effectLib.dirBlur);\n}\n\n\/\/display\ngl.bindFramebuffer(gl.FRAMEBUFFER, null);\ngl.viewport(0, 0, renderSpec.width, renderSpec.height);\ngl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n\nuseEffect(effectLib.finalComp, renderSpec.mainRT);\ngl.uniform1i(effectLib.finalComp.program.uniforms.uBloom, 1);\ngl.activeTexture(gl.TEXTURE1);\ngl.bindTexture(gl.TEXTURE_2D, renderSpec.wHalfRT0.texture);\ndrawEffect(effectLib.finalComp);\nunuseEffect(effectLib.finalComp);\n\ngl.enable(gl.DEPTH_TEST);\n}\n\n\/\/\/\/\/\nvar SceneEnv = {};\nfunction createScene ()\n{\ncreateEffectLib();\ncreateBackground();\ncreatePointFlowers();\ncreatePostProcess();\nsceneStandBy = true;\n}\n\nfunction initScene ()\n{\ninitBackground();\ninitPointFlowers();\ninitPostProcess();\n\n\/\/camera.position.z = 17.320508;\ncamera.position.z = pointFlower.area.z + projection.nearfar[0];\nprojection.angle = Math.atan2(pointFlower.area.y, camera.position.z + pointFlower.area.z) * 180.0 \/ Math.PI * 2.0;\nMatrix44.loadProjection(projection.matrix, renderSpec.aspect, projection.angle, projection.nearfar[0], projection.nearfar[1]);\n}\n\nfunction renderScene ()\n{\n\/\/draw\nMatrix44.loadLookAt(camera.matrix, camera.position, camera.lookat, camera.up);\n\ngl.enable(gl.DEPTH_TEST);\n\n\/\/gl.bindFramebuffer(gl.FRAMEBUFFER, null);\ngl.bindFramebuffer(gl.FRAMEBUFFER, renderSpec.mainRT.frameBuffer);\ngl.viewport(0, 0, renderSpec.mainRT.width, renderSpec.mainRT.height);\ngl.clearColor(0.005, 0, 0.05, 0);\ngl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n\nrenderBackground();\nrenderPointFlowers();\nrenderPostProcess();\n}\n\n\/\/\/\/\/\nfunction onResize (e)\n{\nmakeCanvasFullScreen(document.getElementById(\"sakura\"));\nsetViewports();\nif (sceneStandBy) {\ninitScene();\n}\n}\n\nfunction setViewports ()\n{\nrenderSpec.setSize(gl.canvas.width, gl.canvas.height);\n\ngl.clearColor(0.2, 0.2, 0.5, 1.0);\ngl.viewport(0, 0, renderSpec.width, renderSpec.height);\n\nvar rtfunc = function (rtname, rtw, rth)\n{\nvar rt = renderSpec[rtname];\nif (rt) deleteRenderTarget(rt);\nrenderSpec[rtname] = createRenderTarget(rtw, rth);\n};\nrtfunc('mainRT', renderSpec.width, renderSpec.height);\nrtfunc('wFullRT0', renderSpec.width, renderSpec.height);\nrtfunc('wFullRT1', renderSpec.width, renderSpec.height);\nrtfunc('wHalfRT0', renderSpec.halfWidth, renderSpec.halfHeight);\nrtfunc('wHalfRT1', renderSpec.halfWidth, renderSpec.halfHeight);\n}\n\nfunction render ()\n{\nrenderScene();\n}\n\nvar animating = true;\nfunction toggleAnimation (elm)\n{\nanimating ^= true;\nif (animating) animate();\nif (elm) {\nelm.innerHTML = animating ? \"Stop\" : \"Start\";\n}\n}\n\nfunction stepAnimation ()\n{\nif (!animating) animate();\n}\n\nfunction animate ()\n{\nvar curdate = new Date();\ntimeInfo.elapsed = (curdate - timeInfo.start) \/ 1000.0;\ntimeInfo.delta = (curdate - timeInfo.prev) \/ 1000.0;\ntimeInfo.prev = curdate;\n\nif (animating) requestAnimationFrame(animate);\nrender();\n}\n\nfunction makeCanvasFullScreen (canvas)\n{\nvar b = document.body;\nvar d = document.documentElement;\nfullw = Math.max(b.clientWidth, b.scrollWidth, d.scrollWidth, d.clientWidth);\nfullh = Math.max(b.clientHeight, b.scrollHeight, d.scrollHeight, d.clientHeight);\ncanvas.width = fullw;\ncanvas.height = fullh;\n}\n\nwindow.addEventListener('load', function (e)\n{\nvar canvas = document.getElementById(\"sakura\");\ntry {\nmakeCanvasFullScreen(canvas);\ngl = canvas.getContext('experimental-webgl');\n} catch (e) {\nalert(\"WebGL not supported.\" + e);\nconsole.error(e);\nreturn;\n}\n\nwindow.addEventListener('resize', onResize);\n\nsetViewports();\ncreateScene();\ninitScene();\n\ntimeInfo.start = new Date();\ntimeInfo.prev = timeInfo.start;\nanimate();\n});\n\n\/\/set window.requestAnimationFrame\n(function (w, r)\n{\nw['r' + r] = w['r' + r] || w['webkitR' + r] || w['mozR' + r] || w['msR' + r] || w['oR' + r] || function (c) { w.setTimeout(c, 1000 \/ 60); };\n})(window, 'equestAnimationFrame');\n\n});\n\n<\/script>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-15a23cf elementor-absolute elementor-widget elementor-widget-html\" data-id=\"15a23cf\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<canvas id=\"sakura\" class=\"bg-animation\" width=\"1920\" height=\"880\" style=\"\n    opacity: 0.5;\n\"><\/canvas>\n<div class=\"btnbg\"><\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6718aba elementor-widget elementor-widget-heading\" data-id=\"6718aba\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.9.2 - 21-12-2022 *\/\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style><span class=\"elementor-heading-title elementor-size-default\">WE ARE<\/span>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-eaeefbc content_main_left_wrapper_top elementor-widget elementor-widget-heading\" data-id=\"eaeefbc\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Coming Soon<\/h1>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-48885c6 elementor-widget elementor-widget-text-editor\" data-id=\"48885c6\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.9.2 - 21-12-2022 *\/\n.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#818a91;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#818a91;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}<\/style>\t\t\t\tOur website is under construction. We are working very hard to give you the best experience with this one.\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-39cf5d3 elementor-widget elementor-widget-html\" data-id=\"39cf5d3\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div id=\"countdown\" class=\"datecountdown row\">\r\n<div id=\"day\"><\/div>\r\n<div id=\"hours\"><\/div>\r\n<div id=\"minutes\"><\/div>\r\n<div id=\"seconds\"><\/div>\r\n<\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-82ae7b3 elementor-widget elementor-widget-html\" data-id=\"82ae7b3\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div id=\"btn_wrapper\">\r\n<a class=\"btn_notify btn-hover btn-item\"><span><\/span>NOTIFY ME<\/a>\r\n<\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-6f8f50b notify-form  elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6f8f50b\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-eef4baf contents_in \" data-id=\"eef4baf\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3d55977 elementor-widget elementor-widget-heading\" data-id=\"3d55977\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<span class=\"elementor-heading-title elementor-size-default\"><span class=\"close\">\u00d7<\/span>\n<small class=\"tagline\">STAY IN TOUCH<\/small><\/span>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5246210 elementor-widget elementor-widget-heading\" data-id=\"5246210\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<span class=\"elementor-heading-title elementor-size-default\"> <h2 class=\"site-title\">We Are Almost Here<\/h2> <\/span>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-231c249 elementor-widget elementor-widget-heading\" data-id=\"231c249\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<span class=\"elementor-heading-title elementor-size-default\"><div class=\"notify_desc\">Subscribe to our newsletter and we will send you a notification about the launch of our brand new site.<\/div><\/span>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7135b60 eael-contact-form-7-button-align-left eael-contact-form-7-button-custom elementor-widget elementor-widget-eael-contact-form-7\" data-id=\"7135b60\" data-element_type=\"widget\" data-widget_type=\"eael-contact-form-7.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"eael-contact-form-7-wrapper\">\n                <div class=\"eael-contact-form eael-contact-form-7 eael-contact-form-7135b60 placeholder-show eael-contact-form-align-default\">\n<div class=\"wpcf7 no-js\" id=\"wpcf7-f5410-o1\" lang=\"en-US\" dir=\"ltr\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/pages\/3400#wpcf7-f5410-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Contact form\" novalidate=\"novalidate\" data-status=\"init\">\n<div style=\"display: none;\">\n<input type=\"hidden\" name=\"_wpcf7\" value=\"5410\" \/>\n<input type=\"hidden\" name=\"_wpcf7_version\" value=\"5.7.4\" \/>\n<input type=\"hidden\" name=\"_wpcf7_locale\" value=\"en_US\" \/>\n<input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f5410-o1\" \/>\n<input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/>\n<input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/>\n<\/div>\n<div class=\"contact-top\">\n\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"email\"><input size=\"40\" class=\"wpcf7-form-control wpcf7-text wpcf7-email wpcf7-validates-as-required wpcf7-validates-as-email form-control\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Email Address*\" value=\"\" type=\"email\" name=\"email\" \/><\/span>\n\t<\/p>\n\t<div class=\"notify_submit_btn\">\n\t\t<p><input class=\"wpcf7-form-control has-spinner wpcf7-submit submit-btn\" type=\"submit\" value=\"SEND\" \/>\n\t\t<\/p>\n\t<\/div>\n<\/div><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n<\/div>\n            <\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-6aaf818 content_main_right h-100\" data-id=\"6aaf818\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1c86ff0 h-100 elementor-widget elementor-widget-html\" data-id=\"1c86ff0\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\r\n<div class=\"h_sidebar_slider h-100\">\r\n<div class=\"bg-image\" style=\"background-image: url('https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-content\/uploads\/2023\/01\/header_sidebar_slider_1.png')\">\r\n    <div class=\"custom-slider-text\">\r\n        <h5>Unicorn Bath<\/h5>\r\n        <p>Photography<\/p>\r\n    <\/div>\r\n<\/div>\r\n<div class=\"bg-image\" style=\"background-image: url('https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-content\/uploads\/2023\/01\/contact_sidebar_image.png')\">\r\n    <div class=\"custom-slider-text\">\r\n        <h5>Unicorn Bath<\/h5>\r\n        <p>Photography<\/p>\r\n    <\/div>\r\n<\/div>\r\n<div class=\"bg-image\" style=\"background-image: url('https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-content\/uploads\/2023\/01\/header_sidebar_slider_1.png')\">\r\n    <div class=\"custom-slider-text\">\r\n        <h5>Unicorn Bath<\/h5>\r\n        <p>Photography<\/p>\r\n    <\/div>\r\n<\/div>\r\n<\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fab228f social_icons main_social_icons elementor-list-item-link-inline elementor-hidden-desktop elementor-hidden-tablet elementor-icon-list--layout-traditional elementor-widget elementor-widget-icon-list\" data-id=\"fab228f\" data-element_type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/www.facebook.com\/\" target=\"_blank\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">FB<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/twitter.com\/\" target=\"_blank\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">TW<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/www.linkedin.com\/\" target=\"_blank\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">IN<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-7969b75 elementor-section-full_width elementor-section-height-full elementor-section-items-stretch offcanvas__area elementor-section-height-default\" data-id=\"7969b75\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-a339f40 offcanvas__left\" data-id=\"a339f40\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-166ed0a offcanvas__middle\" data-id=\"166ed0a\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f62b3f5 eael-hamburger--none offcanvas__links h-100 eael-simple-menu-hamburger-align-right elementor-widget elementor-widget-eael-simple-menu\" data-id=\"f62b3f5\" data-element_type=\"widget\" data-widget_type=\"eael-simple-menu.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div data-hamburger-icon=\"&lt;i aria-hidden=&quot;true&quot; class=&quot;fas fa-bars&quot;&gt;&lt;\/i&gt;\" data-indicator-class=\"fas fa-angle-down\" data-dropdown-indicator-class=\"fas fa-angle-down\" class=\"eael-simple-menu-container eael-simple-menu-align-left eael-simple-menu--stretch eael-simple-menu-dropdown-align-left preset-2\" data-hamburger-breakpoints=\"{&quot;mobile&quot;:&quot;Mobile (&gt; 768px)&quot;,&quot;tablet&quot;:&quot;Tablet (&gt; 1024px)&quot;,&quot;none&quot;:&quot;None&quot;}\" data-hamburger-device=\"none\"><ul id=\"menu-theme-header-menu\" class=\"eael-simple-menu eael-simple-menu-dropdown-animate-to-top eael-simple-menu-indicator eael-simple-menu-vertical\"><li id=\"menu-item-4872\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-4872\"><a href=\"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/\">Home<\/a><\/li>\n<li id=\"menu-item-546\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-546\"><a href=\"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/about\/\">About Us<\/a><\/li>\n<li id=\"menu-item-547\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-547\"><a href=\"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/portfolio\/\">Portfolio<\/a><\/li>\n<li id=\"menu-item-548\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-548\"><a href=\"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/contact\/\">Contact<\/a><\/li>\n<\/ul><\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-3bda11e offcanvas__right\" data-id=\"3bda11e\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-04d4a5b elementor-widget elementor-widget-html\" data-id=\"04d4a5b\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"offcanvas__contact\">\r\n<h3>Get In Touch<\/h3>\r\n<ul>\r\n<li><a href=\"tel:+1 234 567 8899\">+1 234 567 8899<\/a>\r\n<\/li>\r\n\r\n<li><a href=\"mailto:hello@bramha.com\">hello@bramha.com<\/a>\r\n<\/li>\r\n\r\n<li>230 Norman Street New York,QC (USA) H8R 1A1<\/li>\r\n<\/ul>\r\n<\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-589ce30 elementor-widget elementor-widget-html\" data-id=\"589ce30\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div>Design By The_Krishna 2023<\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>FB TW IN WE ARE Coming Soon Our website is under construction. We are working very hard to give you the best experience with this one. NOTIFY ME \u00d7 STAY IN TOUCH We Are Almost Here Subscribe to our newsletter and we will send you a notification about the launch of our brand new site. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-3400","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/pages\/3400"}],"collection":[{"href":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/comments?post=3400"}],"version-history":[{"count":10,"href":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/pages\/3400\/revisions"}],"predecessor-version":[{"id":5977,"href":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/pages\/3400\/revisions\/5977"}],"wp:attachment":[{"href":"https:\/\/up2client.com\/envato\/bramha\/bramha_preview\/wp-json\/wp\/v2\/media?parent=3400"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}