Merge pull request #1630 from YunfeiBai/master

Update the projective texture shader to solve the texture interpolati…
This commit is contained in:
erwincoumans
2018-04-09 20:55:37 -07:00
committed by GitHub
5 changed files with 9 additions and 18 deletions

View File

@@ -6,13 +6,9 @@ in Fragment
vec4 color; vec4 color;
} fragment; } fragment;
in Vert
{
vec2 texcoord;
} vert;
uniform sampler2D Diffuse; uniform sampler2D Diffuse;
uniform mat4 ViewMatrixInverse; uniform mat4 ViewMatrixInverse;
uniform mat4 TextureMVP;
in vec3 lightPos,cameraPosition, normal,ambient; in vec3 lightPos,cameraPosition, normal,ambient;
in vec4 vertexPos; in vec4 vertexPos;
@@ -23,10 +19,11 @@ in vec3 materialSpecularColor;
out vec4 color; out vec4 color;
void main(void) void main(void)
{ {
vec4 texel = fragment.color*texture(Diffuse,vert.texcoord.xy); vec4 projcoords = TextureMVP * vertexPos;
vec2 texturecoords = projcoords.xy/max(projcoords.z,0.1);
vec4 texel = fragment.color*texture(Diffuse,texturecoords);
vec3 ct,cf; vec3 ct,cf;
float intensity,at,af; float intensity,at,af;
if (fragment.color.w==0) if (fragment.color.w==0)

View File

@@ -6,12 +6,9 @@ static const char* projectiveTextureInstancingFragmentShader= \
"{\n" "{\n"
" vec4 color;\n" " vec4 color;\n"
"} fragment;\n" "} fragment;\n"
"in Vert\n"
"{\n"
" vec2 texcoord;\n"
"} vert;\n"
"uniform sampler2D Diffuse;\n" "uniform sampler2D Diffuse;\n"
"uniform mat4 ViewMatrixInverse;\n" "uniform mat4 ViewMatrixInverse;\n"
"uniform mat4 TextureMVP;\n"
"in vec3 lightPos,cameraPosition, normal,ambient;\n" "in vec3 lightPos,cameraPosition, normal,ambient;\n"
"in vec4 vertexPos;\n" "in vec4 vertexPos;\n"
"in float materialShininess;\n" "in float materialShininess;\n"
@@ -20,7 +17,9 @@ static const char* projectiveTextureInstancingFragmentShader= \
"out vec4 color;\n" "out vec4 color;\n"
"void main(void)\n" "void main(void)\n"
"{\n" "{\n"
" vec4 texel = fragment.color*texture(Diffuse,vert.texcoord.xy);\n" " vec4 projcoords = TextureMVP * vertexPos;\n"
" vec2 texturecoords = projcoords.xy/max(projcoords.z,0.1);\n"
" vec4 texel = fragment.color*texture(Diffuse,texturecoords);\n"
" vec3 ct,cf;\n" " vec3 ct,cf;\n"
" float intensity,at,af;\n" " float intensity,at,af;\n"
" if (fragment.color.w==0)\n" " if (fragment.color.w==0)\n"

View File

@@ -93,7 +93,5 @@ void main(void)
gl_Position = vertexLoc; gl_Position = vertexLoc;
fragment.color = instance_color; fragment.color = instance_color;
vec4 projcoords = TextureMVP * vec4((instance_position+localcoord).xyz,1);
vert.texcoord = projcoords.xy/projcoords.z;
} }

View File

@@ -80,7 +80,5 @@ static const char* projectiveTextureInstancingVertexShader= \
" vec4 vertexLoc = MVP* vec4((instance_position+localcoord).xyz,1);\n" " vec4 vertexLoc = MVP* vec4((instance_position+localcoord).xyz,1);\n"
" gl_Position = vertexLoc;\n" " gl_Position = vertexLoc;\n"
" fragment.color = instance_color;\n" " fragment.color = instance_color;\n"
" vec4 projcoords = TextureMVP * vec4((instance_position+localcoord).xyz,1);\n"
" vert.texcoord = projcoords.xy/projcoords.z;\n"
"}\n" "}\n"
; ;

View File

@@ -1,6 +1,5 @@
import pybullet as p import pybullet as p
from time import sleep from time import sleep
from PIL import Image
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import numpy as np import numpy as np
@@ -9,7 +8,7 @@ physicsClient = p.connect(p.GUI)
p.setGravity(0,0,0) p.setGravity(0,0,0)
bearStartPos1 = [-3.3,0,0] bearStartPos1 = [-3.3,0,0]
bearStartOrientation1 = p.getQuaternionFromEuler([0,0,0]) bearStartOrientation1 = p.getQuaternionFromEuler([0,0,0])
bearId1 = p.loadURDF("teddy_large.urdf", bearStartPos1, bearStartOrientation1) bearId1 = p.loadURDF("plane.urdf", bearStartPos1, bearStartOrientation1)
bearStartPos2 = [0,0,0] bearStartPos2 = [0,0,0]
bearStartOrientation2 = p.getQuaternionFromEuler([0,0,0]) bearStartOrientation2 = p.getQuaternionFromEuler([0,0,0])
bearId2 = p.loadURDF("teddy_large.urdf",bearStartPos2, bearStartOrientation2) bearId2 = p.loadURDF("teddy_large.urdf",bearStartPos2, bearStartOrientation2)