Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adds immediate and retained drawing modes in webgl. adds more webgl examples. #820

Merged
merged 36 commits into from Jul 25, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
26d1e6e
move wip matrix too
Jul 10, 2015
7d64670
separate buffer create function
Jul 10, 2015
a07ed20
prepare for immediate mode
Jul 10, 2015
394a14a
refine immediate mode
Jul 17, 2015
93dcee6
protect class from being updated to the website
Jul 17, 2015
b046ae4
merge upstream
Jul 17, 2015
aadff67
abstract away retained mode as well
Jul 17, 2015
a8eeff0
refinement
Jul 17, 2015
9e3bfe7
add interaction
Jul 17, 2015
279deeb
merge upstream
Jul 20, 2015
b8d84aa
add immediateMode experiment
Jul 20, 2015
c0d48a1
separate immediate mode further, and tweak shader
Jul 21, 2015
1830ce4
matrix uniforms should be in renderer3D
Jul 21, 2015
62fd78d
put aside stroke for now
Jul 21, 2015
71dcd71
put aside stroke for now
Jul 21, 2015
3f76d33
resolution set to 1000
Jul 21, 2015
6c1e0af
tweak examples
Jul 21, 2015
887f4d6
delete mat4.js
Jul 21, 2015
f7d48c9
fix bug in basicMaterial
Jul 21, 2015
9e71086
start on separates shaders
Jul 21, 2015
f24485d
rename files
Jul 21, 2015
6fe9678
start with light
Jul 21, 2015
06028bd
use color util
Jul 22, 2015
e484e6c
refine shaderStack push
Jul 22, 2015
a7014bb
refine immediate mode
Jul 22, 2015
5c59684
mark down todo
Jul 22, 2015
9b2b92c
Merge pull request #7 from karenpeng/master
indefinit Jul 23, 2015
1916f84
merge upstream
Jul 23, 2015
1324cf3
Merge branch 'master' of https://github.com/indefinit/p5.js
indefinit Jul 23, 2015
2df7df2
use brfs to read shaders
Jul 24, 2015
6782d75
merge upstream
Jul 24, 2015
aa6bfbc
rename shader.js
Jul 24, 2015
17a7328
create buffer just once for immediate mode
Jul 24, 2015
4f7762f
delete orignMode and tweak examples
Jul 24, 2015
c8da89c
Merge branch 'master' of https://github.com/processing/p5.js
indefinit Jul 24, 2015
8be2517
Merge branch 'master' of https://github.com/karenpeng/p5.js into kare…
indefinit Jul 24, 2015
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions Gruntfile.js
Expand Up @@ -157,6 +157,7 @@ module.exports = function(grunt) {
browserify: {
p5: {
options: {
transform: ['brfs'],
browserifyOptions: {
standalone: 'p5'
},
Expand Down
21 changes: 21 additions & 0 deletions examples/3d/center_origin/index.html
@@ -0,0 +1,21 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title></title>
<link rel="stylesheet" href="">
<script language="javascript" type="text/javascript" src="../../../lib/p5.js"></script>
<script language="javascript" type="text/javascript" src="sketch.js"></script>
<style>
html, body {margin:0; padding:0;}
</style>
</head>
<body>
<p style="position: absolute; width:400px; left:50%; margin-left: -200px; text-align: center; color:green;">[0, 0, 0] is in the center of the screen by default</p>
<script>
(function(){var script=document.createElement('script');script.onload=function(){var stats=new Stats();stats.domElement.style.cssText='position:fixed;left:0;top:0;z-index:10000';document.body.appendChild(stats.domElement);requestAnimationFrame(function loop(){stats.update();requestAnimationFrame(loop)});};script.src='http://rawgit.com/mrdoob/stats.js/master/build/stats.min.js';document.head.appendChild(script);})()
</script>

</body>
</html>
29 changes: 29 additions & 0 deletions examples/3d/center_origin/sketch.js
@@ -0,0 +1,29 @@
function setup(){
createCanvas(windowWidth, windowHeight, 'webgl');
}

function draw(){

background(255);

translate(0, 0, -800);
rotateY(frameCount * 0.01);

var gap = 200;
var w = 100;
var h = 100;

for(var i = -2; i < 3; i++){
for(var j = -2; j < 3; j++){
fill( (i+2) * 40, (j+2) * 40, 0);
quad(
i * gap, j * gap, 0,
i * gap + w, j * gap, 0,
i * gap, j * gap + h, 0,
i * gap + w, j * gap + h/2 * (sin(frameCount * 0.1 + i + j) + 1), 0
);
}
}


}
25 changes: 13 additions & 12 deletions examples/3d/geometry/sketch.js
Expand Up @@ -7,47 +7,48 @@ var theta = 0;
function draw(){
background(255, 255, 255, 255);

translate(-120, 0, -170);
translate(-width/2, 0, -800);
normalMaterial();
push();
rotateZ(theta * mouseX * 0.001);
rotateX(theta * mouseX * 0.001);
rotateY(theta * mouseX * 0.001);
plane(100, 100);
plane(80, 80);
pop();
translate(50, 0, 0);
translate(250, 0, 0);
push();
rotateZ(theta * mouseX * 0.001);
rotateX(theta * mouseX * 0.001);
rotateY(theta * mouseX * 0.001);
box(100, 100, 100);
box(80, 80, 80);
pop();
translate(50, 0, 0);
translate(250, 0, 0);
push();
rotateZ(theta * mouseX * 0.001);
rotateX(theta * mouseX * 0.001);
rotateY(theta * mouseX * 0.001);
cylinder(100, 100);
cylinder(80, 80);
pop();
translate(50, 0, 0);
translate(250, 0, 0);
push();
rotateZ(theta * mouseX * 0.001);
rotateX(theta * mouseX * 0.001);
rotateY(theta * mouseX * 0.001);
cone(100, 100);
cone(80, 80);
pop();
translate(50, 0, 0);
translate(250, 0, 0);
push();
rotateZ(theta * mouseX * 0.001);
rotateX(theta * mouseX * 0.001);
rotateY(theta * mouseX * 0.001);
torus(100, 20);
torus(80, 20);
pop();
translate(50, 0, 0);
translate(250, 0, 0);
push();
rotateZ(theta * mouseX * 0.001);
rotateX(theta * mouseX * 0.001);
rotateY(theta * mouseX * 0.001);
sphere(100, 100);
sphere(80, 80);
pop();
theta += 0.05;
}
File renamed without changes.
58 changes: 58 additions & 0 deletions examples/3d/immediateMode/sketch.js
@@ -0,0 +1,58 @@
var theta = 0;

function setup(){
createCanvas(windowWidth, windowHeight, 'webgl');
}

function draw(){

background('white');
colorMode(HSB);

translate(0, 0, -1000);

rotateY(frameCount * 0.01);

//point
stroke(0, 200, 200);
point(0, 0, 0);

//lines
translate(100, 0, 0);
push();
rotateX(frameCount * 0.01);
for(var i = 0 ; i < 12; i++){
var offset = i * PI / 6;
fill(i * 20, 100, 100);
line(0, 0, 0, 200 * sin(offset + frameCount*0.01), 200 * cos(offset + frameCount*0.01), 0);
}
pop();


//triangles
translate(400, 0, 0);
push();
for(var i = 0; i < 3; i++){
fill(i * 30 + 200, 100, 100);
translate(100, 50, 0);
triangle(
100, 0, 0,
60 * sin(frameCount * 0.1 + i), 0, 0,
0, 100, 0);
}
pop();


//triangle strip
translate(200, 0, 0);
for(var i = 0; i < 30; i++){
fill(i * 10, 120, 120);
translate(100, -50, 0);
beginShape('TRIANGLE_STRIP')
vertex(0, 0, (cos(frameCount * 0.1 + i) + 1) * 100);
vertex(0, 200, 100);
vertex(100, 100, 100);
vertex(100, 0, (sin(frameCount * 0.1 + i) + 1) * 100);
endShape();
}
}
4 changes: 2 additions & 2 deletions examples/3d/interaction/index.html
Expand Up @@ -12,10 +12,10 @@
</style>
</head>
<body>
<p style="position: absolute; width:300px; left:50%; margin-left: -150px; color:green;">Press Mouse To Toggle The World</p>
<p style="position: absolute; width:300px; left:50%; margin-left: -150px; color:green; text-align: center;">Press Mouse To Toggle The World</p>
<script>
(function(){var script=document.createElement('script');script.onload=function(){var stats=new Stats();stats.domElement.style.cssText='position:fixed;left:0;top:0;z-index:10000';document.body.appendChild(stats.domElement);requestAnimationFrame(function loop(){stats.update();requestAnimationFrame(loop)});};script.src='http://rawgit.com/mrdoob/stats.js/master/build/stats.min.js';document.head.appendChild(script);})()
</script>

</body>
</html>
</html>
15 changes: 10 additions & 5 deletions examples/3d/interaction/sketch.js
Expand Up @@ -4,22 +4,27 @@ function setup(){

function draw(){
background(250, 250, 250, 255);
var radius = width / 6;
translate(-10, 0, -200);
var radius = width;
translate(0, 0, -1600);
orbitControl();

if(!mouseIsPressed){
rotateY(frameCount * 0.001);
}

normalMaterial();
for(var i = 0; i <= 20; i++){
for(var j = 0; j <= 20; j++){
push();
var a = j/20 * PI;
var b = i/20 * PI
translate(sin(2 * a) * radius * sin(b), cos(b) * 50 , cos(2 * a) * radius * sin(b));
if(j % 2 === 0) box(60, 60, 60);
else cone(60, 60);
translate(sin(2 * a) * radius * sin(b), cos(b) * radius / 2 , cos(2 * a) * radius * sin(b));
if(j % 2 === 0) {
box(60, 60, 60);
}
else{
cone(60, 60);
}
pop();
}
}
Expand Down
20 changes: 20 additions & 0 deletions examples/3d/material/index.html
@@ -0,0 +1,20 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title></title>
<link rel="stylesheet" href="">
<script language="javascript" type="text/javascript" src="../../../lib/p5.js"></script>
<script language="javascript" type="text/javascript" src="sketch.js"></script>
<style>
html, body {margin:0; padding:0;}
</style>
</head>
<body>
<script>
(function(){var script=document.createElement('script');script.onload=function(){var stats=new Stats();stats.domElement.style.cssText='position:fixed;left:0;top:0;z-index:10000';document.body.appendChild(stats.domElement);requestAnimationFrame(function loop(){stats.update();requestAnimationFrame(loop)});};script.src='http://rawgit.com/mrdoob/stats.js/master/build/stats.min.js';document.head.appendChild(script);})()
</script>

</body>
</html>
15 changes: 8 additions & 7 deletions examples/3d/light/sketch.js → examples/3d/material/sketch.js
Expand Up @@ -6,33 +6,34 @@ function setup(){

function draw(){
background(250, 250, 250, 255);

translate(-10, 0, -100);
// directionalLight(153, 153, 153, .5, 0, -1);
// ambientLight(153, 102, 0);
// ambient(51, 26, 0);
translate(-100, 0, -1000);
push();
rotateX(theta * 0.1);
rotateZ(theta);
rotateY(theta * 0.1);
normalMaterial();
box(60, 60, 60);
pop();
translate(30, 0, 0);
basicMaterial();
translate(300, 0, 0);
push();
rotateX(-theta * 0.1);
rotateZ(-theta);
rotateY(-theta * 0.1);
normalMaterial();
sphere(60);
translate(30, 0, 0);
translate(300, 0, 0);
basicMaterial(0, 255, 0);
box(60,60,60);
pop();
translate(30, 0, 0);
normalMaterial();
translate(300, 0, 0);
push();
rotateX(theta * 0.1);
rotateZ(theta);
rotateY(theta * 0.1);
basicMaterial(250, 0, 200);
plane(60, 60);
pop();
theta += 0.03;
Expand Down
1 change: 1 addition & 0 deletions examples/3d/performance/index.html
Expand Up @@ -11,6 +11,7 @@
html, body {margin:0; padding:0;}
</style>
</head>
<p style="position: absolute; width:300px; left:50%; text-align: center; margin-left: -150px; color:green;">1000 spheres, how's the speed?</p>
<body>
<script>
(function(){var script=document.createElement('script');script.onload=function(){var stats=new Stats();stats.domElement.style.cssText='position:fixed;left:0;top:0;z-index:10000';document.body.appendChild(stats.domElement);requestAnimationFrame(function loop(){stats.update();requestAnimationFrame(loop)});};script.src='http://rawgit.com/mrdoob/stats.js/master/build/stats.min.js';document.head.appendChild(script);})()
Expand Down
11 changes: 6 additions & 5 deletions examples/3d/performance/sketch.js
Expand Up @@ -7,13 +7,14 @@ function setup(){
function draw(){
background(250, 250, 250, 255);

translate(-10, 0, -100);
translate(0, 0, -1500);
normalMaterial();
rotateY(frameCount * 0.01);

for(var j = 0; j < 5; j++){
push();
for(var i = 0; i < 100; i++){
translate(sin(theta + j) * 4, sin(theta + j) * 4, i * 0.001);
rotateX(theta * 0.1);
rotateY(theta);
for(var i = 0; i < 200; i++){
translate(sin(theta + j) * 100, sin(theta + j) * 100, i * 0.1);
rotateZ(theta * 0.2);
push();
sphere(8);
Expand Down
21 changes: 21 additions & 0 deletions examples/3d/topleft_origin/index.html
@@ -0,0 +1,21 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title></title>
<link rel="stylesheet" href="">
<script language="javascript" type="text/javascript" src="../../../lib/p5.js"></script>
<script language="javascript" type="text/javascript" src="sketch.js"></script>
<style>
html, body {margin:0; padding:0;}
</style>
</head>
<body>
<p style="position: absolute; width:300px; left:50%; margin-left: -150px; text-align: center; color:green;">[0, 0, 0] is in the top left corner now</p>
<script>
(function(){var script=document.createElement('script');script.onload=function(){var stats=new Stats();stats.domElement.style.cssText='position:fixed;left:0;top:0;z-index:10000';document.body.appendChild(stats.domElement);requestAnimationFrame(function loop(){stats.update();requestAnimationFrame(loop)});};script.src='http://rawgit.com/mrdoob/stats.js/master/build/stats.min.js';document.head.appendChild(script);})()
</script>

</body>
</html>
30 changes: 30 additions & 0 deletions examples/3d/topleft_origin/sketch.js
@@ -0,0 +1,30 @@
function setup(){
createCanvas(windowWidth, windowHeight, 'webgl');
}

function draw(){

background(255);

translate( -width/2, -height/2, -600);

rotateY(frameCount * 0.01);

var gap = 200;
var w = 100;
var h = 100;

for(var i = 0; i < 5; i++){
for(var j = 0; j < 5; j++){
fill( i * 40, j * 40, 0);
quad(
i * gap, j * gap, 0,
i * gap + w, j * gap, 0,
i * gap, j * gap + h, 0,
i * gap + w, j * gap + h/2 * (sin(frameCount * 0.1 + i + j) + 1), 0
);
}
}


}
1 change: 1 addition & 0 deletions package.json
Expand Up @@ -39,6 +39,7 @@
}
],
"dependencies": {
"brfs": "^1.4.0",
"reqwest": "^1.1.5"
},
"main": "./lib/p5.js",
Expand Down