Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
95bb4c04
Commit
95bb4c04
authored
Aug 12, 2009
by
Henri Verbeet
Committed by
Alexandre Julliard
Aug 12, 2009
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wined3d: Make the "bumpmat" shader_reg_maps member a bitmap.
parent
3d718d64
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
16 additions
and
13 deletions
+16
-13
arb_program_shader.c
dlls/wined3d/arb_program_shader.c
+6
-4
baseshader.c
dlls/wined3d/baseshader.c
+2
-2
glsl_shader.c
dlls/wined3d/glsl_shader.c
+3
-4
state.c
dlls/wined3d/state.c
+3
-2
wined3d_private.h
dlls/wined3d/wined3d_private.h
+2
-1
No files found.
dlls/wined3d/arb_program_shader.c
View file @
95bb4c04
...
...
@@ -3360,8 +3360,9 @@ static GLuint shader_arb_generate_pshader(IWineD3DPixelShaderImpl *This, struct
next_local
=
shader_generate_arb_declarations
(
(
IWineD3DBaseShader
*
)
This
,
reg_maps
,
buffer
,
&
GLINFO_LOCATION
,
lconst_map
,
NULL
,
&
priv_ctx
);
for
(
i
=
0
;
i
<
(
sizeof
(
reg_maps
->
bumpmat
)
/
sizeof
(
reg_maps
->
bumpmat
[
0
]));
i
++
)
{
if
(
!
reg_maps
->
bumpmat
[
i
])
continue
;
for
(
i
=
0
,
map
=
reg_maps
->
bumpmat
;
map
;
map
>>=
1
,
++
i
)
{
if
(
!
(
map
&
1
))
continue
;
cur
=
compiled
->
numbumpenvmatconsts
;
compiled
->
bumpenvmatconst
[
cur
].
const_num
=
WINED3D_CONST_NUM_UNUSED
;
...
...
@@ -5224,8 +5225,9 @@ static void set_bumpmat_arbfp(DWORD state, IWineD3DStateBlockImpl *stateblock, s
if
(
use_ps
(
stateblock
))
{
if
(
stage
!=
0
&&
((
IWineD3DPixelShaderImpl
*
)
stateblock
->
pixelShader
)
->
baseShader
.
reg_maps
.
bumpmat
[
stage
])
{
if
(
stage
!=
0
&&
(((
IWineD3DPixelShaderImpl
*
)
stateblock
->
pixelShader
)
->
baseShader
.
reg_maps
.
bumpmat
&
(
1
<<
stage
)))
{
/* The pixel shader has to know the bump env matrix. Do a constants update if it isn't scheduled
* anyway
*/
...
...
dlls/wined3d/baseshader.c
View file @
95bb4c04
...
...
@@ -686,7 +686,7 @@ HRESULT shader_get_registers_used(IWineD3DBaseShader *iface, const struct wined3
if
(
ins
.
handler_idx
==
WINED3DSIH_TEXBEM
||
ins
.
handler_idx
==
WINED3DSIH_TEXBEML
)
{
reg_maps
->
bumpmat
[
sampler_code
]
=
TRUE
;
reg_maps
->
bumpmat
|=
1
<<
dst_param
.
reg
.
idx
;
if
(
ins
.
handler_idx
==
WINED3DSIH_TEXBEML
)
{
reg_maps
->
luminanceparams
[
sampler_code
]
=
TRUE
;
...
...
@@ -695,7 +695,7 @@ HRESULT shader_get_registers_used(IWineD3DBaseShader *iface, const struct wined3
}
else
if
(
ins
.
handler_idx
==
WINED3DSIH_BEM
)
{
reg_maps
->
bumpmat
[
dst_param
.
reg
.
idx
]
=
TRUE
;
reg_maps
->
bumpmat
|=
1
<<
dst_param
.
reg
.
idx
;
}
}
...
...
dlls/wined3d/glsl_shader.c
View file @
95bb4c04
...
...
@@ -899,10 +899,9 @@ static void shader_generate_glsl_declarations(const struct wined3d_context *cont
shader_addline
(
buffer
,
"void order_ps_input();
\n
"
);
}
}
else
{
for
(
i
=
0
;
i
<
(
sizeof
(
reg_maps
->
bumpmat
)
/
sizeof
(
reg_maps
->
bumpmat
[
0
]));
i
++
)
{
if
(
!
reg_maps
->
bumpmat
[
i
])
{
continue
;
}
for
(
i
=
0
,
map
=
reg_maps
->
bumpmat
;
map
;
map
>>=
1
,
++
i
)
{
if
(
!
(
map
&
1
))
continue
;
shader_addline
(
buffer
,
"uniform mat2 bumpenvmat%d;
\n
"
,
i
);
...
...
dlls/wined3d/state.c
View file @
95bb4c04
...
...
@@ -3529,8 +3529,9 @@ void apply_pixelshader(DWORD state, IWineD3DStateBlockImpl *stateblock, struct w
static
void
shader_bumpenvmat
(
DWORD
state
,
IWineD3DStateBlockImpl
*
stateblock
,
struct
wined3d_context
*
context
)
{
DWORD
stage
=
(
state
-
STATE_TEXTURESTAGE
(
0
,
0
))
/
(
WINED3D_HIGHEST_TEXTURE_STATE
+
1
);
if
(
stateblock
->
pixelShader
&&
stage
!=
0
&&
((
IWineD3DPixelShaderImpl
*
)
stateblock
->
pixelShader
)
->
baseShader
.
reg_maps
.
bumpmat
[
stage
])
{
if
(
stateblock
->
pixelShader
&&
stage
!=
0
&&
(((
IWineD3DPixelShaderImpl
*
)
stateblock
->
pixelShader
)
->
baseShader
.
reg_maps
.
bumpmat
&
(
1
<<
stage
)))
{
/* The pixel shader has to know the bump env matrix. Do a constants update if it isn't scheduled
* anyway
*/
...
...
dlls/wined3d/wined3d_private.h
View file @
95bb4c04
...
...
@@ -642,7 +642,8 @@ typedef struct shader_reg_maps
WORD
local_bool_consts
;
/* MAX_CONST_B, 16 */
WINED3DSAMPLER_TEXTURE_TYPE
sampler_type
[
max
(
MAX_FRAGMENT_SAMPLERS
,
MAX_VERTEX_SAMPLERS
)];
BOOL
bumpmat
[
MAX_TEXTURES
],
luminanceparams
[
MAX_TEXTURES
];
BYTE
bumpmat
;
/* MAX_TEXTURES, 8 */
BOOL
luminanceparams
[
MAX_TEXTURES
];
WORD
usesnrm
:
1
;
WORD
vpos
:
1
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment