{"id":475,"date":"2007-09-06T14:27:00","date_gmt":"2007-09-06T14:27:00","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=475"},"modified":"2017-01-29T11:11:25","modified_gmt":"2017-01-29T02:11:25","slug":"opengl-shader-17","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=475","title":{"rendered":"OpenGL Shader &#8211; 17"},"content":{"rendered":"<p><strong>GLSL Samples &#8211; Hello World in GLSL<\/strong><br \/>\n\uc6d0\ubb38 : <a href=\"http:\/\/www.lighthouse3d.com\/opengl\/glsl\/index.php?minimal\">http:\/\/www.lighthouse3d.com\/opengl\/glsl\/index.php?minimal<\/a><\/p>\n<p>\uc774 \uc139\uc158\uc740 Hello World\uc5d0 \ub300\ud55c GLSL \ud310\uc774\ub2e4. \uac00\uc7a5 \uae30\ubcf8\uc801\uc778 \ub0b4\uc6a9\uc744 \uc218\ud589\ud558\ub294 \uc250\uc774\ub354\ub97c \uc0b4\ud3b4\ubcfc \uac83\uc774\ub2e4 : \ubc84\ud14d\uc2a4\uc758 \ubcc0\ud658, \ub2e8\uc77c \uc0c9\uc0c1\uc73c\ub85c \ud504\ub9ac\ubbf8\ud2f0\ube0c \ub80c\ub354\ub9c1\ud558\uc5ec \ud654\uba74 \ud45c\uc2dc.<\/p>\n<p><strong>\ubc84\ud14d\uc2a4 \uc250\uc774\ub354<\/strong><br \/>\n\uc774\uc804 \uc139\uc158\uc911\uc5d0 \ubc84\ud14d\uc2a4 \uc250\uc774\ub354 \ubd80\ubd84\uc5d0\uc11c \uc5b8\uae09\ud588\ub4ef\uc774, \ubc84\ud14d\uc2a4 \uc250\uc774\ub354\ub294 \ubc84\ud14d\uc2a4\uc758 \ubcc0\ud658\uc744 \ub2f4\ub2f9\ud55c\ub2e4. OpenGL\uc758 \uace0\uc815\uae30\ub2a5\uacfc \ub3d9\uc77c\ud55c \ub0b4\uc6a9\uc744 \uc218\ud589\ud558\ub294 \ubc84\ud14d\uc2a4\uc758 \ubcc0\ud658\uc744 \uc218\ud589\ud558\ub294 \uc250\uc774\ub354\ub97c \uc0b4\ud3b4\ubcfc \uac83\uc774\ub2e4.<\/p>\n<p>\uace0\uc815\uae30\ub2a5\uc740 \ub2e4\uc74c\uacfc \uac19\uc774 \ubaa8\ub378\ubdf0 \ud589\ub82c\uacfc \ud22c\uc601\ud589\ub82c\uc5d0 \uc758\ud574 \ubcc0\ud658\uc744 \uc218\ud589\ud55c\ub2e4.<\/p>\n<div align=\"center\"><strong>vTrans = projection * modelview * incomingVertex<\/strong><\/div>\n<p>GLSL\uc5d0\uc11c \uc704\uc758 \ub0b4\uc6a9\uc744 \uc218\ud589\ud558\ub294 \ucf54\ub4dc\ub97c \uc791\uc131\ud558\ub824\uba74 \ubaa8\ub378\ubdf0 \ud589\ub82c\uacfc \ud22c\uc601\ud589\ub82c\uc744 \uc5bb\uc744 \uc218 \uc788\ub3c4\ub85d OpenGL\uc5d0 \uc811\uadfc\ud560 \ud544\uc694\uac00 \uc788\ub2e4. \uc774\uc804\uc5d0 \uc5b8\uae09\ud588\ub4ef\uc774, OpenGL\uc758 \uc0c1\ud0dc \uc911 \uc77c\ubd80\ub97c GLSL\uc5d0\uc11c \uc811\uadfc\ud560 \uc218 \uc788\ub294\ub370, \uc8fc\ub85c \uc5b8\uae09\ud55c \ud22c\uc601\ud589\ub82c\uacfc \ubaa8\ub378\ubdf0\ud589\ub82c\uc774\ub2e4. \ud589\ub82c\uc740 \uc774\ubbf8 \uc815\uc758\ub41c Uniform \ubcc0\uc218\ub97c \ud1b5\ud574\uc11c \uc81c\uacf5\ub41c\ub2e4.<\/p>\n<pre><code class=\"html\">uniform mat4 gl_ModelViewMatrix;\r\nuniform mat4 gl_ProjectionMatrix;<\/code><\/pre>\n<p>\ud558\ub098 \ub354 \ud544\uc694\ud55c \uac83\uc740 \uc785\ub825 \ubc84\ud14d\uc2a4\uc5d0 \uc811\uadfc\ud558\ub294 \uac83\uc774\ub2e4. \uc774\ub7f0 \ubc84\ud14d\uc2a4\ub294 \ud558\ub098\uc529 \ud558\ub098\uc529 \ubc84\ud14d\uc2a4 \uc250\uc774\ub354\uc5d0 \uc811\uadfc\ub418\ub294\ub370 Attribute \ubcc0\uc218\ub97c \ud1b5\ud574\uc11c \uc81c\uacf5\ub41c\ub2e4.<\/p>\n<pre><code class=\"html\">attribute vec4 gl_Vertex;<\/code><\/pre>\n<p>\ud589\ub82c\uc5d0 \uc758\ud574 \ubcc0\ud658\ub41c \ubc84\ud14d\uc2a4\ub97c \ucd9c\ub825\ud558\uae30 \uc704\ud574\uc11c, \uc250\uc774\ub354\ub294 \ubc18\ub4dc\uc2dc \ubbf8\ub9ac \uc815\uc758\ub41c \ubcc0\uc218\uc778 gl_Position\uc744 \uc0ac\uc6a9\ud574\uc57c \ud558\uba70 gl_Position\uc740 vec4\ub85c \uc120\uc5b8\ub41c \ubcc0\uc218\ub2e4.<\/p>\n<p>\uc704\ucc98\ub7fc \ud55c\ub2e4\uba74, \uc774\uc81c \ubc84\ud14d\uc2a4 \uc250\uc774\ub354\ub97c \uc791\uc131\ud558\ub294\uac8c \uac00\ub2a5\ud558\ub2e4. \ud558\uc9c0\ub9cc \uc544\uc9c1\uc740 \ubc84\ud14d\uc2a4 \ubcc0\ud658 \uc5f0\uc0b0\ub9cc \uac00\ub2a5\ud558\ub2e4. \uc8fc\uc758\ud560 \uac83\uc740 \ubc84\ud14d\uc2a4 \ubcc0\ud658 \uc774\uc678\uc758 \ub2e4\ub978 \uae30\ub2a5\uc740 \uc791\ub3d9\ud558\uc9c0 \uc54a\ub294\ub370, \uc608\ub97c\ub4e4\uc5b4 \ube5b\uacc4\uc0b0\uc740 \uc218\ud589\ub418\uc9c0 \uc54a\ub294\ub2e4.<\/p>\n<p>\ubc84\ud14d\uc2a4 \uc250\uc774\ub354\ub294 main \ud568\uc218\ub97c \uac00\uc838\uc57c\ub9cc \ud55c\ub2e4.<\/p>\n<pre><code class=\"html\">void main()\r\n{\r\n    gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex;\r\n}<\/code><\/pre>\n<p>\uc704\uc758 \ucf54\ub4dc\uc5d0\uc11c, \ud22c\uc601\ud589\ub82c\uc740 \ubaa8\ub4e0 \ubc84\ud14d\uc2a4\uc5d0 \ub300\ud574\uc11c \ubaa8\ub378\ubdf0\ud589\ub82c\uacfc \uacf1\ud574\uc9c0\ub294\ub370, \uc774\uac83\uc740 \ubd84\uba85\uc774 \uc2dc\uac04 \ub0ad\ube44\ub2e4. \uc65c\ub0d0\ud558\uba74 \ud22c\uc601\ud589\ub82c\uacfc \ubaa8\ub378\ubdf0\ud589\ub82c\uc740 \ubaa8\ub4e0 \ubc84\ud14d\uc2a4\uc5d0 \ub300\ud574\uc11c \ubcc0\ud558\uc9c0 \uc54a\ub294\ub2e4. \uc774 \ud589\ub82c\ub4e4\uc740 Uniform \ubcc0\uc218\ub2e4.<\/p>\n<p>GLSL\uc740 \uba87\uac1c\uc758 \ud30c\uc0dd\ub41c \ud589\ub82c\uc744 \uc81c\uacf5\ud558\ub294\ub370, \ubc14\ub85c gl_ModelViewProjecteionMatrix\ub85c\uc368, \ud22c\uc601\ud589\ub82c\uacfc \ubaa8\ub378\ubdf0\ud589\ub82c\uc744 \uacf1\ud55c \uacb0\uacfc \ub9e4\ud2b8\ub9ad\uc2a4\uc774\ub2e4. \uc774 \ubcc0\uc218\ub97c \uc0ac\uc6a9\ud574 \ub2e4\uc2dc \ucf54\ub4dc\ub97c \uc791\uc131\ud558\uba74&#8230;<\/p>\n<pre><code class=\"html\">void main()\r\n{\r\n    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;\r\n}<\/code><\/pre>\n<p>\uc704\uc758 \ub450 main() \ud568\uc218\uc5d0 \ub300\ud55c \uc250\uc774\ub354\uc758 \ucd5c\uc885 \uacb0\uacfc\ub294 \ub3d9\uc77c\ud558\ub2e4. \uadf8\ub7f0\ub370 \uace0\uc815\uae30\ub2a5\uacfc \ub3d9\uc77c\ud55c \ubcc0\ud658\uc744 \ubcf4\uc7a5\ud558\ub294\uac00? \uc74c&#8230; \uc774\ub860\uc801\uc73c\ub85c \uadf8\ub807\ub2e4. \uadf8\ub7ec\ub098 \ubc84\ud14d\uc2a4\uc758 \ubcc0\ud658\uc758 \uc2e4\uc81c \uc808\ucc28\ub294 \uc5ec\uae30\uc640 \ub2ec\ub9ac \ub3d9\uc77c\ud55c \uc21c\uc11c\ub97c \ub530\ub974\uc9c0 \uc54a\ub294\ub2e4. \uc774\uac83\uc740 \ubcf4\ud1b5 \uadf8\ub798\ud53d \uce74\ub4dc\uc5d0 \ub9e4\uc6b0 \ucd5c\uc801\ud654\ub41c \uc791\uc5c5\uc778\ub370, \ucd5c\uc801\ud654\uc758 \uc774\uc810\uc744 \ucde8\ud558\uae30 \uc704\ud574 \ud558\ub098\uc758 \ud2b9\ubcc4\ud55c \uae30\ub2a5\uc774 \uc81c\uacf5\ub41c\ub2e4. \uc774 \uae30\ub2a5\uc758 \ub610 \ub2e4\ub978 \uc774\uc720\ub294 float \ub370\uc774\ud130 \ud0c0\uc785\uc758 \uc815\ubc00\ub3c4\uc5d0 \uc81c\uc57d\uc774 \uc788\uae30 \ub54c\ubb38\uc774\ub2e4. \uacc4\uc0b0\uc774 \ub2e4\ub978 \uc21c\uc11c\ub85c \uc774\ub904\uc9c8\ub54c, \uc774 \uc81c\ud55c\ub41c \uc815\ubc00\ub3c4\ub85c \uc778\ud574 \ub2e4\ub978 \uacb0\uacfc\uac00 \uc5bb\uc5b4\uc9c4\ub2e4. \uadf8\ub798\uc11c GLSL\uc740 \ucd5c\uace0\uc758 \uc218\ud589\uc18d\ub3c4\ubfd0\ub9cc \uc544\ub2c8\ub77c \uace0\uc815\uae30\ub2a5\uacfc \ub3d9\uc77c\ud55c \uacb0\uacfc\ub97c \ud56d\uc0c1 \uc5bb\uc744 \uc218 \uc788\ub294 \ud568\uc218\ub97c \uc81c\uacf5\ud55c\ub2e4. \ubc14\ub85c \ub9c8\ubc95\uacfc \uac19\uc740 \uadf8 \ud568\uc218\ub294:<\/p>\n<pre><code class=\"html\">vec4 ftransform(void);<\/code><\/pre>\n<p>\uc774 \ud568\uc218\ub294 \uc785\ub825\ubc1b\uc740 \ubc84\ud14d\uc2a4\ub97c \ubcc0\ud658\ud55c \uacb0\uacfc\ub97c \ubc18\ud658\ud558\uba70, \uace0\uc815\uae30\ub2a5\uacfc \ub3d9\uc77c\ud55c \ub2e8\uacc4\ub97c \uc218\ud589\ud574 \uace0\uc815\uae30\ub2a5\uacfc \ub3d9\uc77c\ud55c \uacb0\uacfc\ub97c \uc81c\uacf5\ud55c\ub2e4. \uc774\uc81c \uc250\uc774\ub354\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \uc7ac\uc791\uc131\ub420 \uc218 \uc788\ub2e4.<\/p>\n<pre><code class=\"html\">void main()\r\n{\r\n    gl_Position = ftransform();\r\n}<\/code><\/pre>\n<p><strong>\ud504\ub808\uadf8\uba3c\ud2b8 \uc250\uc774\ub354<\/strong><br \/>\n\ud504\ub808\uadf8\uba3c\ud2b8 \uc250\uc774\ub354 \uc5ed\uc2dc \ud504\ub808\uadf8\uba3c\ud2b8\uc758 \uc0c9\uc0c1\uc744 \uc124\uc815\ud560 \uc218 \uc788\ub294 \ubbf8\ub9ac \uc815\uc758\ub41c \ubcc0\uc218\ub97c \uac00\uc9c0\uace0 \uc788\ub2e4: gl_FragColor. \ubc84\ud14d\uc2a4 \uc250\uc774\ub354\uc758 \uacbd\uc6b0\uc5d0\uc11c\ucc98\ub7fc, \ud504\ub808\uadf8\uba3c\ud2b8 \uc250\uc774\ub354 \uc5ed\uc2dc main \ud568\uc218\ub97c \uac00\uc9c0\uace0 \uc788\ub2e4. \ub2e4\uc74c \ucf54\ub4dc\ub294 \ud478\ub974\uc2a4\ub984\ud55c \uc0c9\uc0c1\uc73c\ub85c \ubaa8\ub4e0 \ud504\ub808\uadf8\uba3c\ud2b8\ub97c \uadf8\ub9ac\ub294 \ud504\ub808\uadf8\uba3c\ud2b8 \uc250\uc774\ub354 \ucf54\ub4dc\uc774\ub2e4.<\/p>\n<pre><code class=\"html\">void main()\r\n{\r\n\tgl_FragColor = vec4(0.4, 0.4, 0.8, 1.0);\r\n}<\/code><\/pre>\n<p>\uc704\uc758 \ubc84\ud14d\uc2a4 \uc250\uc774\ub354\uc640 \ud504\ub808\uadf8\uba3c\ud2b8 \uc250\uc774\ub354\ub97c \uc801\uc6a9\ud55c \uacb0\uacfc\ub294 \uc544\ub798\uc640 \uac19\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1296800717.jpg\" alt=\"\" width=\"328\" height=\"354\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>GLSL Samples &#8211; Hello World in GLSL \uc6d0\ubb38 : http:\/\/www.lighthouse3d.com\/opengl\/glsl\/index.php?minimal \uc774 \uc139\uc158\uc740 Hello World\uc5d0 \ub300\ud55c GLSL \ud310\uc774\ub2e4. \uac00\uc7a5 \uae30\ubcf8\uc801\uc778 \ub0b4\uc6a9\uc744 \uc218\ud589\ud558\ub294 \uc250\uc774\ub354\ub97c \uc0b4\ud3b4\ubcfc \uac83\uc774\ub2e4 : \ubc84\ud14d\uc2a4\uc758 \ubcc0\ud658, \ub2e8\uc77c \uc0c9\uc0c1\uc73c\ub85c \ud504\ub9ac\ubbf8\ud2f0\ube0c \ub80c\ub354\ub9c1\ud558\uc5ec \ud654\uba74 \ud45c\uc2dc. \ubc84\ud14d\uc2a4 \uc250\uc774\ub354 \uc774\uc804 \uc139\uc158\uc911\uc5d0 \ubc84\ud14d\uc2a4 \uc250\uc774\ub354 \ubd80\ubd84\uc5d0\uc11c \uc5b8\uae09\ud588\ub4ef\uc774, \ubc84\ud14d\uc2a4 \uc250\uc774\ub354\ub294 \ubc84\ud14d\uc2a4\uc758 \ubcc0\ud658\uc744 \ub2f4\ub2f9\ud55c\ub2e4. OpenGL\uc758 \uace0\uc815\uae30\ub2a5\uacfc \ub3d9\uc77c\ud55c \ub0b4\uc6a9\uc744 \uc218\ud589\ud558\ub294 \ubc84\ud14d\uc2a4\uc758 \ubcc0\ud658\uc744 \uc218\ud589\ud558\ub294 \uc250\uc774\ub354\ub97c &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=475\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;OpenGL Shader &#8211; 17&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[3,25],"class_list":["post-475","post","type-post","status-publish","format-standard","hentry","category-opengl","tag-opengl","tag-shader"],"_links":{"self":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/475","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=475"}],"version-history":[{"count":1,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/475\/revisions"}],"predecessor-version":[{"id":3578,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/475\/revisions\/3578"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=475"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}