{"id":592,"date":"2007-10-12T11:08:20","date_gmt":"2007-10-12T11:08:20","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=592"},"modified":"2025-02-24T12:24:40","modified_gmt":"2025-02-24T03:24:40","slug":"opengl-shader-31","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=592","title":{"rendered":"OpenGL Shader &#8211; 31"},"content":{"rendered":"<div align=\"center\"><strong>GLSL \uc608\uc81c : Texture(Combine Texture + Fragment) &#8211; 2\/3<\/strong><\/div>\n<p>\uc6d0\ubb38 : <a href=\"http:\/\/www.lighthouse3d.com\/opengl\/glsl\/index.php?dirlightpix\">http:\/\/www.lighthouse3d.com\/opengl\/glsl\/index.php?dirlightpix<\/a><\/p>\n<p>OpenGL\uc740 \ub2e4\uc591\ud55c \ubc29\ubc95\uc73c\ub85c \ud14d\uc2a4\uccd0 \uc0c9\uc0c1\uacfc \ud504\ub808\uadf8\uba3c\ud2b8 \uc0dd\uc0c1\uc744 \ud63c\ud569\ud558\ub294 \ubc29\ubc95\uc744 \uc81c\uacf5\ud55c\ub2e4.\u00a0 \ubc14\ub85c \uc544\ub798\uc758 \ub0b4\uc6a9\uc740 RGBA \ubaa8\ub4dc\ub97c \uc704\ud55c \uba87\uac00\uc9c0 \ubaa8\ub4dc\uc774\ub2e4.<\/p>\n<pre><code class=\"html\">GL_REPLACE      C = Ct                           A = At \r\nGL_MODULATE     C = Ct*Cf                        A = At*Af \r\nGL_DECAL        C = Cf * (1 - At) + Ct * At      A = Af<\/code><\/pre>\n<p>Ct\uc640 At\ub294 \ud14d\uc2a4\uccd0\uc758 \uc0c9\uc0c1\uacfc \uc54c\ud30c\uac12\uc774\uace0, Cf\uc640 Af\ub294 \ud504\ub808\uadf8\uba3c\ud2b8\uc758 \uc0c9\uc0c1\uacfc \uc54c\ud30c\uac12\uc774\uba70 C\uc640 A\ub294 \ucd5c\uc885\uc801\uc778 \uc0c9\uc0c1\uacfc \uc54c\ud30c\uac12\uc774\ub2e4.<\/p>\n<p>\uc774\uc804 \uc139\uc158\uc5d0\uc11c \uc81c\uacf5\ub418\uc5c8\ub358 \uc608\uc81c\ub294 GL_REPLACE\uc758 \uacbd\uc6b0\uc758 \uc608\uc600\ub2e4. \uc5ec\uae30\uc11c\ub294 \uc815\uc721\uba74\uccb4\uc5d0 GL_MODULATE\uc758 \ub0b4\uc6a9\uc744 \uad6c\ud604\ud574\ubcf4\uc790. \uc250\uc774\ub354\ub4e4\uc740 \ud558\uc580\uc0c9\uc758 Diffuse Directional Light\ub97c \uac00\uc9c0\uace0 Diffuse\uc640 Ambient \uc694\uc18c\ub9cc\uc744 \uacc4\uc0b0\ud55c\ub2e4. \uc7ac\uc9c8\uc5d0 \ub300\ud55c \uc644\uc804\ud55c \uc815\uc758\ub294 Lighting(\uad11\uc6d0) \uc139\uc158\uc744 \uc0b4\ud3b4\ubcf4\uae38 \ubc14\ub780\ub2e4.<\/p>\n<p>\ube5b\uc744 \uc0ac\uc6a9\ud558\uae30 \ub54c\ubb38\uc5d0, \uadf8\ub798\uc11c \ubc95\uc120\ubca1\ud130\uc5d0 \ub300\ud574, \u00a0\ubc84\ud14d\uc2a4 \uc250\uc774\ub354\ub294 \uba87\uac00\uc9c0 \uc791\uc5c5\uc744 \ud574\uc57c\ud55c\ub2e4. \uc8fc\ub85c \ubc95\uc120\ubca1\ud130\ub97c \uce74\uba54\ub77c \uc88c\ud45c\uacc4\ub85c \ubcc0\ud658\ud558\uace0 \uc815\uaddc\ud654\ud558\ub294 \uc77c\uc774\uba70 \ube5b\uc758 \ubc29\ud5a5\uc5d0 \ub300\ud574\uc11c\ub3c4 \uc815\uaddc\ud654\ub97c \ud574\uc57c\ud55c\ub2e4. (\ube5b\uc758 \ubc29\ud5a5\uc740 \uc774\ubbf8 OpenGL\uc5d0 \uc758\ud574\uc11c \uce74\uba54\ub77c \uc88c\ud45c\uacc4\ub85c \ubcc0\ud658\ub418\uc5b4\uc84c\ub2e4). \uc9c0\uae08 \ub2e8\uacc4\uc5d0\uc11c \ubc84\ud14d\uc2a4 \uc250\uc774\ub354\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre><code class=\"html\">varying vec3 lightDir,normal;\r\n\t\r\nvoid main()\r\n{\r\n    normal = normalize(gl_NormalMatrix * gl_Normal);\r\n    lightDir = normalize(vec3(gl_LightSource[0].position));\r\n\t\t\r\n    gl_TexCoord[0] = gl_MultiTexCoord0;\r\n    gl_Position = ftransform();\r\n}<\/code><\/pre>\n<p>\ud504\ub808\uadf8\uba3c\ud2b8 \uc250\uc774\ub354\uc5d0\uc11c, \ud504\ub808\uadf8\uba3c\ud2b8\uc758 \uc0c9\uc0c1\uacfc \uc54c\ud30c\uac12\uc740 \uac01\uac01 cf\uc640 af\uc5d0 \uacc4\uc0b0\ub418\uc5b4\uc9c4\ub2e4. \uc704\uc5d0\uc11c \uc5b8\uae09\ud55c GL_MODULATE \uacf5\uc2dd\uc744 \uacc4\uc0b0\ud558\ub294 \ub098\uba38\uc9c0 \uc250\uc774\ub354 \ucf54\ub4dc\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre><code class=\"html\">varying vec3 lightDir,normal;\r\nuniform sampler2D tex;\r\n\t\r\nvoid main()\r\n{\r\n    vec3 ct,cf;\r\n    vec4 texel;\r\n    float intensity,at,af;\r\n\t\t\r\n    intensity = max(dot(lightDir,normalize(normal)),0.0);\r\n\t\t\r\n    cf = intensity * (gl_FrontMaterial.diffuse).rgb + \r\n              gl_FrontMaterial.ambient.rgb;\r\n    af = gl_FrontMaterial.diffuse.a;\r\n\t\t\r\n    texel = texture2D(tex,gl_TexCoord[0].st);\r\n    ct = texel.rgb;\r\n    at = texel.a;\r\n\t\t\r\n    gl_FragColor = vec4(ct * cf, at * af);\t\r\n}<\/code><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1245596380.jpg\" alt=\"\" width=\"251\" height=\"144\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>GLSL \uc608\uc81c : Texture(Combine Texture + Fragment) &#8211; 2\/3 \uc6d0\ubb38 : http:\/\/www.lighthouse3d.com\/opengl\/glsl\/index.php?dirlightpix OpenGL\uc740 \ub2e4\uc591\ud55c \ubc29\ubc95\uc73c\ub85c \ud14d\uc2a4\uccd0 \uc0c9\uc0c1\uacfc \ud504\ub808\uadf8\uba3c\ud2b8 \uc0dd\uc0c1\uc744 \ud63c\ud569\ud558\ub294 \ubc29\ubc95\uc744 \uc81c\uacf5\ud55c\ub2e4.\u00a0 \ubc14\ub85c \uc544\ub798\uc758 \ub0b4\uc6a9\uc740 RGBA \ubaa8\ub4dc\ub97c \uc704\ud55c \uba87\uac00\uc9c0 \ubaa8\ub4dc\uc774\ub2e4. GL_REPLACE C = Ct A = At GL_MODULATE C = Ct*Cf A = At*Af GL_DECAL C = Cf * (1 &#8211; At) + Ct * &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=592\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;OpenGL Shader &#8211; 31&#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,153],"tags":[3,25],"class_list":["post-592","post","type-post","status-publish","format-standard","hentry","category-opengl","category-shader","tag-opengl","tag-shader"],"_links":{"self":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/592","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=592"}],"version-history":[{"count":1,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/592\/revisions"}],"predecessor-version":[{"id":3551,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/592\/revisions\/3551"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=592"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=592"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=592"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}