{"id":514,"date":"2007-10-01T14:04:30","date_gmt":"2007-10-01T14:04:30","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=514"},"modified":"2017-01-29T11:03:51","modified_gmt":"2017-01-29T02:03:51","slug":"opengl-shader-22-1","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=514","title":{"rendered":"OpenGL Shader &#8211; 23"},"content":{"rendered":"<p><strong>GLSL \uc608\uc81c &#8211; \ud230\uc250\uc774\ub529 \ub9c8\uc9c0\ub9c9 \uc7a5.. (4\/4)<\/strong><br \/>\n\uc6d0\ubcf8 : <a href=\"http:\/\/www.lighthouse3d.com\/opengl\/glsl\/index.php?toon3\">http:\/\/www.lighthouse3d.com\/opengl\/glsl\/index.php?toon3<\/a><\/p>\n<p>\ud230\uc250\uc774\ub529\uc744 \ub05d\ub0b4\uae30 \uc804\uc5d0 \ud55c\uac00\uc9c0 \ub354 \uc0b4\ud3b4\ubcf4\uc790 : lightDir \ubcc0\uc218\ub97c \uc0ac\uc6a9\ud558\ub294 \ub300\uc2e0\uc5d0 OpenGL \ube5b\uc744 \uc0ac\uc6a9\ud55c \uac83. OpenGL\uc5d0\uc11c \ube5b\uc744 \ud558\ub098 \uc815\uc758\ud558\uace0 \uc774 \ube5b\uc758 \ubc29\ud5a5\uc744 \uc250\uc774\ub354\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 \ubc29\ubc95\uc774\ub2e4. \uc8fc\uc758: glEnable\uc744 \uc0ac\uc6a9\ud574\uc11c \ube5b\uc744 \ud65c\uc131\ud654\ud560 \ud544\uc694\uac00 \uc5c6\ub294\ub370, OpenGL\uc5d0\uc11c \uc774 \ube5b\uc744 \uc2e4\uc81c\ub85c \uc0ac\uc6a9\ud558\uc9c0\ub294 \uc54a\uc744 \uac83\uc774\uae30 \ub54c\ubb38\uc774\ub2e4.<\/p>\n<p>\uc6b0\ub9ac\ub294 OpenGL\uc5d0\uc11c \uccab\ubc88\uc9f8 \ube5b(GL_LIGHT0)\uc774 Directional \ube5b\uc774\ub77c\uace0 \uac00\uc815\ud558\uaca0\ub2e4.<\/p>\n<p>GLSL\uc740 OpenGL \uc0c1\ud0dc\uc758 \uc77c\ubd80\uc5d0 \uc811\uadfc\ud560 \uc218 \uc788\ub294\ub370, \ubc14\ub85c \ube5b\uacfc \uac19\uc740 \uc18d\uc131\uc5d0 \uc811\uadfc\ud560 \uc218 \uc788\ub2e4. GLSL\uc740 \ube5b\uc758 \uc18d\uc131\uc5d0 \ub300\ud55c C\uc5b8\uc5b4 \ud615\uc2dd\uc758 \uad6c\uc870\uccb4\ub97c \uc815\uc758\ud558\uace0 \uc788\ub294\ub370 \uac01 \ube5b\uc5d0 \ub300\ud55c \uc18d\uc131\uc744 \uc815\uc758\ud558\uae30 \uc704\ud55c \ubc30\uc5f4\ub85c \uc874\uc7ac\ud55c\ub2e4.<\/p>\n<pre><code class=\"html\">struct gl_LightSourceParameters {\r\n    vec4 ambient;\r\n    vec4 diffuse;\r\n    vec4 specular;\r\n    vec4 position;\r\n};\r\n\r\nuniform gl_LightSourceParamters gl_LightSource[gl_MaxLights];<\/code><\/pre>\n<p>\uc704\uc758 \uad6c\uc870\uccb4\uc640 \ubcc0\uc218\ub97c \uc774\uc6a9\ud574\uc11c \ubc84\ud14d\uc2a4 \uc250\uc774\ub354\uc5d0\uc11c \ube5b\uc758 \ubc29\ud5a5\uc744 \uc5bb\uc5b4\ub0bc \uc218 \uc788\ub294\ub370, \uad6c\uc870\uccb4\uc758 \ud544\ub4dc\uc911\uc5d0 position\uc744 \uc774\uc6a9\ud558\uba74 \ub41c\ub2e4. \uc5ec\uae30\uc11c \ub2e4\uc2dc \uc6b0\ub9ac\ub294 OpenGL \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \ube5b\uc758 \ubc29\ud5a5 \ubca1\ud130\uac00 \uc815\uaddc\ud654\ub418\uc5c8\ub2e4\uace0 \uac00\uc7a5\ud558\uaca0\ub2e4.<\/p>\n<p>OpenGL\uc740 \uc2a4\ud399\uc0c1 \ube5b\uc758 \uc704\uce58\uac00 \uc9c0\uc815\ub418\uba74 \uc774 \uc704\uce58 \uc88c\ud45c\uac00 \uc790\ub3d9\uc73c\ub85c \ub208 \uacf5\uac04 \uc88c\ud45c\uacc4(eye space coordinate), \uc608\ub97c \ub4e4\uc5b4\uc11c \uce74\uba54\ub77c \uc88c\ud45c\uacc4\ub85c \ubc14\ub010\ub2e4. \uc6b0\ub9ac\ub294 \uc88c\ud45c\uccb4\uacc4\uac00 \ubc14\ub00c\uc5b4\ub3c4 \ube5b\uc758 \uc704\uce58\uac00 \uc815\uaddc\ud654\ub41c \uc0c1\ud0dc\ub85c \uc720\uc9c0\ub41c\ub2e4\uace0 \uac00\uc815\ud560 \uc218 \uc788\ub2e4. \uc774 \uac00\uc815\uc740 \ubaa8\ub378\ubdf0\ud574\uc5f4\uc758 \uc88c\uce21\uc0c1\ub2e8\uc758 3&#215;3 \ubd80\ubd84\uc758 \ud589\ub82c\uc774 \uc9c1\uad50\uc77c\ub54c \uc633\ub2e4(\ub9cc\uc57d gluLookAt\ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uace0, \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \uc88c\ud45c\uacc4\uc758 \ud06c\uae30\uc870\uc815\uc744 \ud558\uc9c0 \uc54a\uc558\ub2e4\uba74 \ud655\uc2e4\ud788 \uc633\ub2e4).<\/p>\n<p>\uc6b0\ub9ac\ub294 \ubc95\uc120\ubca1\ud130\ub97c \ub208 \uacf5\uac04 \uc88c\ud45c\uacc4(\uce74\uba54\ub77c \uc88c\ud45c\uacc4)\ub85c \ubcc0\ud658\ud574\uc57c \ud558\uba70, \ube5b\uc758 \ubc29\ud5a5\ubca1\ud130\uc640 \ubc95\uc120\ubca1\ud130 \uc0ac\uc774\uc758 \uac01\uc744 \uacc4\uc0b0\ud558\uae30 \uc704\ud574 \ub0b4\uc801 \uacc4\uc0b0\uc744 \ud574\uc57c \ud55c\ub2e4.<\/p>\n<p>\ubc95\uc120\ubca1\ud130\ub97c \uce74\uba54\ub77c \uc88c\ud45c\uacc4\ub85c\u00a0 \ubcc0\ud658\ud558\uae30 \uc704\ud574\uc11c\ub294 \ubbf8\ub9ac \uc815\uc758\ub41c Uniform \u00a0\ubcc0\uc218\uc778 gl_NormalMatrix\ub97c \uc0ac\uc6a9\ud55c\ub2e4. \uc774 \ud589\ub82c \ubcc0\uc218\ub294 \ubaa8\ub378\ubdf0 \ub9e4\ud2b8\ub9ad\uc2a4\uc758 \uc88c\uc0c1\ub2e8\uc758 3&#215;3 \ubd80\ubd84\uc758 \uc5ed\ud589\ub82c\uc758 \uc804\uce58 \ud589\ub82c\uc774\ub2e4. \uc6b0\ub9ac\ub294 \ud558\ub098\uc758 \ubc84\ud14d\uc2a4 \ub9c8\ub2e4 \ubc95\uc120 \ubcc0\ud658\uc744 \uc218\ud589\ud560 \uac83\uc778\ub370 \uc544\ub798\uc758 \ucf54\ub4dc\uac00 \ubc14\ub85c \uc774 \ubcc0\ud658\uc5d0 \ub300\ud55c \ucf54\ub4dc\uc774\ub2e4.<\/p>\n<pre><code class=\"html\">varying vec3 normal;\r\n\r\nvoid main()\r\n{\r\n    normal = gl_NormalMatrix * gl_Normal;\r\n    gl_Position = ftransform();\r\n}<\/code><\/pre>\n<p>\uc544\ub798\uc758 \ucf54\ub4dc\ucc98\ub7fc \ud504\ub808\uadf8\uba3c\ud2b8 \uc250\uc774\ub354\uc5d0\uc11c \ube5b\uc758 \uc704\uce58\ub97c \uc5bb\uc5b4\uc640 \ube5b\uc758 \ubc1d\uae30\uac12\uc744 \uacc4\uc0b0\ud55c\ub2e4.<\/p>\n<pre><code class=\"html\">varying vec3 normal;\r\n\r\nvoid main()\r\n{\r\n    float intensity;\r\n    vec3 color;\r\n    vec3 n = normalize(normal);\r\n\r\n    intensity = dot(vec3(gl_LightSource[0].position, n);\r\n\r\n    if(intensity > 0.95)\r\n        color = vec4(1.0, 0.5, 0.5, 1.0);\r\n    else if(intensity &gt; 0.5)\r\n        color = vec4(0.6, 0.3, 0.3, 1.0);\r\n    else if(intensity &gt; 0.25)\r\n        color = vec4(0.4, 0.2, 0.2, 1.0);\r\n    else\r\n        color = vec4(0.2, 0.1, 0.1, 1.0);\r\n\r\n    gl_FragColor = color;\r\n}<\/code><\/pre>\n<p>\ucd5c\uc885 \uc18c\uc2a4 \ucf54\ub4dc\ub294 \ub2e4\uc74c\uc744 \ud1b5\ud574 \ub2e4\uc6b4\ub85c\ub4dc \ubc1b\uae38 \ubc14\ub780\ub2e4.<a href=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1264150041.zip\">1264150041.zip<\/a><a href=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1096160345.zip\">1096160345.zip<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>GLSL \uc608\uc81c &#8211; \ud230\uc250\uc774\ub529 \ub9c8\uc9c0\ub9c9 \uc7a5.. (4\/4) \uc6d0\ubcf8 : http:\/\/www.lighthouse3d.com\/opengl\/glsl\/index.php?toon3 \ud230\uc250\uc774\ub529\uc744 \ub05d\ub0b4\uae30 \uc804\uc5d0 \ud55c\uac00\uc9c0 \ub354 \uc0b4\ud3b4\ubcf4\uc790 : lightDir \ubcc0\uc218\ub97c \uc0ac\uc6a9\ud558\ub294 \ub300\uc2e0\uc5d0 OpenGL \ube5b\uc744 \uc0ac\uc6a9\ud55c \uac83. OpenGL\uc5d0\uc11c \ube5b\uc744 \ud558\ub098 \uc815\uc758\ud558\uace0 \uc774 \ube5b\uc758 \ubc29\ud5a5\uc744 \uc250\uc774\ub354\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 \ubc29\ubc95\uc774\ub2e4. \uc8fc\uc758: glEnable\uc744 \uc0ac\uc6a9\ud574\uc11c \ube5b\uc744 \ud65c\uc131\ud654\ud560 \ud544\uc694\uac00 \uc5c6\ub294\ub370, OpenGL\uc5d0\uc11c \uc774 \ube5b\uc744 \uc2e4\uc81c\ub85c \uc0ac\uc6a9\ud558\uc9c0\ub294 \uc54a\uc744 \uac83\uc774\uae30 \ub54c\ubb38\uc774\ub2e4. \uc6b0\ub9ac\ub294 OpenGL\uc5d0\uc11c \uccab\ubc88\uc9f8 \ube5b(GL_LIGHT0)\uc774 Directional &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=514\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;OpenGL Shader &#8211; 23&#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":[],"class_list":["post-514","post","type-post","status-publish","format-standard","hentry","category-opengl"],"_links":{"self":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/514","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=514"}],"version-history":[{"count":1,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/514\/revisions"}],"predecessor-version":[{"id":3564,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/514\/revisions\/3564"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=514"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=514"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=514"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}