{"id":1757,"date":"2014-08-04T23:36:03","date_gmt":"2014-08-04T14:36:03","guid":{"rendered":"http:\/\/mirror.boy.jp\/?p=1757"},"modified":"2014-08-05T22:59:52","modified_gmt":"2014-08-05T13:59:52","slug":"glsl1-2%e3%81%a7%e3%83%97%e3%83%ad%e3%82%b7%e3%83%bc%e3%82%b8%e3%83%a3%e3%83%ab%e3%83%86%e3%82%af%e3%82%b9%e3%83%81%e3%83%a3%e7%94%9f%e6%88%90","status":"publish","type":"post","link":"https:\/\/mirror.boy.jp\/?p=1757","title":{"rendered":"jit.gl.shader \/ GLSL \u3067\u30d7\u30ed\u30b7\u30fc\u30b8\u30e3\u30eb\u30c6\u30af\u30b9\u30c1\u30e3\uff08\u30d3\u30fc\u30c1\u30dc\u30fc\u30eb\uff09\u751f\u6210"},"content":{"rendered":"<p><a onclick=\"javascript:pageTracker._trackPageview('\/downloads\/wp-content\/uploads\/2014\/08\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2014-08-04-23.30.07.jpeg');\"  href=\"http:\/\/mirror.boy.jp\/wp-content\/uploads\/2014\/08\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2014-08-04-23.30.07.jpeg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mirror.boy.jp\/wp-content\/uploads\/2014\/08\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2014-08-04-23.30.07-1024x576.jpeg\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2014-08-04 23.30.07\" width=\"1024\" height=\"576\" class=\"alignnone size-large wp-image-1758\" srcset=\"https:\/\/mirror.boy.jp\/wp-content\/uploads\/2014\/08\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2014-08-04-23.30.07-1024x576.jpeg 1024w, https:\/\/mirror.boy.jp\/wp-content\/uploads\/2014\/08\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2014-08-04-23.30.07-400x225.jpeg 400w, https:\/\/mirror.boy.jp\/wp-content\/uploads\/2014\/08\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2014-08-04-23.30.07-304x171.jpeg 304w, https:\/\/mirror.boy.jp\/wp-content\/uploads\/2014\/08\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2014-08-04-23.30.07.jpeg 1280w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<h2>\u590f\u3060\u3057\u30d3\u30fc\u30c1\u30dc\u30fc\u30eb\u3067\u590f\u611f\u3092\u6f14\u51fa<\/h2>\n<p>\u5618\u3067\u3059\u3002\u30d7\u30ed\u30b0\u30e9\u30e0\u3060\u3051\u3067\u30c6\u30af\u30b9\u30c1\u30e3\u751f\u6210\u3059\u308b\u624b\u6cd5\u3092\u30d7\u30ed\u30b7\u30fc\u30b8\u30e3\u30eb\u30c6\u30af\u30b9\u30c1\u30e3\u3068\u547c\u3076\u305d\u3046\u3067\u3059\u304c\u3001<a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/www.amazon.co.jp\/gp\/product\/0321498828?ie=UTF8&#038;camp=1207&#038;creative=8411&#038;creativeASIN=0321498828&#038;linkCode=shr&#038;tag=mrr05-22&#038;qid=1407162710&#038;sr=8-3&#038;keywords=opengl+superbible');\"  href=\"http:\/\/www.amazon.co.jp\/gp\/product\/0321498828?ie=UTF8&#038;camp=1207&#038;creative=8411&#038;creativeASIN=0321498828&#038;linkCode=shr&#038;tag=mrr05-22&#038;qid=1407162710&#038;sr=8-3&#038;keywords=opengl+superbible\">OpenGL Superbible<\/a>\u306b\u30d3\u30fc\u30c1\u30dc\u30fc\u30eb\u306e\u30b5\u30f3\u30d7\u30eb\u304c\u3042\u3063\u305f\u306e\u3067\u5b9f\u88c5\u3057\u3066\u307f\u307e\u3057\u305f\u3002\u6cd5\u7dda\u30d9\u30af\u30c8\u30eb\u3084Vertex\u306e\u4f4d\u7f6e\u3092\u5229\u7528\u3057\u3066\u8272\u3092\u6c7a\u3081\u3066\u307e\u3059\u306d\u3002\u307e\u3060\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u98f2\u307f\u8fbc\u3081\u3066\u306a\u3044\u306e\u3067\u3001\u30dd\u30b1\u30e2\u30f3\u306e\u30cf\u30a4\u30d1\u30fc\u30dc\u30fc\u30eb\u3092\u7df4\u7fd2\u3067\u4f5c\u3063\u3066\u307f\u3088\u3046\u304b\u3002<\/p>\n<h2>JXS \/ GLSL\u30b3\u30fc\u30c9<\/h2>\n<p>[html]<br \/>\n&lt;jittershader name=&quot;mrr-3colored-lights&quot;&gt;<br \/>\n\t&lt;description&gt;<br \/>\n\t&lt;\/description&gt;<\/p>\n<p>\t&lt;language name=&quot;glsl&quot; version=&quot;1.2&quot;&gt;<br \/>\n\t\t&lt;program name=&quot;vp&quot; type=&quot;vertex&quot;&gt;<br \/>\n&lt;![CDATA[<\/p>\n<p>#version 120 <\/p>\n<p>varying vec3 N,L,V;<\/p>\n<p>void main(void)<br \/>\n{<br \/>\n\tvec3 lightPos = gl_LightSource[0].position.xyz;<\/p>\n<p>\tgl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;\t<\/p>\n<p>\t\/\/map object-space position onto unit sphere<br \/>\n\tV =gl_Vertex.xyz;<\/p>\n<p>\t\/\/eye-space normal<br \/>\n\tN = gl_NormalMatrix * gl_Normal;<\/p>\n<p>\t\/\/eye-space light vector<br \/>\n\tvec4 Veye = gl_ModelViewMatrix * gl_Vertex;<br \/>\n\tL =lightPos &#8211; Veye.xyz;<br \/>\n}<\/p>\n<p>]]&gt;<br \/>\n\t\t&lt;\/program&gt;<br \/>\n\t\t&lt;program name=&quot;fp&quot; type=&quot;fragment&quot;&gt;<br \/>\n&lt;![CDATA[<\/p>\n<p>#version 120<\/p>\n<p>varying vec3 V;<br \/>\nvarying vec3 N;<br \/>\nvarying vec3 L;<\/p>\n<p>const vec3 myRed \t= vec3(1,0,0);<br \/>\nconst vec3 myYellow = vec3(1,1,0);<br \/>\nconst vec3 myGreen \t= vec3(0,1,0);<br \/>\nconst vec3 myBlue \t= vec3(0,0,1);<br \/>\nconst vec3 myWhite \t= vec3(1,1,1);<br \/>\nconst vec3 myBlack \t= vec3(0,0,0);<\/p>\n<p>const vec3 northHalfSpace = vec3(0,0,1);<br \/>\nconst vec3 northeastHalfSpace = vec3(0.707,0,0.707);<br \/>\nconst vec3 northwestHalfSpace = vec3(-0.707,0,0.707);<br \/>\nconst float capSize = 0.03;<br \/>\nconst float smoothEdgeTol = 0.0005;<br \/>\nconst float ambientLighting = 0.1;<br \/>\nconst float specularExp = 10.0;<br \/>\nconst float specularIntensity = 0.5;<\/p>\n<p>void main()<br \/>\n{<br \/>\n\tvec3 NN = normalize(N);<br \/>\n\tvec3 NL = normalize(L); \/\/for ambient;<br \/>\n\tvec3 NH = normalize(NL +vec3(0,0,1)); \/\/for specular<br \/>\n\tvec3 NV = normalize(V);<\/p>\n<p>\tfloat mirror = (NV.x &gt;= 0) ? 1. : -1.;<br \/>\n\tNV.xz *= mirror; \/\/<\/p>\n<p>\tvec4 distance;<br \/>\n\tdistance.x = dot(NV, northHalfSpace);<br \/>\n\tdistance.y = dot(NV, northeastHalfSpace);<br \/>\n\tdistance.z = dot(NV, northwestHalfSpace);<\/p>\n<p>\tdistance.w = abs(NV.y) &#8211; 1.0 + capSize;<br \/>\n\tdistance = smoothstep(vec4(0.), vec4(smoothEdgeTol), distance);<\/p>\n<p>\tvec3 surfColor = mix(myBlack,myRed,distance.x);<br \/>\n\tsurfColor += mix(myBlack,myGreen,distance.y * (1.0 &#8211; distance.z));<br \/>\n\tsurfColor += mix(surfColor, myBlue, 1.0 &#8211; distance.y);<\/p>\n<p>\t\/\/top bottom<br \/>\n\tsurfColor = mix(surfColor, myWhite, distance.w);<\/p>\n<p>\t\/\/ambient<br \/>\n\tsurfColor *= (ambientLighting + vec3(max(0,dot(NN,NL))));<br \/>\n\t\/\/specluar<br \/>\n\tsurfColor += (specularIntensity *vec3(pow(max(0,dot(NN,NH)),specularExp)));<\/p>\n<p>\tgl_FragColor = vec4(surfColor,1);<br \/>\n}<br \/>\n]]&gt;<br \/>\n\t\t&lt;\/program&gt;<br \/>\n\t&lt;\/language&gt;<br \/>\n&lt;\/jittershader&gt;<br \/>\n[\/html]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u590f\u3060\u3057\u30d3\u30fc\u30c1\u30dc\u30fc\u30eb\u3067\u590f\u611f\u3092\u6f14\u51fa \u5618\u3067\u3059\u3002\u30d7\u30ed\u30b0\u30e9\u30e0\u3060\u3051\u3067\u30c6\u30af\u30b9\u30c1\u30e3\u751f\u6210\u3059\u308b\u624b\u6cd5\u3092\u30d7\u30ed\u30b7\u30fc\u30b8\u30e3\u30eb\u30c6\u30af\u30b9\u30c1\u30e3\u3068\u547c\u3076\u305d\u3046\u3067\u3059\u304c\u3001OpenGL Superbible\u306b\u30d3\u30fc\u30c1\u30dc\u30fc\u30eb\u306e\u30b5\u30f3\u30d7\u30eb\u304c\u3042\u3063\u305f\u306e\u3067\u5b9f\u88c5\u3057\u3066\u307f\u307e\u3057\u305f\u3002\u6cd5\u7dda\u30d9\u30af\u30c8 &hellip; <a href=\"https:\/\/mirror.boy.jp\/?p=1757\" class=\"more-link\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"screen-reader-text\">jit.gl.shader \/ GLSL \u3067\u30d7\u30ed\u30b7\u30fc\u30b8\u30e3\u30eb\u30c6\u30af\u30b9\u30c1\u30e3\uff08\u30d3\u30fc\u30c1\u30dc\u30fc\u30eb\uff09\u751f\u6210<\/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":[8,79,78,45,26],"tags":[],"_links":{"self":[{"href":"https:\/\/mirror.boy.jp\/index.php?rest_route=\/wp\/v2\/posts\/1757"}],"collection":[{"href":"https:\/\/mirror.boy.jp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mirror.boy.jp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mirror.boy.jp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mirror.boy.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1757"}],"version-history":[{"count":7,"href":"https:\/\/mirror.boy.jp\/index.php?rest_route=\/wp\/v2\/posts\/1757\/revisions"}],"predecessor-version":[{"id":1801,"href":"https:\/\/mirror.boy.jp\/index.php?rest_route=\/wp\/v2\/posts\/1757\/revisions\/1801"}],"wp:attachment":[{"href":"https:\/\/mirror.boy.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1757"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mirror.boy.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1757"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mirror.boy.jp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1757"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}