Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions Bunnymark/Haxor/deploy/html/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,10 @@
<script src="js/stats.min.js"></script>
<div id="container" style="position:absolute; left:0px; top:0px; width: 100%; height: 100%;" alpha="true"></div>

<div style="position:absolute; background-color:rgba(0,0,0,0.8); width:100%; height: 64px; bottom:0px; left: 0px">
<div style="position:absolute; background-color:rgba(0,0,0,0.8); width:100%; height: 64px; bottom:0px; left: 0px; pointer-events:none;">
<p id="field" style="position: absolute; left: 40px; top: -18px; font-family:sans-serif; font-size:32px; color:#ccc;"></p>
<p id="field" style="position: absolute; left: 500px; top: 9px; font-family:sans-serif; font-size:16px; color:#ccc;">Change MAX in the URL Hash</p>
<p id="field" style="position: absolute; left: 50%; top: 1px; transform: translateX(-50%); font-family:sans-serif; font-size:14px; color:#ccc;">Change MAX in the URL Hash</p>
<p id="field" style="position: absolute; left: 50%; bottom: 1px; transform: translateX(-50%); font-family:sans-serif; font-size:14px; color:#ccc;">Left Click to Add More | Right Click for BOOM!</p>
</div>
<a href="http://www.haxor.xyz/" target="_blank">
<img src="img/logo-light-256.png" style="position: absolute; right: 30px; bottom: 16px; height:30px; width:auto;" />
Expand Down
44 changes: 31 additions & 13 deletions Bunnymark/Haxor/deploy/html/js/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -473,27 +473,28 @@ BunnyMark.prototype = $extend(haxor_core_Application.prototype,{
this.AddBunny();
}
var k = 0;
var explode = -1;
haxor_thread_Activity.Run(function(t) {
var lw = haxor_graphics_Screen.m_width * 0.5;
var lh = haxor_graphics_Screen.m_height;
var len = _g.rabbits.length / 2 | 0;
var mx = haxor_input_Input.mouse.x;
var my = haxor_input_Input.mouse.y;
var len = _g.rabbits.length / 1.5 | 0;
var mx = haxor_input_Input.mouse.x - lw;
var my = -20.0;
var _g11 = 0;
while(_g11 < len) {
var i1 = _g11++;
var dt = haxor_core_Time.m_delta * 2.0;
dt = Math.min(dt,0.033333333333333333);
var s = _g.rabbits[k];
var dt = haxor_core_Time.m_delta * 1.5;
dt = Math.min(dt,0.025);
s.speed.y -= dt * 980.0;
var _g2 = s;
_g2.set_x(_g2.m_x + s.speed.x * dt);
var _g21 = s;
_g21.set_y(_g21.m_y + s.speed.y * dt);
if(s.m_x <= -lw) s.speed.x = haxor_math_Mathf.Abs(s.speed.x); else if(s.m_x >= lw) s.speed.x = -haxor_math_Mathf.Abs(s.speed.x);
if(s.m_y < 0.0) {
s.speed.y = haxor_math_Mathf.Abs(s.speed.y);
if(s.speed.y < 1.0) s.speed.y = haxor_math_Random.Range(100,800);
if(s.m_x <= -lw) s.speed.x = haxor_math_Mathf.Abs(s.speed.x) * 0.8; else if(s.m_x >= lw) s.speed.x = -haxor_math_Mathf.Abs(s.speed.x) * 0.8;
if(s.m_y <= 0.0) {
s.speed.y = haxor_math_Mathf.Abs(s.speed.y) * 0.8;
s.speed.x = s.speed.x * 0.95;
s.m_y = 0.0;
s.get_stage().OnSpriteTransform(s);
0.0;
Expand All @@ -511,6 +512,22 @@ BunnyMark.prototype = $extend(haxor_core_Application.prototype,{
_g.AddBunny();
}
}
if(haxor_input_Input.Down(haxor_input_KeyCode.Mouse2)) {
var _g22 = 0;
var _g13 = _g.rabbits.length;
while(_g22 < _g13) {
var i3 = _g22++;
var s1 = _g.rabbits[i3];
var p = haxor_context_EngineContext.data.get_v2().Set(s1.m_x - mx,s1.m_y - my);
var r = haxor_math_Mathf.Clamp01((600 - Math.sqrt(p.x * p.x + p.y * p.y)) / 600.0);
if(r > 0) {
p.Normalize();
var f = haxor_math_Random.Range(600,1500);
s1.speed.x += p.x * r * f;
s1.speed.y += p.y * r * f;
}
}
}
return true;
});
}
Expand Down Expand Up @@ -1115,6 +1132,7 @@ bm_Stage.prototype = $extend(haxor_component_MeshRenderer.prototype,{
id += 1.0;
}
this.m_sm.Set("vertex",f32,3);
console.log("Stage> Mesh created with [" + f32.m_length / 18 + "] planes");
f32 = new haxor_io_FloatArray(c * plane.length);
k = 0;
var _g3 = 0;
Expand All @@ -1136,8 +1154,6 @@ bm_Stage.prototype = $extend(haxor_component_MeshRenderer.prototype,{
this.m_sm.set_bounds(haxor_context_EngineContext.data.get_aabb3().Set(-1000,1000,-1000,1000,-1000,1000));
this.set_mesh(this.m_sm);
this.m_mat = new haxor_graphics_material_Material("StageMaterial");
this.m_mat.SetBlending(770,771);
this.m_mat.blend = true;
this.m_mat.SetTexture("SpriteData",this.m_sd);
this.m_mat.SetFloat("SpriteDataSizeX",this.m_sd.m_width);
this.m_mat.SetFloat("SpriteDataSizeY",this.m_sd.m_height);
Expand All @@ -1146,6 +1162,8 @@ bm_Stage.prototype = $extend(haxor_component_MeshRenderer.prototype,{
this.m_mat.SetFloat("Count",0);
this.m_mat.cull = 2;
var ss = new haxor_graphics_material_Shader(bm_Stage.vs_stage,bm_Stage.fs_stage);
ss.precision = 9;
ss.Compile();
this.m_mat.set_shader(ss);
this.set_material(this.m_mat);
}
Expand Down Expand Up @@ -18996,8 +19014,8 @@ Xml.Comment = 3;
Xml.DocType = 4;
Xml.ProcessingInstruction = 5;
Xml.Document = 6;
bm_Stage.vs_stage = "\r\n#define SPRITE_W 26.0\r\n#define SPRITE_H 37.0\r\n\r\nuniform mat4 ProjectionMatrix;\r\nuniform mat4 ViewMatrix;\r\nuniform sampler2D SpriteData;\r\nuniform float SpriteDataSizeX;\r\nuniform float SpriteDataSizeY;\r\nuniform float Count;\r\nattribute vec3 vertex;\r\nattribute vec3 position;\r\n\r\nvarying vec2 uv;\r\nvarying vec2 d_uv;\r\nvarying float v_id;\r\n\r\nvoid main()\r\n{\r\n\tvec4 v = vec4(vertex.xyz, 1.0);\r\n\tfloat sid = v.z;\r\n\tint count = int(Count);\r\n\tif (int(sid) >= count)\r\n\t{\r\n\t\tv *= 0.0;\r\n\t\tv += 10000.0;\r\n\t\tgl_Position = v;\r\n\t\treturn;\t\r\n\t}\r\n\tv.z = -v.z / 100000.0;\r\n\t\r\n\tv_id = v.z;\r\n\t\r\n\tvec2 d = vec2(0.0);\r\n\td.x = mod(sid, SpriteDataSizeX) / (SpriteDataSizeX);\r\n\td.y = (sid / SpriteDataSizeY) / (SpriteDataSizeY);\r\n\t\r\n\td_uv = d;\r\n\t\r\n\tvec4 vd = texture2D(SpriteData,d);\t\r\n\t\r\n\tuv = v.xy;\r\n\tuv.x = uv.x + 0.5;\r\n\t\r\n\t\r\n\tfloat s \r\n\t//= 1.0;\r\n\t= vd.z;\r\n\t//= Count / 500000.0;\r\n\t//s = max(0.25, 1.0 - s);\r\n\t\r\n\tv.x = (v.x * SPRITE_W*s) + vd.x;\r\n\tv.y = (v.y * SPRITE_H*s) + vd.y;// +d.y;\r\n\t\r\n\tv = (v * ViewMatrix) * ProjectionMatrix;\r\n\tgl_Position = v;\r\n}\r\n\t";
bm_Stage.fs_stage = "\r\nuniform sampler2D SpriteData;\r\nuniform sampler2D Texture;\r\nuniform float Count;\r\nvarying vec2 uv;\r\nvarying vec2 d_uv;\r\nvarying float v_id;\r\n\r\nvoid main()\r\n{\r\n\tvec4 c = texture2D(Texture, uv);\t\r\n\tgl_FragColor = c;\r\n}\r\n\t";
bm_Stage.vs_stage = "\r\n#define SPRITE_W 26.0\r\n#define SPRITE_H 37.0\r\n\r\nuniform mat4 ProjectionMatrix;\r\nuniform mat4 ViewMatrix;\r\nuniform sampler2D SpriteData;\r\nuniform float SpriteDataSizeX;\r\nuniform float SpriteDataSizeY;\r\nuniform float Count;\r\nattribute vec3 vertex;\r\nattribute vec3 position;\r\n\r\nvarying vec2 uv;\r\n\r\nvoid main()\r\n{\r\n\tvec4 v = vec4(vertex.xyz, 1.0);\r\n\tfloat sid = v.z;\r\n\tint count = int(Count);\r\n\tif (int(sid) >= count)\r\n\t{\r\n\t\tv.z = -1000000000.0;\r\n\t\tgl_Position = v;\r\n\t\treturn;\t\t\t\r\n\t}\r\n\tv.z *= 0.0000001;\r\n\t\r\n\tvec2 d = vec2(mod(sid, SpriteDataSizeX) / (SpriteDataSizeX),(sid / SpriteDataSizeY) / (SpriteDataSizeY));\r\n\t\r\n\tvec4 vd = texture2D(SpriteData,d);\t\r\n\t\r\n\tuv = v.xy;\r\n\tuv.x = uv.x + 0.5;\r\n\t\t\r\n\tfloat s = vd.z;\t\r\n\tv.x = (v.x * SPRITE_W*s) + vd.x;\r\n\tv.y = (v.y * SPRITE_H*s) + vd.y;\t\r\n\tv = (v * ViewMatrix) * ProjectionMatrix;\r\n\tgl_Position = v;\r\n}\r\n\t";
bm_Stage.fs_stage = "\r\nuniform sampler2D SpriteData;\r\nuniform sampler2D Texture;\r\nuniform float Count;\r\nvarying vec2 uv;\r\n\r\nvoid main()\r\n{\r\n\tvec4 c = texture2D(Texture, uv);\t\r\n\tif (c.a <= 0.008) { discard; }\r\n\tgl_FragColor = c;\r\n}\r\n\t";
haxe_crypto_Base64.CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
haxe_crypto_Base64.BYTES = haxe_io_Bytes.ofString(haxe_crypto_Base64.CHARS);
haxe_ds_ObjectMap.count = 0;
Expand Down
47 changes: 34 additions & 13 deletions Bunnymark/Haxor/source/BunnyMark.hx
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import haxor.math.AABB2;
import haxor.math.Color;
import haxor.math.Mathf;
import haxor.math.Random;
import haxor.math.Vector2;
import haxor.math.Vector3;
import haxor.platform.Types.Float32;
import haxor.thread.Activity;
Expand Down Expand Up @@ -100,34 +101,37 @@ class BunnyMark extends Application implements IRenderable


var k : Int = 0;
var explode : Int = -1;

Activity.Run(function(t:Float):Bool
{
{
var lw : Float32 = Screen.width * 0.5;
var lh : Float32 = Screen.height;

var len : Int = Std.int(rabbits.length / 2);

var mx : Float32 = Input.mouse.x;
var my : Float32 = Input.mouse.y;
var len : Int = Std.int(rabbits.length / 1.5);
var mx : Float32 = Input.mouse.x-lw;
var my : Float32 = -20.0;// Input.mouse.y;

for (i in 0...len)
{
var dt : Float32 = Time.delta * 2.0;
dt = Mathf.Min(dt, 1.0 / 30.0);
var s : Sprite = rabbits[k];
var dt : Float32 = Time.delta * 1.5;
dt = Mathf.Min(dt, 1.0 / 40.0);

s.speed.y -= dt * 980.0;


s.x += s.speed.x * dt;
s.y += s.speed.y * dt;

if (s.x <= -lw) s.speed.x = Mathf.Abs(s.speed.x);
if (s.x <= -lw) s.speed.x = Mathf.Abs(s.speed.x)*0.8;
else
if (s.x >= lw) s.speed.x = -Mathf.Abs(s.speed.x);
if (s.x >= lw) s.speed.x = -Mathf.Abs(s.speed.x)*0.8;

if (s.y < 0.0)
if (s.y <= 0.0)
{
s.speed.y = Mathf.Abs(s.speed.y);
if (s.speed.y < 1.0) s.speed.y = Random.Range(100,800);
s.speed.y = Mathf.Abs(s.speed.y) * 0.8;
s.speed.x = s.speed.x * 0.95;
//if (s.speed.y <= 1.0) s.speed.y = Random.Range(500,1200);
s.y = 0.0;
}
k++;
Expand All @@ -146,6 +150,23 @@ class BunnyMark extends Application implements IRenderable
}
}

if (Input.Down(KeyCode.Mouse2))
{
for (i in 0...rabbits.length)
{
var s : Sprite = rabbits[i];
var p : Vector2 = Vector2.temp.Set(s.x - mx, s.y - my);
var r : Float32 = Mathf.Clamp01((600 - p.length)/600.0);
if (r > 0)
{
p.Normalize();
var f : Float32 = Random.Range(600, 1500);
s.speed.x += p.x * r * f;
s.speed.y += p.y * r * f;
}
}
}


return true;
});
Expand Down
65 changes: 17 additions & 48 deletions Bunnymark/Haxor/source/bm/Stage.hx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import haxor.core.Asset;
import haxor.core.Enums.BlendMode;
import haxor.core.Enums.CullMode;
import haxor.core.Enums.PixelFormat;
import haxor.core.Enums.ShaderPrecision;
import haxor.graphics.material.Material;
import haxor.graphics.material.Shader;
import haxor.graphics.mesh.Mesh;
Expand Down Expand Up @@ -99,6 +100,8 @@ class Stage extends MeshRenderer
}
m_sm.Set("vertex", f32, 3);

trace("Stage> Mesh created with ["+(f32.length/18)+"] planes");

f32 = new FloatArray(c * plane.length);
k = 0;
for (i in 0...c)
Expand All @@ -115,30 +118,11 @@ class Stage extends MeshRenderer
}
m_sm.Set("position", f32, 3);

/*
f32 = cast m_sd.data.buffer;
k = 0;
var cl : Array<Color> = [Color.red, Color.yellow, Color.green, Color.cyan, Color.blue, Color.magenta];
for (i in 0...f32.length)
{
var pid: Int = i % 4;
var cid: Int = Std.int((i / 4) % cl.length);
var c : Color = cl[cid];
switch(pid)
{
case 0: f32.Set(k++, c.r);
case 1: f32.Set(k++, c.g);
case 2: f32.Set(k++, c.b);
case 3: f32.Set(k++, c.a);
}
}
//*/

m_sm.bounds = AABB3.temp.Set( -1000, 1000, -1000, 1000, -1000, 1000);
mesh = m_sm;
m_mat = new Material("StageMaterial");
m_mat.SetBlending(BlendMode.SrcAlpha, BlendMode.OneMinusSrcAlpha);
m_mat.blend = true;
//m_mat.SetBlending(BlendMode.SrcAlpha, BlendMode.OneMinusSrcAlpha);

m_mat.SetTexture("SpriteData", m_sd);
m_mat.SetFloat("SpriteDataSizeX", m_sd.width);
m_mat.SetFloat("SpriteDataSizeY", m_sd.height);
Expand All @@ -147,7 +131,9 @@ class Stage extends MeshRenderer
m_mat.SetFloat("Count", 0);
m_mat.cull = CullMode.Back;

var ss : Shader = new Shader(vs_stage, fs_stage);
var ss : Shader = new Shader(vs_stage, fs_stage);
ss.precision = ShaderPrecision.FragmentLow | ShaderPrecision.VertexLow;
ss.Compile();
m_mat.shader = ss;

material = m_mat;
Expand Down Expand Up @@ -202,7 +188,7 @@ class Stage extends MeshRenderer
private function OnSpriteBuild(s:Sprite):Void
{
s.__cid = ids.id;
s.__sdp = s.__cid * m_sd.data.channels;
s.__sdp = s.__cid * m_sd.data.channels;
OnSpriteTransform(s);
}
private function OnSpriteDestroy(s:Sprite):Void { ids.id = s.__cid; }
Expand All @@ -223,8 +209,6 @@ attribute vec3 vertex;
attribute vec3 position;

varying vec2 uv;
varying vec2 d_uv;
varying float v_id;

void main()
{
Expand All @@ -233,36 +217,22 @@ void main()
int count = int(Count);
if (int(sid) >= count)
{
v *= 0.0;
v += 10000.0;
v.z = -1000000000.0;
gl_Position = v;
return;
return;
}
v.z = -v.z / 100000.0;
v.z *= 0.0000001;

v_id = v.z;

vec2 d = vec2(0.0);
d.x = mod(sid, SpriteDataSizeX) / (SpriteDataSizeX);
d.y = (sid / SpriteDataSizeY) / (SpriteDataSizeY);

d_uv = d;
vec2 d = vec2(mod(sid, SpriteDataSizeX) / (SpriteDataSizeX),(sid / SpriteDataSizeY) / (SpriteDataSizeY));

vec4 vd = texture2D(SpriteData,d);

uv = v.xy;
uv.x = uv.x + 0.5;


float s
//= 1.0;
= vd.z;
//= Count / 500000.0;
//s = max(0.25, 1.0 - s);


float s = vd.z;
v.x = (v.x * SPRITE_W*s) + vd.x;
v.y = (v.y * SPRITE_H*s) + vd.y;// +d.y;

v.y = (v.y * SPRITE_H*s) + vd.y;
v = (v * ViewMatrix) * ProjectionMatrix;
gl_Position = v;
}
Expand All @@ -274,12 +244,11 @@ uniform sampler2D SpriteData;
uniform sampler2D Texture;
uniform float Count;
varying vec2 uv;
varying vec2 d_uv;
varying float v_id;

void main()
{
vec4 c = texture2D(Texture, uv);
if (c.a <= 0.008) { discard; }
gl_FragColor = c;
}
';
Expand Down