Toon shader 1.0.2发布
| 11年11月8日|3986关注
包含35节视频教程
关注16.6万次
Houdini是一款功能强大的3D合成软件,曾经效力于300部以上经典电影的特效制作,比如烟火,水等复杂的后期合成都少不了它。
toon shader 1.0.2发布。这是3dsmax中一个简单的红椿木投影仪。
文件大小: 31 kb
文件类型:& 免费
3dsmax 版本:&& 7.x, 8.x, 9.x
教程下载:
更多详情请登录:
资源说明图文教程无法下载,只能观看图片和文字。
版权规则本站图文皆来自互联网共享资源,如涉及到版权请查看。本平台提供图文仅可用于个人学习,如用于商业请购买正版。您必须遵守的
朱峰社区 版权所有 闽ICP备号
ZhuFeng Community All Rights Reserved
朱峰社区编辑推荐
为了绘制身上浮雕的图案,我们先来学习如何绘画图…
1.复制文本发给您的QQ好友或群、微信等;好友点击链接以后,转发就成功了。
2.如朋友点击您的链接,您需要需刷新一下才行;同一个好友仅能点击一次。1967人阅读
OpenGL + ShaderLanguage(19)
CPU端代码设置:
// This function does any needed initialization on the rendering
// context.
void SetupRC(void)
// Background
glClearColor(0.025f, 0.25f, 0.25f, 1.0f );
glEnable(GL_DEPTH_TEST);
shaderManager.InitializeStockShaders();
viewFrame.MoveForward(4.0f);
// Make the torus
gltMakeTorus(torusBatch, .80f, 0.25f, 52, 26);
toonShader = gltLoadShaderPairWithAttributes(&ToonShader.vp&, &ToonShader.fp&, 2, GLT_ATTRIBUTE_VERTEX, &vVertex&,
GLT_ATTRIBUTE_NORMAL, &vNormal&);
locLight = glGetUniformLocation(toonShader, &vLightPosition&);
locMVP = glGetUniformLocation(toonShader, &mvpMatrix&);
= glGetUniformLocation(toonShader, &mvMatrix&);
= glGetUniformLocation(toonShader, &normalMatrix&);
locColorTable = glGetUniformLocation(toonShader, &colorTable&);
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_1D, texture);
GLubyte textureData[4][3] = { 32,
128, 0, 0,
255, 0, 0};
glTexImage1D(GL_TEXTURE_1D, 0, GL_RGB, 4, 0, GL_RGB, GL_UNSIGNED_BYTE, textureData);
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
顶点着色器:
// Cell lighting Shader
// Vertex Shader
// Richard S. Wright Jr.
// OpenGL SuperBible
#version 130
// Incoming per vertex... position and normal
in vec4 vV
in vec3 vN
smooth out float textureC
uniform vec3 vLightP
uniform mat4 mvpM
uniform mat4 mvM
uniform mat3 normalM
void main(void)
// Get surface normal in eye coordinates
vec3 vEyeNormal = normalMatrix * vN
// Get vertex position in eye coordinates
vec4 vPosition4 = mvMatrix * vV
vec3 vPosition3 = vPosition4.xyz / vPosition4.w;
// Get vector to light source
vec3 vLightDir = normalize(vLightPosition - vPosition3);
// Dot product gives us diffuse intensity
textureCoordinate = max(0.0, dot(vEyeNormal, vLightDir)); // cos(theta), 值越大说明夹角越小, 对应的颜色越亮
// Don't forget to transform the geometry!
gl_Position = mvpMatrix * vV
片断着色器:
// Cell lighting Shader
// Fragment Shader
// Richard S. Wright Jr.
// OpenGL SuperBible
#version 130
uniform sampler1D colorT
out vec4 vFragC
smooth in float textureC
void main(void)
vFragColor = texture(colorTable, textureCoordinate);
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:117742次
积分:1681
积分:1681
排名:千里之外
原创:54篇
转载:17篇
评论:18条
(1)(1)(5)(1)(6)(1)(1)(1)(3)(6)(1)(6)(1)(1)(1)(1)(1)(2)(1)(5)(9)(3)(1)(1)(11)