游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2960|回复: 0

新渲染器Shader自动生成器原型完成,简单示例已可正常工作

[复制链接]

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2011-2-11 22:25:00 | 显示全部楼层 |阅读模式
?到底,虽然是简单的3个示例:一个画3角形,一个画立方体,一个画网格。但依然让人很烦,因为三个示例对数据的依赖不同。

画三角形需要:顶点颜色
画立方体需要:全局颜色、顶点法线
画平面网格需要:全局颜色、全局法线

所以我必须为每一个示例都编写各自的Vertex Shader与Fragment Shader,以及对应的赋值代码,十分的繁琐。

忙碌一天,基本的Shader自动生成器终于完成,三个示例完美测试通过。

明天又将是忙碌的一天。



vertex_shader:

#version 330

uniform mat4 projection_matrix;
uniform mat4 modelview_matrix;

in vec3 Vertex;
in vec3 Normal;

out vec3 fragment_normal;

void main(void)
{
fragment_normal=(modelview_matrix*vec4(Normal,0.0)).xyz;

gl_Position=projection_matrix*modelview_matrix*vec4(Vertex,1.0);
}
---------------------------------------------------------------------------------------
fragment_shader:

#version 330

in vec3 fragment_normal;

uniform vec4 color;

layout(location = 0, index = 0) out vec4 fragColor;

void main(void)
{
float intensity=max(dot(fragment_normal,vec3(0.0,0.0,1.0)),0.0);

fragColor=color*intensity;
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-11-23 16:19

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表