Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
d
d
×
@D v
d
out in
out inoutin
ラスタライザ
ラスタライザ
バーテックス
シェーダ
フラグメント
シェーダ
バーテックス
シェーダ
ジオメトリシ
ェーダ
フラグメント
シェーダ
MU
0
1
2
3
4
5
0
1
2
3
4
5
0
1
2
3
4
5
0
1
2
3
4
5
0
1
2
3
4
5
0
1
2
3
4
5
0
1
2
3
4
5
s x
0
1
2
3
4
5
GL_TRIANGLE_STRIP_ADJACENCY
0
1
2
3 4
5
6
7
0
1
2
3 4
5
6
7
0
1
2 3
4
5
6
7
8
910
11
6
7
8
9
10
11
GL_TRIA...
d
GL_LINES GL_LINES_ADJACENCY GL_TRIANGLES
GL_POINTS GL_LINE_STRIP
GL_TRIANGLES_ADJACENCY
GL_TRIANGLE_STRIP
GL_POINTS
d
描画する基本図形
GL_LINE_STRIP
入力基本図形
GL_LINES
出力基本図形
GL_LINE_STRIP
ジオメトリ
シェーダ
バーテックス
シェーダ 0
1
2
3
0
1 1
2 2
3
0
1 1
2 2
3
d
描画する基本図形
GL_LINE_STRIP_
ADJACENCY
入力基本図形
GL_LINES_ADJA
CENCY
出力基本図形
GL_LINE_STRIP
ジオメトリ
シェーダ
バーテックス
シェーダ
0
5
0 2
3
1
2
3...
04 7 5 9 3 86 5 9 12
@ : CB @ : CB
: 7B
: 7B (: 7 BCA:@
: 7 @
: 7B 36;357 5G
: 7B 36;357 5G
: 7 BCA:@ 36;357 5G
CA:3 7B
CA...
d n
• d n o nh
• PU MX P MY VT VUMU Y0
•
• NS M :U MNMX =3F 7 =7CAG DC@DC E7AC:57B
MX P MY 0
•
• NS M :U MNMX =3F 7 =7CAG ...
d
// d d
… d d e d ug
// d v
glProgramParameteri(program, GL_GEOMETRY_INPUT_TYPE, input);
// d m v
glProgramParameteri(pro...
d
• =3F 7 =7CAG DC@DC E7AC:57B
&( o nbw w
7 =7CAG E7AC:57B DC v i
• d m x
• 7TP EMX M o
• 7 =7CAG E7AC:57B DC o
d i V v
• ...
d d
#version 150 core
#extension GL_ARB_explicit_attrib_location : enable
uniform mat4 mc; // d
layout (location = 0) in v...
d
#version 150 core
layout (triangles) in;
layout (triangle_strip, max_vertices = 16) out;
in vec4 vc[]; // d d m
out vec4...
PU V
out in
out inoutin
ラスタライザ
ラスタライザ
バーテックス
シェーダ
フラグメント
シェーダ
バーテックス
シェーダ
ジオメトリシ
ェーダ
フラグメント
シェーダ
d
#version 150 core
#extension GL_ARB_explicit_attrib_location : enable
in vec4 cf; // m
layout (location = 0) out vec4 fc...
NS PU SMUN O
• d d m
• d r n s
• 7 =7CAG : @DC CG@7
• @ : CB
• NS PU SMUN O 1
• : 7B
• NS PU SMUN O 1 (
• : 7B 36;357 5G
•...
7TP EMX M
• v
• NS @VYP PVU l V
• 7 =7CAG DC@DC CG@7
• @ : CB
• 7TP EMX M p
• : 7 BCA:@
• 7TP EMX M p (
• CA:3 7 BCA:@
• 7...
7UL@XPTP P M
7UL@XPTP P M t i
EmitVertex()
EmitVertex()
EmitVertex()
EmitVertex()
EmitVertex()
EmitVertex()
EmitVertex()
7...
• d i pysi
• @ : CB t vc
• O Y/ NP O J VT VRVPR NNYIT SM
• tmtb d Y OMXM NMVT br
o k s vc
• VPU NMVT o k br o k pys
ic
• 3...
(0, 0, 1)
(0, 0, -1)
(-1, 0, 0)
(0, 1, 0)
(0, -1, 0)
(1, 0, 0)
÷ vc
t p
ysic
t pysic
CA:3 7 BCA:@
ii i
vc
Upcoming SlideShare
Loading in …5
×

ゲームグラフィックス特論 第14回

2,715 views

Published on

geometry shader

  • Be the first to comment

ゲームグラフィックス特論 第14回

  1. 1. d d
  2. 2. × @D v
  3. 3. d out in out inoutin ラスタライザ ラスタライザ バーテックス シェーダ フラグメント シェーダ バーテックス シェーダ ジオメトリシ ェーダ フラグメント シェーダ
  4. 4. MU 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5
  5. 5. s x 0 1 2 3 4 5 GL_TRIANGLE_STRIP_ADJACENCY 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 8 910 11 6 7 8 9 10 11 GL_TRIANGLES_ADJACENCY GL_LINE_STRIP_ADJACENCYGL_LINES_ADJACENCY
  6. 6. d GL_LINES GL_LINES_ADJACENCY GL_TRIANGLES GL_POINTS GL_LINE_STRIP GL_TRIANGLES_ADJACENCY GL_TRIANGLE_STRIP GL_POINTS
  7. 7. d 描画する基本図形 GL_LINE_STRIP 入力基本図形 GL_LINES 出力基本図形 GL_LINE_STRIP ジオメトリ シェーダ バーテックス シェーダ 0 1 2 3 0 1 1 2 2 3 0 1 1 2 2 3
  8. 8. d 描画する基本図形 GL_LINE_STRIP_ ADJACENCY 入力基本図形 GL_LINES_ADJA CENCY 出力基本図形 GL_LINE_STRIP ジオメトリ シェーダ バーテックス シェーダ 0 5 0 2 3 1 2 3 4 1 5 2 3 4 2 1 2 3 3 4 2 3 4 1
  9. 9. 04 7 5 9 3 86 5 9 12 @ : CB @ : CB : 7B : 7B (: 7 BCA:@ : 7 @ : 7B 36;357 5G : 7B 36;357 5G : 7 BCA:@ 36;357 5G CA:3 7B CA:3 7B )CA:3 7 83 CA:3 7 BCA:@ CA:3 7B 36;357 5G CA:3 7B 36;357 5G , CA:3 7 BCA:@ 36;357 5G
  10. 10. d n • d n o nh • PU MX P MY VT VUMU Y0 • • NS M :U MNMX =3F 7 =7CAG DC@DC E7AC:57B MX P MY 0 • • NS M :U MNMX =3F 7 =7CAG C C3 DC@DC 5 =@ 7 CB VT VUMU Y 0 • o • p i o n • VT VUMU Ya MX P MY i
  11. 11. d // d d … d d e d ug // d v glProgramParameteri(program, GL_GEOMETRY_INPUT_TYPE, input); // d m v glProgramParameteri(program, GL_GEOMETRY_OUTPUT_TYPE, output); // d n GLint vertices, components; // d n glGetIntegerv(GL_MAX_GEOMETRY_OUTPUT_VERTICES, &vertices); // d n glGetIntegerv(GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS, &components); components /= 12; // d out n vec4 3 t // d n v v if (vertices > components) vertices = components; glProgramParameteri(program, GL_GEOMETRY_VERTICES_OUT, vertices); // d …
  12. 12. d • =3F 7 =7CAG DC@DC E7AC:57B &( o nbw w 7 =7CAG E7AC:57B DC v i • d m x • 7TP EMX M o • 7 =7CAG E7AC:57B DC o d i V v • 7TP EMX M v x V n s • d d o j i layout(triangles) in; layout(triangle_strip, max_vertices = 10) out;
  13. 13. d d #version 150 core #extension GL_ARB_explicit_attrib_location : enable uniform mat4 mc; // d layout (location = 0) in vec4 pv; // ÷ layout (location = 1) in vec4 cv; // out vec4 vc; // d void main(void) { vc = cv; // d gl_Position = mc * pv; // ÷ d }
  14. 14. d #version 150 core layout (triangles) in; layout (triangle_strip, max_vertices = 16) out; in vec4 vc[]; // d d m out vec4 cf; // void main(void) { for (int i = 0; i < gl_in.length(); ++i) { cf = vc[i]; // gl_Position = gl_in[i].gl_Position; // ÷ EmitVertex(); } EndPrimitive(); } p d d m v d m v
  15. 15. PU V out in out inoutin ラスタライザ ラスタライザ バーテックス シェーダ フラグメント シェーダ バーテックス シェーダ ジオメトリシ ェーダ フラグメント シェーダ
  16. 16. d #version 150 core #extension GL_ARB_explicit_attrib_location : enable in vec4 cf; // m layout (location = 0) out vec4 fc; // void main(void) { fc = cf; }
  17. 17. NS PU SMUN O • d d m • d r n s • 7 =7CAG : @DC CG@7 • @ : CB • NS PU SMUN O 1 • : 7B • NS PU SMUN O 1 ( • : 7B 36;357 5G • NS PU SMUN O 1 • CA:3 7B • NS PU SMUN O 1 ) • CA:3 7B 36;357 5G • NS PU SMUN O 1 ,
  18. 18. 7TP EMX M • v • NS @VYP PVU l V • 7 =7CAG DC@DC CG@7 • @ : CB • 7TP EMX M p • : 7 BCA:@ • 7TP EMX M p ( • CA:3 7 BCA:@ • 7TP EMX M p ) • 7TP EMX M t gs i
  19. 19. 7UL@XPTP P M 7UL@XPTP P M t i EmitVertex() EmitVertex() EmitVertex() EmitVertex() EmitVertex() EmitVertex() EmitVertex() 7UL@XPTP P M tx EmitVertex() EmitVertex() EmitVertex() EmitVertex() EmitVertex() EmitVertex() EmitVertex() EndPrimitive(): 7 BCA:@ CA:3 7 BCA:@ v o
  20. 20. • d i pysi • @ : CB t vc • O Y/ NP O J VT VRVPR NNYIT SM • tmtb d Y OMXM NMVT br o k s vc • VPU NMVT o k br o k pys ic • 3,& 3.&) @5 d m . p i vc • VPU NMVT d d g pysic • VPU NMVT d t pysic • VRVP2Y_Y IRI_ITI I 20
  21. 21. (0, 0, 1) (0, 0, -1) (-1, 0, 0) (0, 1, 0) (0, -1, 0) (1, 0, 0) ÷ vc t p ysic t pysic CA:3 7 BCA:@ ii i vc

×